[Powered by Google Translate] DAVID J. Malan: pob hawl, mae hyn yn CS50, a dyma'r ddechrau'r wythnos dau. Diolch yn fawr. Gadewch i ni ddechrau yma gyda galwad ffôn. Rwy'n ar fin i ffonio 617-BUG-CS50. CS50: Mae hwn yn CS50. Er Boy Shuttle, pwyswch 1. I ddechrau eto, pwyswch 9. DAVID J. Malan: Felly efe a ddywedodd ar gyfer Boy Shuttle i'r wasg 1. Felly, rydym yn mynd i'r wasg 1. CS50: Beth yw eich tarddiad? Am cwad, y wasg 1. Mather, y wasg 2. Boylston, y wasg 3. Lamont, y wasg 4. Mem Hall, y wasg 5. I ddechrau eto, pwyswch 0. DAVID J. Malan: Byddwn yn pwyso 1 am quad. CS50: gwennol nesaf yn gadael y funud 1:10 PM, a yna ar 1:20, 1:30 PM, 13:40. Mae hyn yn CS50. DAVID J. Malan: Felly mae hyn yn CS50 llais. Ac mae'n enghraifft o'r mathau o brosiectau terfynol, ar gyfer enghraifft, gallwch cnoi i ffwrdd tuag at ddiwedd y semester. Er enghraifft, bod shuttleboy.cs50.net yn bodoli - mewn gwirionedd prosiect sy'n tro cyntaf i mi ysgrifennu ar ôl cymryd CS51 yn ôl pan oeddwn yn fyfyriwr israddedig. Ac mae'r ysbrydoliaeth yma oedd bryd hynny, y cyfan oedd ganddyn nhw ddim y argraffu amserlenni bws gwennol, ac nid oedd unrhyw syniad o edrych pethau fyny ar-lein. Ac felly yr wyf fath o golomen mewn un penwythnos, arllwys drwy argraffu amserlen, a borthi i raglen gyfrifiadurol. Ar y pryd, y rhaglen gyfrifiadurol yn digwydd i gael ei ysgrifennu yn C. A ydych mewn gwirionedd yn rhedeg iddo gan Boy Shuttle deipio mewn amrantu ysgogi fel yr ydym wedi bod yn ei wneud hyd yn hyn. Ond dros y blynyddoedd, mae wedi esblygu i mewn amrantiad negeseuon bot. Mae'n esblygu yn fwy diweddar yn y wefan hon, i fod yn SMS-seiliedig ar offeryn, yn ogystal ag i mewn i'r offeryn llais-seiliedig. Ac mae hyn yn i awgrym ar y mathau o bethau y gallwch ei wneud i chi eich hun erbyn diwedd semester. Er enghraifft, yno, y fersiwn SMS o Boy Shuttle yn digwydd i weithredu fel a ganlyn. Os, ar eich ffôn cell, rydych yn anfon neges destun i 41411 a wedyn yn anfon y sboy symbol arbennig, ar gyfer Boy Shuttle, ddilyn gan A a B, lle mae A yn tarddiad a B yn cyrchfan - er enghraifft, Boylston Space Quad - beth ddylech ei gael yn ôl o fewn ychydig eiliadau yn destun neges gan Boy Shuttle yn dweud wrthych pryd yn union y gwennol ychydig nesaf, o'r pwynt A o fynd i'r pwynt B. Ac mae hyn yn enghraifft fwy cyffredinol o'r hyn a elwir yn defnyddio API. Felly, er enghraifft, mae hyn yma yn unig shuttleboy.cs50.net, y gwirioneddol ar y we ymgnawdoliad o hyn. Ond mae'r data sy'n tanlinellu'r apps hwn ac eraill sy'n CS50 wedi datblygu yn cael eu hamlygu i gyd i bawb yma yn y ffurflen o APIs, rhyngwynebau rhaglennu cais. A dim ond ffordd ffansi o ddweud bod pobl yn hoffi ydym ni ar y Rhyngrwyd ac eraill wedi treulio peth amser yn creu meddalwedd y gallwch eu defnyddio er mwyn i dynnu data oddi wrthym ni a yna adeiladu eich ceisiadau eu hunain ar ben y set data. Felly, er enghraifft, y dudalen hon Boy Shuttle API yma, sy'n digwydd bod yn y llawlyfr CS50, yn y bôn dogfennau sut y gallwch fynd ati i ofyn CS50 gweinyddion ar gyfer data. Er enghraifft, os ydych chi'n gyfarwydd â CSV ffeil, coma gwahanu gwerthoedd, mae'r rhain yn unig fath o gyflym ac yn frwnt Excel tebyg i ffeiliau. Felly, gallwch ofyn Boy Shuttle ar gyfer yr holl ddata ar bob un o'r tai a'u cyfesurynnau GPS, a byddwch yn cael yn ôl, yn ei hanfod, taenlen fel hynny y mae gallwch wedyn ddarllen i mewn i raglen eich hun ac yna cynhyrchu canlyniadau, fel Boy Shuttle ei hun digwydd i fod yn ei wneud. I'r rhai mwy cyfarwydd, yn fwy modern sylwadau data cynnwys JSON, Nodiant Gwrthrych JavaScript. Bydd rhywbeth yn dod yn ôl i chi tuag at ddiwedd y semester. Ond unwaith eto, mae hyn yn un o nifer o APIs CS50 ei hun. A'r peth cyffrous yn awr, y dyddiau hyn, Facebook a Twitter a Google a 'n bert lawer pob gwefan boblogaidd y tu allan mae wedi rhyw fath o API, sy'n golygu os ydych yn darllen y dogfennau ar eu gwefan, i chi gofrestru ar gyfer cyfrif, yna gallwch ddechrau ysgrifennu meddalwedd ar ben beth bynnag offer neu ddata y cwmni yno yn eu darparu. Ac felly un o'n cymrodyr addysgu eu hunain cwpl o flynyddoedd yn ôl Ysgrifennodd fersiwn Mac o hyn. Felly, ar y ddolen sy'n dwyn y teitl Mac yma ar y chwith uchaf, gallwch mewn gwirionedd lawrlwytho widget OS Mac sy'n rhedeg ar Mac yn berchen ar eich i wneud y un math o bethau. Felly mae'n cyfan yn ymwneud â adeiladu ar ben setiau data fel y rhain. Ond mwy am hynny tuag at ddiwedd y semester. Felly, gadewch i ddeifio yn gyflym go iawn i nam, dim ond i fath o gael pethau cynhesu i fyny heddiw, ac yn meddwl yn ôl ar rai o'r pethau yr ydym yn edrych ar yr wythnos diwethaf. Yn arbennig, gadewch i mi fynd yn ei flaen a thynnu i fyny, yn dweud, yr enghraifft hon yma. Buggy1.c, mae hwn ar gael ar wefan y cwrs os hoffech yn hoffi lawrlwytho a brocio o gwmpas eich hun. Ond gadewch i chwyddo i mewn yma yn y rhaglen hon weddol fyr, a dim ond yn ailadrodd super-cyflym o rai o'r blociau adeiladu sylfaenol sy'n ydym yn wir yn mynd i dim ond dechrau cymryd yn ganiataol. Felly, y pethau glas, yn llinellau 1 i 9, yn unig cwestiynau pêl feddal. Felly, mae'r rhain yn dim ond sylwadau. Nid oes ganddynt ystyr swyddogaethol. Ond maen nhw'n sylwadau yn yr ystyr eu bod yn nodi bod Yr wyf fi, y dynol, a wnaed i mi fy hun fel bod mewn darlithoedd ac ar ôl ddarlith, gallaf gofio mewn gwirionedd beth mae hyn yn rhaglen gwneud heb orfod darllen drwyddo fesul llinell a ail-greu hanes yn fy meddwl. Ar ben hynny, os wyf yn llaw y rhaglen hon i rywun arall, fel chi, mae'n llawer cliriach i chi, oherwydd o sylwadau fel hyn, hyn y mae'r rhaglen mewn gwirionedd yn ei wneud, neu o leiaf yr hyn y rhaglen i fod i gael ei wneud. P'un a yw ei fod yn gywir yn fater arall yn gyfan gwbl. Yn awr, yn C, gydag aml-linell sylwadau, yn cofio bod ar-lein un yma yn y symbol hud, / *. Mae'n golygu yma hon y dechrau o sylw. A dim byd arall sy'n bwysig nes i chi gyrraedd diwedd y terminator, sydd yn * /, y gwrthwyneb. Felly, mae'r ffaith fod gennyf 80-rhai o sêr od yma o o'r chwith i'r dde yn wirioneddol yn unig manylion esthetig. Nid oes ganddo unrhyw ystyr swyddogaethol. Nawr beth am llinell 11? Beth mae hyn yn ei wneud yn nhermau lleygwr? Beth sy'n bod? GYNULLEIDFA: Yn cynnwys y safon. DAVID J. Malan: OK, yn dda. Felly, mae'n cynnwys y llyfrgell stdio.h. Felly beth mae hynny'n ei olygu? Wel, y tu mewn i'r ffeil, stdio.h, yn criw cyfan o datganiadau swyddogaeth - hynny yw, cod y ysgrifennodd rhywun arall. Ac yn enghraifft berffaith o swyddogaeth sydd wedi'i ddatgan yn stdio.h yw - sy'n hoff erbyn hyn? Felly printf, un o'r rhai mwyaf cyffredin i'w ddefnyddio, yn sicr gynnar, o'r llyfrgell yno. Os byddaf yn cynnwys y llinell o god, Clang yn mynd i weiddi ar mi rhywbeth am ddefnyddio symbol heb ei ddatgan. Rhywbeth heb eu datgan yn ôl pob tebyg y gair allweddol, oherwydd nid ydym wedi rhoi gwybod i'r casglwr beth printf yn edrych hoffi oni bai ein bod yn cynnwys y llinell. A mwy i lawr i'r Ddaear, mewn gwirionedd, yr hyn y llinell ei ddweud yw agor y ffeil, stdio.h, lle bynnag y mae ar y gweinydd 'n anawdd cathrena, neu yrru yr offer caled, a chopi-gludo ei iawn yno yn fy ffeil, heb fy orfod gwneud hynny â llaw. Nawr, ar ôl i ni fynd i lawr yma i brif, cyn bo hir byddwn yn dechrau pryfocio ar wahân pa int a pha ddi-rym yn. Ond am nawr, gadewch i ni edrych ar y tair llinell o fewn 15 drwy 17. Mae hyn yma rwyf hawlio fel bygi. Llinell 7 yn fy sylwadau yn dweud "Os argraffu 10 sêr ond nid yw'n. "Pam mae hyn yn Nid yw argraffu, mewn gwirionedd, 10 sêr o'r fath? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yn union. Felly sylwi ein bod yn dechrau cyfrif o 0. Ac mae hyn mewn gwirionedd yn gonfensiwn mewn rhaglennu a gwyddoniaeth gyfrifiadurol yn fwy cyffredinol, yn dechrau i gyfrif o 0 yn hytrach na 1. Ac mae hyn yn wir yn unig yn deillio o'r ffaith, er enghraifft, pan oedd gennym wyth o bobl i fyny ar y llwyfan, pan nid oedd neb yn codi eu llaw, roeddent yn pob seroau yn effeithiol. Ac felly 'i' jyst fath o gonfensiwn cyfrifiadur felly, Felly, i ddechrau cyfrif o 0. Os dyna'r nifer isaf y gallwch ei gynrychioli mewn deuaidd. Felly dyma ni wedi dechrau i ymgychwyn i 0. Rydym wedi gosod i gyfartal i 0. Ond yna wyf yn gwneud y camgymeriad yma, gan ddweud i yn llai na neu'n gyfartal i 10. Ond os ydych yn credu mai trwy, os byddaf yn dechrau ar 0, ac yna byddaf yn mynd hyd at 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Im 'mewn gwirionedd yn mynd i argraffu 11 o sêr y sgrin, oherwydd fy mod i wedi mynd i fyny i ac yn gyfartal i 10. Felly, mae'r ateb yn hawdd yma wedyn yw beth? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Dim ond newid i lai na. Os ydych wir eisiau, gallwch wneud hyn. Ond yn gyffredinol, sydd wedi gwgu arno. Ac felly dechrau cyfrif o 0 yn unig yw rhywbeth dylech fel arfer yn cael ei ddefnyddio i. Nawr, beth am y lluniad gyfan mewn ac o ei hun? Hyn 15 llinell demarks a ar gyfer dolen. Felly, nid yw swyddogaeth. Mae'n dim ond datganiad. Mae'n lluniad dolennu, fel y gwelsom yn Scratch. Ac mae wedi tair rhan. Sylwch fod yna yn y rhan gyntaf i ar ochr chwith y colon. Mae y rhan ganol rhwng y ddau hanner colon. Ac yna mae y rhan dde-law i'r dde y colon ail. Yn awr, y cyntaf o'r rhain yn gwneud beth? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yn ôl yno? Yeah? GYNULLEIDFA: initialization. DAVID J. Malan: initialization. Felly beth mae hyn yn ei olygu? Rydym wedi datgan newidyn enw i. Mae o int fath, am fy mod wedi nodi int i. A dwi'n ymgychwyn i at y gwerth o 0. Felly beth mae hyn ei ddweud mewn gwirionedd? Mae'n effeithiol yn dweud wrth y cyfrifiadur hey, yn rhoi i mi yn ddigon cof, ddigon o RAM, i osod rhif, ac yna rhowch y rhif 0 yn y darn o RAM. Ac fel o'r neilltu, pa mor fawr yn int fel arfer, o leiaf y tu mewn y teclyn? GYNULLEIDFA: 32 bit. DAVID J. Malan: 32 ddarnau. Felly mae hynny'n golygu rhoi i mi 32 catiau, a elwir fel arall fel 4 bytes, a rhowch y 0 werth ynddo, sydd yn eithaf hawdd oherwydd 'i jyst yn golygu gosod yr holl ddarnau i 0. Felly yn awr, yr ail ran yma yw cyflwr. Ac mae'r cyflwr, fel mae'r enw yn awgrymu, yn yr hyn yn cael ei wirio eto ac eto ac eto ynghylch a yw'n wir neu ffug. Felly, mae hyn yn unig yw dweud gwneud y llinellau canlynol o god - sef llinell 16, oherwydd dyna'r unig un wedi'i fewnoli o dan - cyhyd fel fi yn llai na 10. Ac ar ôl pob iteriad drwy'r ddolen, gwneud y incrementation, sef yn yr achos hwn yw i + +. Nawr, nid oes rhaid iddo fod i + +. Gallai fod i -. Ond os wyf yn gwneud hyn, beth sy'n ymddygiad sy'n mynd i fod y rhaglen hon? GYNULLEIDFA: Mae'n mynd i fod yn dolen ddiddiwedd. DAVID J. Malan: Mae'n mynd i fod yn rhyw fath o dolen ddiddiwedd, oni bai ein bod yn cael lwcus ar ôl 2 biliwn neu negyddol hynny. Efallai y bydd pethau'n lapio o gwmpas, dim ond drwy natur y terfyn nifer o ddarnau yr ydym wedi dyrannu ar gyfer int. Ond mae'n sicr yn mynd i ailadrodd llawer mwy na 10 a sicr yn fwy na 11 gwaith yma. Ac yn awr, yn union fel o'r neilltu, yn sylweddoli bod fi + + a fi - yn wir dim ond siwgr cystrawennol. Dim ond nodiant llaw-fer am yr hyn sydd ychydig yn fwy ysgrifenedig yn benodol fel a ganlyn: i = i + 1. Dyna yn union i + +. 'I jyst fath o edrych yn prettier i ddweud i + +. Mae'n fwy cryno, yn fwy darllenadwy. Ac felly rhan fwyaf o bobl yn gwneud hynny yn lle hynny. Ond mae hyn yn union yr un fath swyddogaethol i hyn yr ydym jyst yn gweld. Felly, yn fyr, ateb cyflym yma yn unig i ddweud ailadrodd i o 0 yr holl ffordd i fyny i lai na 10. Ac yna byddwn yn wir yn cael 10 sêr. Felly, gadewch i ni geisio hyn. Gadewch i mi agor y derfynell ar y gwaelod. Gadewch i mi fynd i mewn i'r cyfeiriadur bod hyn yn ynddo Ac yr wyf i'n mynd i lunio â llaw gyda Clang am y tro. Ac yr wyf i'n mynd i lunio hyn fel buggy1.c, Enter. Ac yn awr buggy1, pam nad oes unrhyw ffeil o'r fath neu cyfeiriadur a elwir yn buggy1? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah. Felly, fe'i gelwir mewn gwirionedd a.out. Felly cofio os ydych yn unig yn rhedeg Clang, lle Clang yw'r Nid yw compiler, ac rydych yn nodi yr enw sydd eisiau i roi eich rhaglen, mae'n mynd i ball i a.out. Felly, yn wir, os wyf yn gwneud ls - wps. Ac yr wyf yn didn't - y mater du-a-gwyn rhai o'r ydych wedi'u hwynebu wedi bod yn sefydlog. Ond gadewch i mi wneud hyn. Mae gennym a.out ar yr ochr chwith yno. Felly, mae'n rhaid i ni redeg a.out yn hytrach na buggy1. Felly, gadewch i mi fynd ymlaen a gwneud hyn. . / A.out, Enter. Ac yr wyf yn debyg nad oedd yn gwneud beth? GYNULLEIDFA: Achub. DAVID J. Malan: Achub fy ffeil. Felly sy'n cael ei datrys yn hawdd drwy daro S Rheoli, neu fynd i File, Achub, fel yn y rhan fwyaf o raglenni. Gadewch i mi fynd i lawr yma, clirio'r sgrin, yn rhedeg eto. Ac mae dal i fod yn bug. Felly beth sy'n mynd - GYNULLEIDFA: Nid ydych wedi llunio. DAVID J. Malan: Ah, yn dda. Doeddwn i ddim yn llunio ei. Fel idiot, rwy'n edrych ar y cod i weld beth sydd o'i le. Buggy1.c clang Felly, nawr a.out. Ac phew, arbed. Felly mae'n edrych ychydig yn hyll oherwydd nad oes llinell newydd unrhyw le yn y rhaglen. Ond unwaith eto, dyna dim ond manylion esthetig. Ac o leiaf os ydym yn cyfrif rhai y tu allan, dylem awr yn gweld 10 sêr o'r fath. Wel, beth am yr ail gynhesu enghraifft? Felly, yn buggy2, yr wyf yn honni bod y fersiwn hwn, hefyd, yn argraffu 10 sêr, un i bob llinell. Felly, y tro hwn, mae gen i gymeriad Newline, dim ond er mwyn gwneud pethau ychydig yn prettier. Ond yn hytrach yr hyn yr wyf yn ei gael yn hyn. Felly, gadewch i mi wneud buggy2.c clang, Enter. Nawr mae'n cael ei alw eto a.out. Enter. Ni welaf ddim ond un llinell newydd, dim ond y llinell olaf un newydd sy'n symud fy brydlon i'r llinell nesaf. Ac eto yn glir Rwyf wedi bod yn argraffu *, yna llinell newydd, *, Yna llinell newydd. Ond beth yw'r nam yma? Yeah? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yn union. Felly, yn wahanol i rai ieithoedd, fel Python, lle bant mewn gwirionedd wedi ystyr swyddogaethol, mewn iaith fel C - gan y byddwn yn gweld, PHP, JavaScript - y mewnoliad yn wirioneddol yn unig er budd pobl '. Felly y ffaith fy mod i wedi mewnoli llinell 16 a 17 yn edrych yn wych, ond nid oes ganddo ystyr swyddogaethol yma. Os ydw i eisiau ddau llinellau i weithredu fel rhan o'r am ddolen, yna mae'n rhaid i mi eu hamgáu mewn braces cyrliog trwy wneud hyn. Gallwch dorri cornel hwnnw a hepgorer y braces cyrliog os beth yw'r achos? GYNULLEIDFA: Dim ond un llinell. DAVID J. Malan: Dim ond un llinell. Felly dyna 'i' jyst fath o fath 'n glws o fanylion gystrawen er mwyn nad ydych yn gwastraffu amser yn ysgrifennu tair llinell, dau ohonynt yn braces cyrliog, dim ond i ysgrifennu un llinell o god. Ond os oes gennych ddau neu fwy o linellau, rydym yn yn wir angen i wneud hyn. Felly nawr gadewch i mi achub y. Gadewch i mi fynd yn ei flaen ac ail-redeg Clang. Yna gadewch i mi ailgynnal a.out, ac yn awr yr wyf yn eu cael un i bob llinell. Yn awr, a.out unwaith eto yn fath o enw fud ar gyfer rhaglen. Sut alla i ddweud Clang i mewn gwirionedd yn rhoi i mi enw ffeil hynny'n fwy defnyddiwr-gyfeillgar, fel buggy2 ei hun? Ychydig yn fwy clir? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: OK, fel y gallaf mewn gwirionedd yn cymryd iawn defnyddiwr-gyfeillgar shortcut a dim ond ysgrifennu yn buggy2. Nid wyf yn nodi. C yn yr achos hwn, a daro Chofnoda. A beth wneud yn ei wneud yn ei llunio buggy2.c i mi gan gofyn Clang i wneud hynny. Yn benodol, mae'n galw Clang, mae'n rhedeg Clang gan ddefnyddio ffordd fwy gorchymyn-lein dadleuon neu switshis nag yr oeddwn ei angen mewn gwirionedd. Ymhen amser, byddwn yn dod yn ôl at yr hyn y rhain i gyd wahanol ymadroddion chysylltnod cryptig olygu. Ond am nawr, dyna dim ond fy arbed y drafferth o orfod cofio ac yn gorfod teipio allan bawb ymadroddion chysylltnod amrywiol. Ac y upside ohono yn y pen draw yw sydd yn awr yr wyf wedi buggy2. Os ydw i eisiau gwneud hyn â llaw, fodd bynnag, yr wyf modd i chi wneud hyn - clang-o buggy2 ac yna buggy2.c. A bydd yn yr un modd yn rhoi i mi ffeil o'r enw buggy2. Felly, yn fyr, Clang yw'r compiler. Gwnewch yn unig yn offeryn defnyddiwr-gyfeillgar y byddwn ni'n defnyddio mwy a mwy, oherwydd mae'n dechrau symleiddio pethau i ni. Ac rydym yn dychwelyd 0, yn olaf. Am y tro, dim ond oherwydd, ond byddwn yn dechrau tynnu coes y rhan honno heddiw ac ar ddydd Mercher. Unrhyw gwestiynau ar unrhyw un o'r hyn? Yeah? GYNULLEIDFA: [Anghlywadwy] ls mewn dyfynodau yno? DAVID J. Malan: OK. Pan fyddaf yn ls teipio mewn dyfynodau, a oedd i mi wneud rhai hud y tu ôl i'r llenni i drwsio a bug. Anghofiais i, fel yr ydym wedi bod yn dweud llawer ohonoch ar y byrddau trafod, i'w wneud - byddwn yn gwneud hyn yn awr - sudo yum-y diweddariad appliance50. Wps, bod ei sillafu'n gywir. Felly, yr offer yn debyg i system weithredu. Mae'n cynnal y system weithredu o'r enw Fedora. Ac yn awr oherwydd fy cysylltiad rhyngrwyd araf, rydw i wedi hosed fawr iawn. Felly, yn rhedeg diweddariad sudo yum, fel yr ydym yn dweud wrthych ei wneud yn y broblem a osodwyd, yn ei hanfod yn hoffi rhedeg diweddariadau awtomatig yn Mac OS neu Windows. A'r rheswm am redeg hyn ar gychwyn cyntaf y broblem a osodwyd oherwydd pan fyddwn yn creu y peiriant, yr wyf cyboledig i fyny, ac yr wyf yn ddamweiniol gwneud eich holl raglenni yn edrych du ar sgrîn du, a dyna pam nad ydych yn gweld eu yn ddiofyn. Ond y fersiwn diweddaraf o'r offer chyfyngderau hyn. A byddaf atgyweiria bod yn ystod yr egwyl ar ôl i mi gael y Rhyngrwyd cysylltedd. Felly mae'r dyfyniadau yn unig cuddio fy camgymeriad, yn synhwyrol, mae'n debyg. Cwestiynau eraill? Ydw? GYNULLEIDFA: Ble mae gwneud dod? [Anghlywadwy] DAVID J. Malan: Cwestiwn da. Ble yn gwneud yn dod? Mae'n rhaglen Linux sydd wedi bodoli ers blynyddoedd lawer, hir cyn CS50. Ac mae'n dod gyda system weithredu fel Fedora. Nid yw'n dod o'r llyfrgell CS50. Yn wir, yr unig bethau sy'n dod o'r llyfrgell CS50 hyd yn hyn, yr ydym wedi gweld, yn GetString, GetInt, pob un Cael y rhai swyddogaethau, ac y llinyn gair, ac i rai raddau, y gair bool. Ond byddwn yn ymhelaethu ar y mater ar wahân pan fyddwn yn plymio i mewn i'r CS50 offer ei hun. Felly ie, un cwestiwn mwy yma. GYNULLEIDFA: Pan fyddwch yn dweud gwneud ac yna bygi, sut y mae'r cyfrifiadur yn gwybod [Anghlywadwy]? DAVID J. Malan: Cwestiwn da. Felly, pan fyddwch yn gwneud jyst hidla buggy1 neu wneud buggy2, sut yn gwneud gwybod? Felly, yn ddiofyn, os ydych yn teipio yn gwneud buggy1, yn gwneud yn edrych am ffeil o'r enw buggy1.c. Ac yna mae'n executes y gorchmynion Clang priodol, a thrwy hynny tra phwysig 'r ball ffeil allbwn o'r enw a.out. Yn wir, os edrychwn ar yr hyn y gwneud, beth - gadewch i ni roi'r gorau i hyn. Os edrychwn ar yr hyn oedd mewn gwirionedd yn gwneud ei wneud, yn gwneud buggy2, mae eisoes i fyny hyd yn hyn. Felly, gadewch i mi gael gwared ar y gorchymyn rm, y rhaglen Ysgrifennais o'r blaen. Teipio Y-E-S i gadarnhau fy mod am dynnu. Os wyf yn awr yn gwneud, yn sylwi bod yn y llinell hon yn hir iawn, mae hyn yn beth olaf yma,-o buggy2. Mae pob gwneuthuriad yn ei wneud yn pasio y ddadl honno, fel petai, i Clang, fel nad oes rhaid i mi deipio fy hun. Mae pob hawl, felly mae ychydig yn gyflym gweinyddol cyhoeddiadau. Felly, ar gyfer adrannau, a oedd yn swyddogol dechreuodd hyn yn dod Dydd Sul, byddwch bob amser yn awyddus i ddod, os oes gennych chi un, gliniadur. Os nad oes gennych laptop, yn cyrraedd allan i mi gan gollwng m e-bost. A byddwn yn chyfrif i maes llif gwaith. Beth yn gyffredinol byddwch yn dod o hyd yn adran yw eu bod yn rhan cysyniadol, rhan ymarferol. Byddwn yn benodol yn defnyddio'r adran cwestiynau, rhan o set problem yr wythnos, i gerdded drwy rai o'r deunydd cysyniadol o ddarlith. A dyna i gyd yn y set problem ar hyn o bryd. A byddwn hefyd yn plymio i mewn i rai gweithgareddau ymarferol, weithiau Bydd ohonynt yn cael eu ofynnol ei gyflwyno, weithiau o na fydd yn. Er enghraifft, yr wythnos hon gyntaf, maent yn golygu yn union fel cynhesu i fyny ymarfer corff. A byddwch yn gweld bod y rhai problemau yn wir yn hynny. Maent yn golygu i fod yn gymharol fach, ond nid o reidrwydd rhaglenni dibwys i ysgrifennu, nad ydynt o reidrwydd gyfleoedd da cyffrous mewn ac ohonynt eu hunain ond maent i ymarfer gyda chystrawen, gyda swyddogaethau newydd, yn y cysur o adran lle mae gennych ychydig o'ch cyd-ddisgyblion yn bresennol fel ogystal â'ch TF. A beth byddwn yn ei wneud dros gyfnod o amser yn defnyddio dull o'r enw Mannau CS50, lle hytrach na dim ond defnyddio'r Offer CS50, byddwch yn yn hytrach na mynd i dudalen gwe mewn porwr, lle byddwch yn gallu i ysgrifennu cod mewn ffenestr porwr yn ystod adran. Ac yna os ydych yn dewis i mewn, gall eich cyd-addysgu yna dangos beth bynnag yr ydych chi'n teipio ar eich sgrîn yn eich porwr ffenestr i fyny o flaen y dosbarth, boed yn ddienw neu yn gyhoeddus, fel y gall ef neu hi wedyn yn cerdded drwy gyda eich cyd-ddisgyblion yr hyn a wnaethoch yn dda, beth nad oeddech yn gwneud yn dda. Ac eto, fod yn sicr y gall hyn i gyd yn cael ei anonymized 'n glws. Ond fe fydd yn gyfle braf i lawer mwy rhyngweithio na rhywbeth tebyg i ddarlith yn galluogi'r. Yn y cyfamser, bydd gennym y pethau hyn a elwir yn super adrannau, sydd yn ddewisol ond yn agored i bawb yn y dosbarth, fel y gallwch wneud hyn yn fwy ar y cyd ar gyfer problem sefydlu un. Dyma yr amserlen. Mae hyn yn cael ei bostio hefyd ar y dudalen hafan yn cs50.net. Sylwch fod mi fydd haciwr-benodol un prynhawn yfory. A byddwn yn ffilmio un heddiw ac un yfory ac ar ôl rhai ar-lein o fewn 24 awr. Felly, os na allwch chi wneud unrhyw un o'r adegau hyn, i chi boeni. Ac eto, yr amserlen ar-lein yn awr yn cs50.net. O ran rhannu'r ei hun, dylech fod wedi gotten yn e-bost sy'n eich cyfarwyddo i fynd i hafan y cwrs i ddod o hyd i eich adran. Os yw bywyd wedi newid ac mae angen i chi newid eich adran, nid problem. Ewch yn ôl at y URL un, cs50.net/section, unigol, a byddwch yn llenwi'r ffurflen tebyg fel y gallwch Yna, rhowch eich dewisiadau. A byddwn yn dilyn i fyny erbyn diwedd wythnos o ran yr hyn y gallwn darparu. Yr wythnos diwethaf, yn cofio ein bod yn cynnig defnyddio CS50 Trafod, offeryn trafod y cwrs, mewn darlith. Felly, rydym wedi 40 o gwestiynau a ofynnwyd ac hateb yn ystod darlith. Felly, roedd yn ymddangos i weithio'n dda, felly byddwn yn parhau ceisio gwneud hyn. Os, yn ystod darlith, nad ydych yn unig yn teimlo'n gyfforddus codi eich llaw, nid problem. Ewch i cs50.net/discuss, ar ôl yno, a bydd un o'n haddysgu Bydd cymrodyr naill ai ateb yn electronig neu godi eu llaw ar eich rhan ddienw i ofyn, yn dibynnu ar natur y cwestiwn. Ac o ran adborth, yn gyffredinol psets yn ddychwelyd o fewn wythnos. Oherwydd ei fod yn cymryd ychydig o amser ar gyfer adrannau i gyflawni cydbwysedd, bydd y pset cyntaf, 0 ac 1, fod ychydig yn oedi wrth i bethau setlo i lawr. Ond aros diwnio ar gyfer hynny yn yr wythnosau i ddod. Mae pob hawl, felly gadewch imi roi ar fy difrifol llais am ddim ond ennyd. Felly, mae hyn mewn gwirionedd yn yr hinsawdd diddorol i fod yn cael y drafodaeth hon, beth gyda'r holl bethau eraill mynd ymlaen ar hynny gampws cysylltiedig. Ond CS50 yn sicr wedi ei hanes y penodol pwnc, yn gymaint ag y bob blwyddyn, y cwrs hwn, ar gyfer llawer mlynedd, Ad-Byrddau tua 3% y dosbarth. Mae'r flwyddyn fwyaf diweddar, 2011, CS50 Ad-estyll 35 o fyfyrwyr. Nid yw hyn yn, yr wyf yn meddwl, oherwydd diffyg eglurder. Sylweddoli bod maes llafur y cwrs, mae tudalen o datganiad yn egluro lle mae'r llinellau yn cael eu. Bod un datganiad yn cael ei ailadrodd ar bob un o'r problem yn gosod ar dudalen un. Felly, yr wyf yn sôn am hyn heddiw mewn gwirionedd yn unig i wneud Folks yn ymwybodol o hyn. Ac rydym wedi ceisio bethau gwahanol. A hyn yr wyf yn meddwl y byddem yn ei wneud heddiw yn unig yn cymryd hyn o bryd i mewn gwirionedd yn edrych ar rai o'r achosion yn y gorffennol sydd wedi dod i fyny. Yn hytrach na chadw cyfrinachau hyn fel budr bach, mewn gwirionedd tynnu sylw at yr hyn y mae myfyrwyr wedi ei wneud a sut rydym wedi canfod ac yn wir beth yw'r cymhelliant cyffredinol ar gyfer hyd yn oed cael y sgwrs hon. Felly, gyda hynny ddywedodd, y llinell yn ei hanfod yw hyn - unol â'r maes llafur, rydych yn, rydych yn cael eu hannog, i siarad gyda chyd-ddisgyblion. Dyna holl bwrpas cael y cyd oriau swyddfa yn Annenberg ac annog pobl ar gyfer y prosiect terfynol i weithio gyda'i gilydd. Ond mae'r llinell yn cael ei lunio pan ddaw amser i ysgrifennu mewn gwirionedd eich ateb terfynol. Wrth siarad yn Saesneg, yn hollol iawn, yn siarad mewn cod ffug, hollol iawn. E-bostio a classmate eich pset, gan adael iddynt edrych dros y sgrin fel y dwylo yn parhau i deipio, dros y lein yn ogystal. Peidiwch edrych ar y maes llafur ar gyfer y llinellau penodol. Ond dim ond i beintio darlun o sut mae hyn yn anffodus, yn gwirionedd, yn sylweddoli bod yna wefannau allan yna sy'n cael atebion gan y dosbarth hwn a dosbarthiadau eraill. Mae'r ffaith eich bod chi neu ryw 3% ohonoch yn gwybod bod hyn yn bodoli yn golygu ein bod yn gwybod bod hyn yn bodoli. Mae'r ffaith bod yna wefannau fel hyn lle rydych yn Gall talu rhywun i mewn gwirionedd yn gwneud eich setiau problem - roedd hyn yn achos gwirioneddol a ddaeth i fyny y llynedd. Mae hon yn wefan o'r enw odesk.com. Ac Tim oedd enw'r person yma oedd yn postio ar y wefan hon a gofyn i rywun i wneud ei pset 7 mewn yr achos arbennig hwn. Wel, odesk.com iawn Google-abl, ac rydym hefyd yn dda iawn am Googling. Yma, hefyd, ceir safleoedd - ac mae hyn yn un 'yn hytrach erchyll, a dweud y gwir. [Chwerthin] DAVID J. Malan: Y peth doniol am y wefan hon yw os eich bod yn darllen y dudalen Amdanom, maent yn siarad am eu gorfforaethol gwasanaeth cwsmeriaid diwylliant a sut mae eu rhif-un blaenoriaeth, i wneud yn siŵr bod eich aseiniadau yn cael troi i mewn ar amser. Ond o ddifrif, unwaith eto, mae'r ffaith bod y safleoedd hyn bodoli, yn sylweddoli ein, hefyd, yn ymwybodol o mathau hyn o safleoedd. Ac i roi syniad i chi o'r hyn ffurfio hyn, yn gyffredinol cymryd, nid ydym yn gyffredinol yn cael sgandalau mawr lle mae pobl yn cydweithio ar unrhyw fath o raddfa enfawr, ond yn hytrach mae'n eiliadau hyn yn hwyr y nos o wendid, lle mae gennych er mwyn llawer i'w wneud, mae'n 04:00, rydych yn blino'n lân, ac rydych yn meddwl i chi eich hun, yn dda, gadewch i mi fwrw golwg ar fy roommate neu god fy ffrind neu yn y blaen. Ac mae'r arwyddion o hyn yn anffodus yn golygu Myfyrwyr Mae rhywbeth yn cyflwyno fel hyn a chyflwyno B Myfyrwyr rhywbeth fel hyn, sydd yn sicr, mewn cyfrifiadur gwyddoniaeth dosbarth, yn hynod o hawdd i wyddonwyr cyfrifiadurol i ganfod gyda meddalwedd. Mae hwn yn batrwm arall cyffredin, lle rydych chi wedi fath o bod yn gweithio ochr yn ochr â rhywun, efallai yn siarad yn Saesneg, jyst ddirwya, pseudocode. Ond yna mae'n fater o amser i gyflwyno mewn gwirionedd, ac mae'r psets dim ond yn cael cyfnewid drwy e-bost neu Dropbox neu yn y blaen. Ond mewn ymgais i'w gwneud yn llai amlwg bod hyn yn hyn sydd wedi digwydd, yna mae hyn yn beth sy'n cyflwyno. Mae hyn, hefyd, nid yw'n daith i fyny yn dda-ysgrifenedig darnau o meddalwedd fel mae'n rhaid i ni mewn gwirionedd yn canfod mathau hyn o bethau. Ac yn wir yr hyn rydym yn ei wneud yw meddalwedd rhedeg sy'n cymharu pob un o'r cyflwyniadau eleni yn erbyn yr holl flwyddyn a aeth heibio cyflwyniadau, yn erbyn popeth yr ydym yn gweld ar y Rhyngrwyd, yn erbyn pob gwefan swyddi i maes 'na. Mae hyn i gyd yn awtomatig. Ac felly rydym yn gwneud hyn yn wir er tegwch mawr i'r 97% sy'n yn wir yn gweithio eu asesu i ffwrdd yn hyn ac mewn dosbarthiadau a rhoi ym mhob un o'r ymdrech honno fel bod y gwaith yn y pen draw yw cyflwyno eu hunain. A allaf fynd ymlaen am oesoedd. Mae'r rhain yn dim ond llond llaw o achosion y llynedd. Mae ychydig o fyfyrwyr a gyflwynir y ffeiliau hyn yn union i pset 2, pset 3, pset 4, pset 5, pset 6, pset 9. Yn yr achos hwn, roedd hyn yn cwis 0 a yn y flwyddyn ddiwethaf, lle mae dau myfyrwyr a gyflwynir yn union frawddeg hon ymhlith llawer o eraill, "Y cais fath -" dot, dot, dot. Felly hyd yn oed mewn dosbarth o 600 wnaethon ni ganfod hyn ar gyflwyno cwisiau. Felly, yn fyr, mae hyn - a dweud y gwir, Rwy'n casáu cael y math hwn o sgwrs - ond mae hyn yn wir yn ymdrech fwriadol eleni i geisio gostwng y nifer hwnnw. Oherwydd hyd yn oed er ein bod yn dweud y mathau hyn o bethau bob flwyddyn, rwy'n meddwl bod y realiti o fod wedi drigodd arno am ychydig mwy eiliad nag arfer ac mewn gwirionedd dim ond tynnu sylw at y gallai hyn ymddangos fel, eh, nid o'r fath yn beth mawr, o leiaf meddwl yn ôl i'r adeg benodol, o ran tegwch i eich hun ac i'ch cyd-ddisgyblion yma. Felly, os ydych chi erioed gennych unrhyw gwestiynau ynglŷn â lle mae'r llinell yw, os gwelwch yn dda dim ond ymestyn allan i mi yn bersonol. Ond yr ateb bob amser, yn gyfan gwbl pwysleisio ar y funud olaf, arian parod mewn diwrnod yn hwyr. Neu os yw'n fater o beidio â chael unrhyw ddiwrnod yn hwyr, yn onest, e-bost ataf yn bersonol. Byddwn yn ffigwr rhywbeth allan. Nid os gwelwch yn dda peidiwch â rhoi eich amser yma yn Harvard mewn perygl. Yn awr, yr wyf yn credu y dylem ysgafnhau'r awyrgylch, felly rwy'n cynnwys hyn fel y sleid nesaf. [Chwerthin] DAVID J. Malan: Mae'r wefan hon yn wych. Fi 'n weithredol got ychydig yn canolbwyntio ar y ffordd. Mae hyn yn un. Ac yna roedd hyn yn un anhygoel. Iawn, felly meddyliwch am y gath fach yn hwyr yn y nos wrth wneud penderfyniadau hynny. Mae pob hawl, pethau felly yn ôl i fwy o hwyl ac yn llai difrifol, fel amodau. Mae pob hawl, felly gwnaethom drafod yn fyr am y rhain. Mae hyn yn rhywbeth sy'n debyg, yn gwbl gyfarwydd o y byd Scratch. Ac yn y byd o Scratch, mae gennym yr angen hwn weithiau mynd i wneud fforchio yn y ffordd. Naill ai gwneud hyn neu'r llall, neu y peth arall yma. A phan fyddwn yn dymuno gwneud hyn, gallwn eu defnyddio, yn C yn awr, hyn os arall adeiladu. Ac yna dyma gennym mynegiadau Boole. Er enghraifft, mynegiadau Boole yma, gallwn NEU gyda'i gilydd, yn yr ystyr bod gennym y cyflwr hwn NEU y cyflwr hwnnw. Gallwn A gyda'i gilydd, yn yr ystyr ein bod eisiau gwirio cyflwr hwn A bod cyflwr. Ac yma mae gennym ddatganiad newid yn awr, nad yw mor debyg syntactically i'r mathau hynny o amodau, ond mae'n yn caniatáu i ni wneud yr hyn sy'n cyfateb os, arall os, arall os, arall os, ac yn y blaen gan syml rhestru iddynt fesul achos gan achos wrth achos. Felly, rydym yn gweld rhai tro diwethaf. Ac yna rydym yn dechrau cyffwrdd ar bethau fel dolenni. Gwelsom un o'r rhain dim ond funud yn ôl. Ond mae hyn cysyniadau eraill dolennu. Er enghraifft, mae hyn yn un yma. Felly, er (cyflwr), yn gwneud y peth eto ac eto. Felly y bôn, yr hyn sy'n ymddangos i fod yn wahanol rhwng y gyfer dolen ac mae hyn yn ddolen tra yma? Hyn, er dolen ac mae hyn yn ddolen amser. Yeah? Beth sy'n bod? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Da. Felly, tra yn y ddolen ar gyfer cyflwr, mae yn amlwg cystrawen mwy. Mae hyn yn initialization, mae diweddariad hwn. Mewn dolen sbel, nid dim ond y cyflwr hwn. Felly, mae'n ymddangos ei fod yn ychydig yn cwtogi i lawr yn erbyn y gyfer ddolen, sy'n golygu os ydym am gael newidynnau ac rydym am i gael incrementation, rydym mewn gwirionedd yn rhaid i gwneud y peth hyn ein hunain. Felly, gadewch i mi fynd yn ei flaen ac agor gedit. Gadewch i mi droi at y ddyfais. A gadewch i ni dim ond yn gwneud yn enghraifft fach cyflym gwahaniaethu un o'r rhain oddi wrth y llall. Ac yng nghefn fy meddwl yma, dylwn ddweud un peth. Cyfeiriais yn benodol at y Tim enw. Tim oedd mewn gwirionedd yn rhywun y mae myfyriwr ceisio dod o hyd i wneud eu gwaith cartref ar eu cyfer. Nid oedd gennym Tim yn yr adran benodol. Felly sylweddoli, rhag i mi datgelu yn fyfyriwr, nid oedd yn fyfyriwr. Roedd yn berson ar hap ar y Rhyngrwyd yn gwneud pethau yn ôl blwyddyn ddirprwy ddiwethaf. Felly rydym yn dod o hyd i hynny, hefyd. Felly, yn yr achos hwn yma, gadewch i mi fynd yn ei flaen a agor ffeil newydd. Ffeil, Newydd. Mae hyn yn rhoi i mi tab yma. Gadewch i mi fynd yn ei flaen a'i gadw fel loop.c. Gadewch i mi fynd a chliciwch Cadw. Ac yna i lawr yma, gadewch i ni fynd yn ei flaen ac yn dechrau ysgrifennu # Cynnwys . Gadewch i mi chwyddo i mewn Nawr byddwn yn gwneud prif int (gwag). Nawr, gadewch i mi fynd ymlaen a gwneud ar gyfer (i int = 0; ff < oh, 10; i + +). Ac yn awr yr wyf i'n mynd i fynd yn ei flaen ac yn argraffu'r seren fy mod yn gwnaethom yn gynharach. Ac yna ar ddiwedd y rhaglen hon, rydym yn jyst yn mynd i argraffu llinell newydd, dim ond er mwyn fy brydlon nid yw'n edrych holl anniben. dychwelyd 0. Ymddangos syntactically gywir? Hyd yn hyn. Felly, gadewch i ni weld. Felly, gadewch i mi chwyddo allan, mynd i mewn i fy ffenestr terfynell. A gadewch i mi fynd yn ei flaen ac yn rhedeg ddolen, oherwydd fy mod yn galw hyn yn loop.c. beth Felly gwnewch ddolen. Ymddangos i lunio OK. Gadewch i mi redeg dolen, ac yn awr Enter. Ac mae'n ymddangos i wedi argraffu 10 sêr. Felly, gadewch i ni dim ond trosi hyn i ddolen ychydig a gweld beth mathau o faterion rydym daith drosodd. Felly yn hytrach na hyn, gadewch i mi fynd i mewn yma a dweud wrth fi yn llai na 10 - gadewch i mi gael gwared ar y ddolen i. Iawn, felly mae gennym ychydig o broblemau eisoes. Felly, y cyflwr yn yr un fath, ond rwy'n amlwg ar goll y initialization. Yr wyf yn goll y incrementation. Felly, beth ddylai'r compiler debygol dweud wrthyf pan fyddaf yn ceisio llunio rhaglen hon? Yeah? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Da. Felly, mae'n mynd i ddweud rhywbeth fel heb ei ddatgan - yn yr achos, amrywiol i. Ac yn wir, y defnydd o dynodwr heb eu datgelu i. Ac felly mae hyn mewn cyferbyniad â ieithoedd fel PHP a Python a Ruby, y mae efallai y bydd rhai ohonoch yn gyfarwydd, lle gallwch dim ond math o gychwyn gan ddefnyddio newidynnau rywsut-rywsut, ac nid rhaid i chi boeni am eu datgan yn benodol bob tro. Yn C ac mewn ieithoedd fel Java a C + +, rhaid i chi fod super penodol. Ac os ydych am newidyn enw i, mae'n rhaid i chi ddweud wrthyf pa fath o newidyn ydyw. Felly, rydym yn mynd i gael i atgyweiria hon fel a ganlyn. Rydw i'n mynd i gael i fynd i fyny yma a theipiwch int i, felly, Rwyf wedi datgan amrywiol enw i. Yn awr, rwyf wedi hepgor un cam. Dydw i ddim wedi ymgychwyn yn amlwg, ond gadewch i ni weld os mai ar gwneuthuriad Clang lleiaf stop cwyno. Felly, gadewch i mi ail-wneud y rhaglen hon. Mae pob hawl, awron 'i' jyst cwyno am reswm gwahanol. "Amrywiol 'i' yn cael ei uninitialized pan gaiff ei ddefnyddio yma." Mae pob hawl, felly mae hynny'n eithaf eglur. Ymgychwyn yn unig yn golygu gosod fod yn gyfartal i werth. Ac nid ydym wedi gwneud hynny, felly gadewch i mi roi cynnig dychwelyd 0. Nawr gadewch i ni geisio hyn eto ac ail-redeg Clang. Lluniwyd y tro hwn. Ac rwy'n ar fin ei redeg. Ond dolen ddiddiwedd mawr hen, oherwydd fy mod i wedi gwneud y initialization, rwyf wedi gwneud y cyflwr, ond dydw i erioed wedi gwneud unrhyw fath o incrementation. Felly, sut y gallaf wneud y incrementation? Wel, mewn cylch tra, mae'n teimlo fel fy mod i'n mynd i gael i wneud hynny tu mewn i'r ddolen, oherwydd bod llawer fel y cyntaf enghreifftiau wythnos o wneud lluniadau dolennu, fel gyda y sanau a gyda'r hunan-cyfrif, roedd rhaid i ni wneud rhywbeth ar y diwedd un, yn hoffi mynd yn ôl i'r llinell nesaf. Beth os byddaf yn mynd yn ei flaen ac yn gwneud hyn i + + yma? Gadewch i ni hyd yn oed yn llunio hyn. Dal fi yn barod. Beth sydd o'i le yma? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Felly nid yw'n bendant int. Mae'n i. A'r braces cyrliog, fel o'r blaen, Nid yw pant yn ddigon. Felly nawr rwyf wedi hyn yn adeiladu. Felly, er i yn llai na 10, argraffu seren, yna gynyddiad i. Ac mae'r ffordd y mae tra bo'r gwaith yn ddolen yn bod cyn gynted ag y byddwch yn cyrraedd y waelod y ddolen, sydd yn yr achos hwn yn edrych fel llinell 10, mae'n mynd i fynd yn ôl i'r llinell 6, ar ba bwynt y Bydd amod yn cael ei wirio eto. Ac os fi yn dal yn llai na 10, byddwn yn gwneud llinellau 8 a yna 9, yna y byddwn wedi cyrraedd 10, ac yn mynd yn ôl i 6, unwaith eto a eto ac eto ac eto, ar yr amod fel fi yn llai na 10. Felly gadewch i ni ail-redeg gwneud yma. Iawn, rydym wedi llunio iawn. Gadewch i mi ail-redeg ddolen. Ac yn awr fod mewn gwirionedd yn ymddangos i weithio. Felly pwyntiau cadarnhaol a negyddol yma? Wel, hyd yma nid mewn gwirionedd yn ei chyfanrwydd o PLO - fel 'n giwt. Mae pob hawl, yr oedd hwnnw'n - AH, a oedd yn damwain. Mae pob hawl, felly gadewch i ni fynd yn ôl at y ddolen i. Felly, ar gyfer dolenni yn neis am eu bod yn super penodol. A hyd yn oed er eu bod ychydig yn clunky i ysgrifennu, mae'n bwerus iawn ac mae'n caniatáu i chi wneud pethau lluosog ar unwaith. Er nad dolenni yn ymddangos i gael llawer iawn o werth yn unig eto, gan ei fod yn teimlo fel rydym yn unig rhaid i ni wneud mwy o waith. Mae'n rhaid i ni roi y initialization i fyny yma, y diweddaru i lawr yma, ac mae'n rhaid i ni gofio i wneud hynny i gyd. Felly, byddwn yn gweld mewn amser y dolenni tra mewn gwirionedd benthyg eu hunain i ddim ond gwahanol gyd-destunau, data gwahanol strwythurau, fel rhestrau a thablau hash, pethau y byddwn yn dod i canol semester. Ond am nawr, yn gwybod bod yna y trydydd math a elwir yn do- tra ddolen. Ac rydym wedi gweld hyn yn gryno. A gallai hyn fod yn ddefnyddiol super gyda pset 1. Unrhyw bryd y byddwch am wneud rhywbeth ac yna gwirio os cydweithio y defnyddiwr, ac os nad oeddent, yn ei wneud eto, a gwneud- tra bod ddolen yn benthyg ei hun i'r math hwnnw o resymeg. Oherwydd fel y archebu o'r top i'r gwaelod yma yn awgrymu, yn llythrennol yn golygu gwneud hyn. Ac yn gwneud hyn dro ar ôl tro, beth allai hynny fod? Efallai ei fod yn golygu GetInt ffonio neu GetString ac yna gwirio gwerth GetInt neu GetString ac yna gweiddi ar y defnyddiwr os nad ydynt wedi cydweithio drwy ofyn iddynt eto ac eto ac eto. Os ydych am wneud rhywbeth unwaith, Yna, edrychwch rhyw amod. Felly, gadewch i ni geisio hyn. Gadewch i mi mewn gwirionedd yn newid hyn yn awr at dolen do-gyfnod. Ac yr wyf i'n mynd i fynd yn ei flaen ac yn gwneud y canlynol. Felly, yn gwneud y canlynol. Gadewch i ni wneud int i = GetInt (), ond yn gyntaf gadewch i ddweud wrth y defnyddiwr beth i'w wneud. Felly, ychydig yn wahanol y tro hwn. "Rhowch i mi yn int". Felly, byddaf yn defnyddio printf am hynny. Ac yn awr yr wyf i'n mynd i fynd i lawr yma, a dw i'n mynd i wneud hyn tra i yw, gadewch i ni ddweud, yn fwy na - gadewch i ni weld, i yw, gadewch i ni ddweud, yn llai na 0, neu fi yn fwy na 10. Mewn geiriau eraill, yr wyf am gael rhif o 1 i 9, dim ond fympwyol. Felly rwy'n defnyddio mynegiad Boole cyfunol yma i gwneud yn siŵr bod fi yn llai na 0 neu fwy na 10, lle achos byddaf yn gwneud hyn dolen yma eto. Felly, unwaith eto, yn gwneud hyn - tra i yn llai na 0 neu i yn fwy na 10. Felly nawr gadewch i ni fynd ymlaen a gwneud hyn ar ôl i ni wedi gwneud hynny. Gadewch i 'jyst gwneud gwiriad pwyll gyflym. printf ("Diolch, i% d", i). Felly y rhaglen syml yn gofyn i'r defnyddiwr ar gyfer int, yn gwneud yn siwr ei fod mewn rhai amrediad, 1-9 yn gynhwysol, ac yna yn diolch i'r defnyddiwr trwy eu hatgoffa yr hyn y maent yn unig teipio i mewn, yn union fel gwiriad pwyll bach. Ond gadewch i ni weld os yw hyn yn gweithio fel y bwriadwyd. Gadewch i mi yn mynd ben i lawr yma ac ail-redeg yn gwneud ddolen. Hmm. "Defnyddio dynodwr heb eu datgan 'i'". Mae hynny'n rhyfedd. Roeddwn i'n meddwl wnaethon ni ddatrys hynny. Yr un symptom ond god gwahanol. Yeah? GYNULLEIDFA: [Anghlywadwy] y tu mewn i'r ddau, mae'n rhaid i ni [Anghlywadwy]. DAVID J. Malan: Yn union. Felly, mae hyn mewn gwirionedd yn ein harwain i bwnc a elwir yn gwmpas. Mae'n troi allan bod C, unwaith eto, mae'n wir yn mynd â chi llythrennol. Ac os byddwch yn gwneud rhywbeth fel hyn lle rydych yn datgan int ac yna neilltuo rhywfaint o werth, ond i chi wneud hynny tu mewn pâr o braces cyrliog, beth C yn ei wneud yw ei fod yn tybio eich bod yn dim ond am y rhai darnau 32 a elwir fel fi i fodoli o fewn y nghyd-destun y braces cyrliog, o fewn cyd-destun o linellau 6 drwy 9. Felly, i gael ei ddatgan, ac mae'n cael ei neilltuo a gwerth yn llinell 8, ond cyn gynted ag y byddwch yn ei gael y tu allan i llinell 9 isod y brês cyrliog, i yw bellach yn cwmpas, fel petai. S-C-O-P-E. Mae'n mwyach yn y cyd-destun cywir. Felly nawr, nid oes i, felly mae'n fel pe na baem wedi cael hyd yn oed datgan ei fod o gwbl. Felly beth yn ateb yna ar gyfer rhywbeth fel hyn, os bydd y rheswm yw bod fi yn cael ei ddatgan yn y braces cyrliog, a oedd yn yn ymddangos yn ddrwg? Yma? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah. Felly gallwn ymgychwyn y tu allan. Felly, gadewch i mi fynd yn ei flaen a dileu'r rhannau datganiad lle I nodi'r math, ac yn gadael i mi wneud i fyny yma. Felly, yn unol 5, yn awr yn dweud "Rhowch i mi yn int." Ffoniwch y i. Hysbysiad yn unol 9, nid wyf am wneud hyn, oherwydd fy mod yn eisoes yn meddu ar y darnau 32. Nid wyf am ofyn i'r cyfrifiadur am ddarnau 32 gwahanol. Rwyf eisiau defnyddio y 32 o un darnau. Ac yn awr oherwydd i yn cael ei ddatgan yn llinell 5, mae'n dal i fod legit i'w defnyddio yn llinell 11 a llinell 12. Felly, gadewch i mi geisio ail-grynhoi hyn a gweld os Clang stopio gweiddi. wneud dolen. Felly nawr ei fod yn "ddatganiad ymhlyg o swyddogaeth 'GetInt' yn annilys yn C99. "Beth yw hynny? Yeah? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah. Felly nawr fy mod yn ei ddefnyddio mewn gwirionedd GetInt, nid yw hyn yn rhywbeth mai dim ond yn dod â C. Mae hyn yn dod o CS50. Felly mae angen hyn yma. A gadewch i mi fynd yn ôl i lawr i'r brydlon yma ac ail-redeg wneud. Iawn, yn olaf. Nawr rydym wedi datrys hynny a bod y gwall arall. Gadewch i mi redeg yn awr ddolen a gweld beth sy'n digwydd. "Rhowch i mi yn int." 'N annhymerus' roi 11. 'N annhymerus' roi -1. 'N annhymerus' yn rhoi ei foo. 'N annhymerus' ei roi 5. Ac yn awr y mae'n wir yn gweithio. Ond mae'r brydlon newid am reswm yma. Pam ei bod yn dweud retry un o'r adegau hyn ond yn rhoi i mi int y tri arall gwaith? Pam bod ymddygiad gwahanol? GYNULLEIDFA: Rhoddodd ei fod yn llinyn. DAVID J. Malan: Mae'n ddrwg gennyf? GYNULLEIDFA: Rhoesoch ei fod yn llinyn. DAVID J. Malan: Yeah. Felly, rydym yn rhoi ei linyn yn y trydydd cynnig, pan fyddaf yn teipio foo. Foo yn llinyn. Nid yw'n amlwg yn int. A'r ffordd y mae wedi gweithredu CS50 GetInt yw ein bod yn nid ydynt yn gwirio os bydd rhywbeth yn llai na 0 neu fwy na 10 i chi, oherwydd sut rydym yn gwybod ymlaen llaw pa fath o int ydych eisiau? Ond gallwn wirio cyn lleied â phosibl i chi, oedd y defnyddiwr o leiaf deipio yn gyfanrif? Ac os nad oeddent, rydym yn gweiddi ar y defnyddiwr trwy deipio "retry" ar y sgrîn. Felly, yn awr mae gennym raglen sydd wedi dolennu. Iawn. Yn awr, pa un o'r rhain yn fath o lluniad yn well? Felly, dyma lle pethau'n dechrau cael anniben bach, y ffaith bod yn rhaid i chi gofio i ddatgan amrywiadwy hyd yma os ydych chi am ei ddefnyddio y tu mewn rhai braces cyrliog a thu allan. Ond hyd yn oed os yw hyn yn edrych ychydig yn cryptig yn gyntaf olwg, dim ond unwaith eto, cofiwch y rhesymeg syml. Er mwyn defnyddio unrhyw beth yn C, p'un a yw'n swyddogaeth neu ei fod yn amrywiol, mae'n rhaid i chi gynnwys os yw'n swyddogaeth mewn rhai llyfrgell, neu mae angen i chi ddatgan hynny. Ond yn awr mae angen i chi fod yn ymwybodol ychwanegol o'r ffaith bod eich bod yn datgan yn y cwmpas cywir. Nid ydych chi'n ei roi yn rhy dynn tu mewn cromfachau. Felly, gadewch i mi mewn gwirionedd yn rholio yn ôl. Os awn yn ôl at ein er enghraifft o gyfnod cynharach, ac yr wyf yn mynd yn ôl i am int, int i = 0; i <10; i + +, ac yr wyf gwneud sêr printf, fel hyn, ac yna paren agos, ac yn awr printf i yn awr - yn ôl yr un rhesymeg, beth fydd yn digwydd pan fyddaf yn ceisio llunio rhaglen hon? GYNULLEIDFA: dynodwr annilys. DAVID J. Malan: Felly mae'n arall dynodwr annilys, dynodwr heb ei ddatgan. Yn awr, y rheswm yn ychydig yn wahanol. Does amlwg, nid oes braces cyrliog yma, ond yr un fath syniad, yr un stori o gwmpas yn berthnasol. Os ydych wedi datgan amrywiol fel i tu mewn gyfer dolen, hyd yn oed os nad ydych wedi ysgrifennu yn benodol y cyrliog braces, feddwl amdanynt yn feddyliol yn dal i fod yno, lle y achos fi yn unig y tu mewn dilys o'r ddolen gyfer. Nid yw'n ddilys ar ôl i chi gyrraedd y llinell nesaf, sydd yn yr achos hwn yn awr yn 10. Felly, dim ond rhai materion o ran cwmpas ac yn y blaen. Mae pob hawl, unrhyw gwestiynau? Mae pob hawl, felly mae hyn yn fath o raglen bach dibwys, argraffu dim ond sêr bach. Ond gadewch i ni weld os ydych yn cofio y gân yma. Mae hwn yn gân anhygoel blino byddai'r plant yn canu ar y bws ysgol ac yn y blaen. Ond beth braf amdano yw ei fod wedi hyn cyclicity, lle mae'n "99 boteli o gwrw ar y wal, 99 botel o gwrw. Cymerwch un i lawr, ei throsglwyddo o gwmpas, 98 potel o gwrw ar y wal. "Ac yna y gân yn ailadrodd y 97, yna 96, yna 95, yna 94, yr holl ffordd i lawr i 0 os ydych yn cael bod ymhell ar y bws. Felly, mae hon yn rhaglen braf i ni geisio'u gweithredu, gan fod fy Duw, pe gallech dim ond rhoi hyn ar waith gydag ychydig linellau o god, gallech boeri allan y geiriau cyfan i hyn gân yn eithaf cyflym. Ond ar hyd y ffordd, gallwn ddechrau nawr canfod ar wahân rhai o'r rhain yn adeiladu sylfaenol dolennu ac erbyn hyn hefyd cyflwyno swyddogaethau yr ydym yn ysgrifennu ein hunain, yn dychwelyd gwerthoedd ein bod yn pasio o gwmpas. Ond yn gyntaf, pam nad ydym yn mynd yn ei flaen ac yn cymryd ein pum-munud torri yma? A phan fyddwn yn mynd yn ôl, byddwn yn canu y gân. Mae pob hawl, felly dyma ni'n ôl. A phan yr wyf yn dweud y byddwn yn awr yn canu y gân, yr wyf yn golygu programmatically, nid ar lafar. Felly yma mae gennym beer1.c, sy'n un gweithrediad y cân arbennig. A dim ond i fod yn glir, ar gyfer rhai sy'n anghyfarwydd â'r hyn y peth hyn yn edrych fel, gadewch i mi fynd yn ei flaen ac yn gwneud beer1, Enter. Nawr, gadewch i mi redeg beer1, a'r hyn y byddwn yn gweld - faint o boteli Bydd o gwrw fod ar gael? 'N annhymerus' deipio i mewn 99, fel y gân yn ei ddweud. Enter. Ac yn awr os ydym sgrolio drwy'r - Wps - os ydym yn sgrolio drwy'r hyn i gyd, byddwn yn gweld bod oedd hyn yn wir yn canu y gân gyfan. Arhoswch funud. Fy bar sgrolio mae ychydig yn cyboledig i fyny. Gadewch i ni ddefnyddio'r ffenestr mwy. Felly beer1, 99, dyna ni. Felly, yma rydym yn cael y gân gyfan, canu llawer cyflymach gan y gyfrifiadur nag y gallai fod wedi bod gennym ni. Felly sylwi, fodd bynnag, mae natur gylchol yma. Mae'n dweud 99, yna 99, yna "yn cymryd un i lawr, ei throsglwyddo o gwmpas, "yna 98. Ac yn awr mae'n ailadrodd dro ar ôl tro. Felly, mae hyn mewn gwirionedd yn gyfle perffaith ar gyfer rhyw fath o dolennu adeiladu. Sylwch fod Rwy'n fath o dorri cornel yma. Sylwch fod i ddim yn dweud "98 boteli o gwrw ar y wal, 97 boteli o gwrw ar y wal, "a bod yn unig oedd hynny pan fyddwn yn mynd i un botel o gwrw, nid oes gennyf i chi boeni am y gramadeg Saesneg. Ond gallwn hefyd atgyweiria hon gydag ychydig o os cyflwr, efallai. Os bydd y nifer yn unigol, mynd yn ei flaen ac yn dweud "potel", fel arall os yw'n lluosog, yn dweud "poteli". Ond am nawr, rwy'n hollol torri y gornel. Felly, gadewch i ni weld beth sydd gennym yma. Felly, rydym wedi cael rhai sylwadau ar y brig. Rwy'n cynnwys y ddwy lyfrgell, fel y rydym wedi bod yn gyffredin. Ac yn awr gadewch i mi sgroliwch i lawr at y cyntaf llinellau gwirioneddol o god. Llinell 17 yn cychwyn brif. Llinell 21 ac 20 mae faint o boteli o gwrw fod ar gael? Ac yna yr wyf yn galw GetInt. Ac yn awr mae gen i dipyn o wiriad bwyll. Felly, mae hyn yn gonfensiwn y byddwn yn awr yn dechrau mabwysiadu i yn fwy trylwyr gwirio fewnbwn y defnyddiwr. Weithiau, dim ond nad ydych am i ysgogi nhw eto ac eto ac eto. Os yw'r defnyddiwr sgriwiau i fyny ac nid yw'n cydweithredu, dirwy. Roi'r gorau iddi ac nid yn unig yn delio â nhw. Ac felly dyna beth rwy'n ei wneud yma. Os n yn llai nag 1, Im 'jyst yn mynd i gweiddi ar y defnyddiwr, "Mae'n ddrwg gennym, sy'n gwneud dim synnwyr." Ac yna dwi'n mynd i fympwyol dychwelyd 1. Felly, unwaith eto, mae hyn yn unig yw confensiwn i ddod i arfer â. Am y tro, fynd ag ef ar ffydd. Ond hyd yn hyn, rydym wedi bob amser wedi dychwelyd 0, oherwydd rydym wedi dweud yn dychwelyd 0 yn dynodi beth? GYNULLEIDFA: Llwyddiant. DAVID J. Malan: Llwyddiant, dyna i gyd. Felly nawr ein bod o'r diwedd yn dechrau meddwl am nad ydynt yn llwyddiannau - mewn geiriau eraill, achosion cornel, amodau gwall - yn awr yr wyf yn cael cyflenwad diddiwedd, neu o leiaf 4000000000 bethau posibl sy'n gallu mynd o'i le yn fy rhaglenni. A allaf ddechrau eu dosrannu rhifau unigol. Yn awr, yn gyffredinol Mae'n ddigonol i ychydig dychwelyd rhywbeth arall na 0. Felly, rydym yn mynd i wneud dim ond dychwelyd 1 am nawr. Ond y rheswm dros ddychwelyd 1 yw bod cyn gynted ag y byddwch yn dychwelyd 1, dyfalu beth sy'n digwydd i weddill y rhaglen? Mae'n atal. Dyna ni. Felly y ffaith fy mod i'n dychwelyd 1 yn effeithiol byr-cylched gweithredu rhaglen hon fel bod Bydd dim byd yn is llinell 27 barhau i weithredu. Cyn gynted ag y ffurflenni prif, dyna ni. Mae pob hawl, felly os yw'r defnyddiwr yn cydweithredu ac rydym yn cyrraedd llinell 30 oherwydd eu bod yn teipio mewn nifer dilys, dyma yw fy gweithrediad y gân. Felly, tro cyntaf i mi argraffu gymeriad Newline, dim ond ar gyfer estheteg. Bellach, mae gen i ddolen. Ac yn sylwi fy mod yn gwneud pethau mewn ychydig o gyfeiriad gwahanol. Nid oes gennyf i wneud llai na, nid oes gennyf i wneud + +. Gallaf ddweud yn hytrach ymgychwyn newidyn i, ei osod yn gyfartal i n, y rhif y defnyddiwr deipio i mewn, yna gwnewch y canlynol, felly hir fel fi yn fwy na 0, yna i - unwaith y byddwch wedi orffen un fersiwn o'r ddolen. Felly gallwn cyfrif i lawr gan ddefnyddio gyfer dolen yn ogystal. Yn awr, mae hyn yn 'n bert lawer yr wythnos 1 pethau yn awr, gyda printf. Felly, print "poteli% d o gwrw ar y wal." Print "% d boteli o gwrw. "" Cymerwch un i lawr, ei drosglwyddo o gwmpas. "Print "% Poteli d o gwrw ar y wal." Felly mae'n dal i fod d%, ond sylwi bod y ddadl i printf yn newid. Ar ôl y coma, yr wyf wedi i, oherwydd yr wyf am ddweud 99. Ar ôl y coma, yr wyf wedi i, oherwydd yr wyf am ddweud 99. Ar ôl y coma, mae gennyf i - 1, oherwydd yr wyf am ei ddweud 98 yn y fersiwn gyntaf, ac yn y blaen. Ac yn awr i lawr yma, Fi jyst cael rhywfaint o sylw bach dwp. Ac yna llinell 42, yr wyf yn dychwelyd 0 gan gonfensiwn, gan ddynodi bod popeth yn iawn. Felly beth os wyf goofed? Beth allai camgymeriad cyffredin yma fod? Wel, beth os wyf yn ddamweiniol ddweud yn dda, yr wyf yn awyddus i gyfrif i lawr i 0, rwyf am 0 boteli o gwrw ar y wal? Felly, yr wyf yn dweud, i yn fwy na neu'n hafal i 0. Beth sy'n mynd i fod yn symptom fy mod yn awr yn gweld os byddaf yn ail-grynhoi beer1 a'i redeg? GYNULLEIDFA: Negyddol. DAVID J. Malan: Yeah, ei fod yn gonna fynd yn negyddol. Mae hwn yn wall oddi-wrth-un, yn hynod gamgymeriad cyffredin i wneud. Gadewch i ni mewn gwirionedd yn mynd yn ôl at y ffenestr derfynell ac yn ei wneud yma, fel y gallwn weld mwy ar y tro. Rhowch, 99 botel o gwrw. Close, ond aethom erioed mor ychydig yn rhy bell. Rydym yn canu y gân yn rhy bell i lawr, fel bod gennym yn awr yn cyrraedd y rhif negatif. Felly nid yw'n hollol gweithio. Mae pob hawl, fel y gallwn yn hawdd atgyweiria bod trwy fynd yn ôl at y ffordd y bu. Ond beth yw rhai cyfleoedd nawr ar gyfer gwella? Wel, gadewch i mi agor beer2.c a sgroliwch i lawr yma ac yn cymryd edrych ar y fersiwn. Beth yw'r peth cyntaf sy'n neidio allan arnoch chi fel wahanol yn y fersiwn yma? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah, felly dim mwy i, gan ei fod yn digwydd i mi eich bod yn gwybod beth, rwy'n gofyn i'r defnyddiwr ar gyfer n, ac yna rwy'n gosod i cyfartal i n, ac yna rwy'n newid i, ond dydw i byth cyffwrdd n eto. Felly, yr hyn y mae'r Heck oedd y pwynt ydych yn dyrannu 32 o darnau o'r enw fi jyst er mwyn i mi gael newidyn gwahanol? Felly, yn yr achos hwn, yr wyf fath o gydnabod bod diangen nodwedd dylunio. Ac yr wyf yn awr rwy'n mynd i ddweud tra n yn fwy na 0, ewch ymlaen ac argraffu yr un gân, gan fynd heibio i n i printf fel y ail ddadl, ac n - 1 fel yr ail ddadl i lawr yma. Ac yna ar bob fersiwn o'r ddolen, mynd yn ei flaen a dim ond lleihau a n ei hun. Yn awr, swyddogaethol, mae'r rhaglen hon yn mynd i fod yn union yr un fath. Os byddaf yn teipio yn 99, n yn dechrau am 99. I lleihau a, lleihau a, lleihau a, lleihau a. Rydw i'n mynd i gael yr holl ffordd i lawr i "Un botel o gwrw ar y wal, un botel o gwrw. Cymerwch un i lawr, pasio o gwmpas. 0 boteli o gwrw ar y wal. "Y diwedd, oherwydd yr oedd cael y cyflwr cywir. Mae'n fwy na 0. Doeddwn i ddim yn gwneud y camgymeriad hwn. Felly, sydd yn well, fersiwn un neu fersiwn ddau? Felly yr wyf yn clywed criw o tuchan i ddau. Pam ddau? Beth sy'n bod? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: O, iawn. Felly, ni fydd yn mynd o dan 0, ond cofiwch, yn fersiwn un, y na fydd y fersiwn gwreiddiol cywir yn mynd o dan 0 chwaith. Felly, cofiwch mai hwn yw'r fersiwn gywir. Felly, gadewch sydd o leiaf yn cymharu'r ddau fersiwn cywir. Beth dadl o blaid fersiwn dwy yn, mmm, yn well? Yeah? GYNULLEIDFA: Mae'n defnyddio llai o le. DAVID J. Malan: Iawn, felly mae'n defnyddio llai o le, dde? Tra bod un fersiwn a ddefnyddiwyd 32 catiau gyfer n, ac yna un arall 32 catiau am i. Fersiwn ddau yn unig yn defnyddio 32 catiau gyfer n, fel y ymddangos i fod yn fantais. Meddyliau eraill? A oes unrhyw un am ddadlau o blaid un? Yeah? GYNULLEIDFA: Mae'n rhaid i chi ddefnyddio llinell ychwanegol o god ar gyfer n -. DAVID J. Malan: Iawn, yn sicr. Felly, mae hynny'n deg. Felly, mae hyn yn unig, o leiaf i mi - Yr wyf yn golygu, mewn gwirionedd mae hyn yn teimlo ychydig yn anniben, y ffaith bod Ni allaf datrys o grynhoi fy holl rhesymeg mewn un llinell hardd, y ddolen i, fel y ddolen am wneud hynny. Yma, yr wyf yn fath o rhaid iddynt dacio ar hyn n - ar ddiwedd y ddolen, oherwydd mae'n rhesymegol angenrheidiol. Ond mae'n fath o rhwbio i mi y ffordd anghywir, dim ond oherwydd ei fod yn ymddangos ar wahân i'r rhesymeg hyd yma, er, unwaith eto, ei fod yn angenrheidiol. Meddyliau eraill? Yeah? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah. Felly beth os ydych yn lle hynny, ar ddiwedd y gân, yn awyddus i argraffu allan eto enw'r gân? Fel "Diolch am chwarae 99 botel o gwrw", neu rywbeth gwirion fel 'na? Ond y pwynt yw, rydych am gael mynediad at y gwerth gwreiddiol. Mae'r ffaith eich bod wedi treiglo neu newid n ar bob iteriad ac felly wedi dinistrio ei werth gwreiddiol golygu na allwch wneud hynny ar y diwedd. Yn awr, gellir dadlau, yn amlwg nid oes eisiau ei wneud hynny yn y rhaglen. Felly sy'n gofalu? Ond mae hynny'n bwynt dilys iawn. Ac i fod yn onest, does neb wir yn dde ateb yma. Maent yn ddau yr un mor gywir. Gallwn fod yn argyhoeddedig naill ffordd neu'r llall. Byddaf yn dweud bod, yn gyffredinol, mae'n egwyddor dda os ydych yn gofyn i'r defnyddiwr ar gyfer rhai werth ac rydych yn ei storio mewn newidyn fel n, yn union fath o ran egwyddor, mae'n debyg da i gadw hynny o gwmpas. Ac unrhyw ddata rydych am i addasu eto ac eto, dim ond rhoi eich hun copi o'r amrywiol, dim ond er mwyn i chi cael mynediad at y gwreiddiol. Rydych yn treulio 32 catiau mwy, ond y realiti yw hyn yn cyfrifiadur wedi, fel, dau gigabeit o RAM y dyddiau hyn, ac rydym yn hollti blew dros 32 ddarnau? Really Nid yw mor bwysig â hynny. A hyd yn oed ar y ddyfais yma, gyda hanner gig neu gigabyte o RAM, 32 darnau yn erbyn 64 did, Nid yw mor bwysig â hynny. Yn sicr heddiw, mae'n mynd i fod yn ffordd llethu gan faint y rhaglen ei hun, sydd yn mynd i fod yn gannoedd o kilobytes, os nad ychydig megabeit, y dyddiau hyn. Pryderon Felly rhesymol, nid oes un ateb cywir. Ond o leiaf y rhai yn y meddyliau dylai hynny ddechrau i mynd drwy eich meddwl? Oherwydd yn pset 0, er ein bod ni wir yn disgwyl yn unig cywirdeb, neu o leiaf ymwrthod namau gwahanol efallai eich bod wedi dod ar draws, wrth inni symud ymlaen, dyluniad yn mynd i fod yn agwedd arall allweddol, y ddau o ysgrifennu cod a hefyd ein gwerthuso cod. Ac felly o leiaf yn rhoi meddwl i bethau fel hyn. Ac nid yn unig oherwydd y gwaith rhywbeth yn golygu ei fod yn dda, nid yw'n golygu ei fod yn chynllunio'n dda. A dyna un o'r pethau y cymrodyr addysgu a Bydd setiau problem yn ein helpu canfod rhan dros gyfnod o amser. Wel, beth am, gadewch i ni ddweud, y fersiwn yma? Gadewch i mi wneud rhywbeth ychydig yn sexy yma mewn munud. Yn gyntaf gadewch i mi gael gwared o hyn. Ac yn awr gadewch i ni atgyweiria hon broblem gramadegol. Felly, yn y fersiwn hwn, rwyf am osod y gramadeg fel bod, yn hytrach na dim ond dweud s cromfachau, fel "potel" neu "poteli" - Nid wyf am i dorri y gornel - Rwyf hefyd yn awyddus i ddeinamig argraffu'r gair "poteli" neu "potel", a thrwy hynny ddefnyddio bachau rhain% s heddiw. Felly, mae angen i mi amodol wirio beth yw gwerth i. Ac os yw'n 1, yr wyf am ddweud "potel", ac os yw'n unrhyw beth arall, yr wyf am ei ddweud "poteli". Felly, gadewch i ni geisio gwneud hyn. Felly, os fi == 1, yna gadewch i mi fynd yn ei flaen ac yn datgan - Mae arnaf angen llinyn, felly gadewch i mi wneud a1 llinyn, am ei fod y llinyn cyntaf i mi poeni am hyn o bryd. Rydw i'n mynd i ddweud "potel". Ac yna, gadewch i ni weld, llinyn s2 - a byddaf yn esbonio ble dw i'n mynd mewn eiliad - "Poteli." Felly dwyn i gof bod, yn y gân, mae angen i ni allu i argraffu pethau, dau air gwahanol o bosibl. Felly, os ydym yn edrych yn ôl yma, yn sylwi bod pan fyddwn yn mynd i yr enghraifft hon yma, "dwy botel o gwrw ar y wal, dwy botel o gwrw, yn cymryd un i lawr, pasio o gwmpas ", yr wyf eisiau y llinell hon pedwerydd yn awr yn dweud "un botel o gwrw ar y wal ". Felly, yr wyf angen i chi benderfynu, ydw i'n eisiau dweud" poteli "neu "Potel"? Felly dw i'n mynd i ddweud fympwyol, popeth yn iawn, Rydw i'n mynd i bellach yn datgan newidyn a elwir a1, llinyn un, mae hynny'n mynd i gael eu plygio i mewn yma ac yma, am fod y geiriau bob amser yn union yr un fath, dim ond oherwydd y natur y gân. Ac yr wyf i'n mynd i alw a2 beth bynnag air yr wyf eisiau pen draw yn ymddangos i lawr yma. Yn awr, yn llythrennol, 99 gwaith allan o 100, mae'n mynd i fod yn un fath yn y ddau o'r achosion hynny, oherwydd 3 yn lluosog, 2 yn lluosog, 4 yn lluosog. Ond yn yr achos hwn gornel, lle'r ydym yn cael i 2 ac yna 1, neu hyd yn oed 1 ac yna 0, yr wyf angen y rhesymeg. Felly, rhaid i mi dreulio rhywfaint o amser yn fy cod yn cael yr hawl honno. Felly, os wyf yn gwneud hyn, os fi == 1, yna s1 a bennwyd yn hafal i "potel" ac a2 cyfartal i "poteli", oherwydd bydd hyn yn am 1 Bydd botel, ac mae hyn yn ar gyfer 0 poteli. A hyn yma, beth mae hyn yn ei gynrychioli? Dim ond i fod yn glir. Mae hyn yn unig sylw. Felly, mae'r ffaith y gallwch gael un llinell sylwadau yn golygu eich bod Gall eich côd fel hyn, ond un arall cyffredin patrwm, hefyd, yw os oes gennych ymadrodd super-byr ydych am roi eich hun a 'i' ychydig yn fwy darllenadwy i roi yn iawn ar ddiwedd y llinell o god, gallwch hollol gwneud rhywbeth fel hyn. Felly, yn awr beth os ydw i'n gwneud hyn? Arall os na fi yn hafal i 1. Felly bang yn dychwelyd - pwynt ebychnod ei adnabod fel "bang". Felly bang = 1. Felly, os na fi yn hafal i 1, beth ddylwn i ei lle hynny am ei wneud? Wel, y gair cyntaf i mi am fod yn beth? Felly dylai llinyn 1 yn "poteli" ar gyfer poteli lluosog, ac yna bydd hyn yn lluosog "poteli" yn ogystal, am y tro. A byddwn yn gweld a yw hyn mewn gwirionedd yn cael i ni lle rydym eisiau mynd. Felly, yn awr os wyf yn sgrolio i lawr yma, sylwch fy mod yn plygio i mewn nid yn unig i, ond s1. Rwy'n plygio i mewn i ac s1. Ac yna i lawr yma, rwy'n minws 1, sydd yr un fath â o'r blaen, ond a2. Mewn geiriau eraill, yr wyf am i'r gair Saesneg i newid yn seiliedig ar y rhesymeg. Nawr, mae eisoes rhai problemau yn y cod hwn. Beth yw torri eisoes allan o borth yma? Yeah? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yn union. Felly, yr wyf eisoes wedi sathru y wers o gwmpas. Felly, yr wyf wedi datgan S1 ac S2, ond rwyf wedi gwneud y tu mewn o braces cyrliog, sy'n golygu yeah, bydd y cod hwn yn gweithio i fyny tan llinell 42, ond cyn gynted ag y taro llinell 43, dyfalu beth na bellach yn bodoli? Wel, dyfalu beth mwyach o ran cwmpas - nid adran 1 neu a2. Felly mae'n rhaid i atgyweiria hon. Felly, gadewch i mi ddileu'r datganiadau. A byddaf yn gadael yr enwau amrywiol ac yn dileu hyn yma a dilëwch y fan hyn. A dylai ym mha llinellau Fi 'n sylweddol yn datgan y pethau hyn? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah, felly yn ôl pob tebyg dde i fyny yma, 33-ish. Felly, a1 llinyn ac yna llinyn a2. Ac mae'n troi allan, gallaf wneud hyn. Os ydych yn datgan dau newidyn o'r un math, alli 'n weithredol jyst arfer coma a gwneud hynny yn C. Mae pob iawn, felly rwyf bellach wedi dau newidyn - S1 ac S2. Rwy'n eu dosrannu gwerthoedd yn y amodau yma, neu yma. Ac yna rwy'n eu defnyddio i lawr isod. Pa mor dda mae hyn yn awr yn mynd i weithio? Wel, mae'n dal i fod yn bygi ychydig, ond gadewch i ni yn o leiaf yn gweld pa mor bell yr ydym wedi gotten. Felly, gadewch i mi fynd yn ei flaen ac yn gwneud beer3. A yw hyn yn beer3? Yep, mae hyn yn beer3. Ac yn awr gad i mi fynd yn ei flaen ac yn rhedeg beer3. 399 99. Mae'n debyg y gallwn sgip y rhan fwyaf ohonynt. Ac i lawr yma, edrych ar hynny. "Un botel o gwrw ar y wal, un botel o gwrw, cymryd un i lawr, ei throsglwyddo o gwmpas, 0 boteli o gwrw ar y wal. " Ond dw i'n tynnu eich sylw at dim ond hanner y datrysiad. Math o sgriwio i fyny yma. Felly, mae'n ymddangos bod yr achosion yn codi pan cornel i yn dychwelyd yr hyn a ddau werth? GYNULLEIDFA: 2, 1. DAVID J. Malan: 2 ac 1. Dyw hi ddim yn 1 ac nid 1. Mae'n mewn gwirionedd dim ond y ddau olaf penillion y gân hon. Felly, beth ddylwn i ei lle hynny am ei wneud? Felly, ymddengys fy mod wedi dal yr achos lle os fi yw == i 1, yna bydd y gair cyntaf yw "potel", ond mae'r ail air yw "poteli". Ond yma, rydw i eisiau newid hyn i fod == 2. Ac os yw hyn yn wir, beth ddylwn i ei eisiau gair cyntaf fod? GYNULLEIDFA: "Poteli". DAVID J. Malan: "Poteli", felly ar gyfer dwy botel. Ac yna dylai hyn gair yma fod yn - GYNULLEIDFA: "Potel". DAVID J. Malan: "Potel", unigol. Mae pob hawl, gadewch i ni chwyddo allan, ewch yn ôl dros yma, ail-redeg gwneud, ail-redeg beer3, math 99 eto. Iawn, "fai Segmentiad (craidd gadael)." Beth ydw i wedi ei wneud yn anghywir? GYNULLEIDFA: Nid oes gennych werth [Anghlywadwy]. DAVID J. Malan: Ah, pwynt ardderchog. Mae pob hawl, felly beth sydd o'i le yma? Felly wall, ac rydym yn wir yn mynd i weld hyn yn eithaf ychydig o weithiau yn y dyfodol, yn fwriadol. Ond ar hyn o bryd, beth mae hyn yn ei olygu mewn gwirionedd? Mae wall bron bob amser yn golygu bod gennych ceisio rywsut i gael mynediad cof, RAM yn eich cyfrifiadur, nad ydych yn berchen, nad ydych mewn gwirionedd gofyn i'r system gweithredu ar gyfer. Felly, yn yr achos hwn, sylwi ar yr hyn yr wyf wedi ei wneud, sydd yn ddiffygiol yn fy rhesymeg. Rwyf wedi neilltuo S1 ac S2 gwerth os fi yn hafal i 1. Rwyf hefyd wedi gwneud hynny os fi yn hafal i 2. Ond nid wyf wedi gwneud hyn yn y nifer anfeidraidd o eraill posibiliadau - yn benodol, 3 neu 4 neu dot, dot, dot, 99. Felly, gallai un ateb ar gyfer hyn dim ond gadewch i ni fod yn oes gennych gyflwr arall. A gadewch i mi fynd i mewn yma a dweud a1 gyfartal - beth ddylai fod yn fan hyn? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: "Poteli", oherwydd yn yr achos cyffredin, mai dim ond yr un peth. Felly, yn dychwelyd Dyfyniadau, "poteli." Felly, er lluosog poteli, ac yna i fyny yma, ar gyfer poteli lluosog. Iawn, felly, yn awr gadewch i mi fynd yn ôl at fy ffenestr terfynell, ail-grynhoi, ail-redeg. 99. Whew. A gadewch i ni wneud gwiriad pwyll gyflym. Yn dechnegol, byddem yn awyddus i ddarllen pob un o'r rhain i wneud yn siŵr eu bod yn gywir, ond gadewch i ni edrych ar leiaf y tramgwyddwyr hysbys. 3 potel, 2 poteli, 2 poteli, 1 potel, 1 potel, 0 poteli. Rydym yn ymddangos i fod wedi o leiaf sefydlog ni am y tro. Ond mae'r dal yma yw bod yr hyn a llanast ofnadwy duw mae hyn yn dim ond i ddatrys dwp un cymeriad manylion gramadegol. Felly mae math o reswm fy mod yn torri y gornel gynharach, oherwydd ei fod dim ond yn gyfan gwbl blino gorfod ysgrifennwch y cod lawer. Ond mae'n troi allan fod yna ffyrdd ychydig yn fwy cain o mynegi un peth yn union. A gallwn wneud hyn fel a ganlyn. Gadewch i mi adael hyn ar y sgrîn am funud a gyflwyno rhywbeth a elwir fel gweithredwr teiran. Mae hyn yn fath o un-leinin sydd wedi golygu dim ond er mwyn gwneud ein yn byw yn sexier bach, fel yr addawyd. Ac yr wyf i'n mynd i wneud hyn fel a ganlyn. Rhowch i mi llinyn o'r enw a1, a gadewch i mi neilltuo fel a ganlyn. (I == 1)? "Potel", fel arall "poteli". String a2 cael (i == 2)? "Potel", fel arall "poteli". Felly, beth felly yw'r gwahaniaeth yma? Mae'r ddwy linell o god, yr wyf yn dadlau, yn gallu disodli'r y llanast cyfan. Felly, galwaf ei fod yn llanast, dim ond oherwydd ei fod yn fath o rhwbio mi ffordd anghywir ei fod yn gymaint o linellau o god. Ddim yn anghywir. Dyw hi ddim yn dylunio gwael. Fel, mae hyn yn berffaith gywir ac yn berffaith iawn. Ond chodio yn cael diflas os oes rhaid i fynegi eich hun fel damn penodol eto ac eto ac eto gyda syml senario fel hyn. Felly C mae rhai llwybrau byr, fel hyn. Felly, mae hyn yn ei hanfod yn ei ddweud datgan llinyn o'r enw a1 ac neilltuo naill ai gwerth hwn, neu y gwerth hwn os fi yw == - ddrwg gennym, dylwn ddweud hyn yn fwy clir. Ddatgan a1 amrywiol, pennu ei gwerth hwn os yw hyn yn wir. Fel arall, caiff y cofnod ei gwerth hwn. Felly, mewn geiriau eraill, mae hyn yn fath o ffordd un-llinell dweud os arall ond yn gwneud aseiniad ar hyd y ffordd. Felly, os fi yw 1, ac yna mynd yn ei flaen ac yn galw hyn yn "potel". Ac yna mae hyn arall, yn ei alw'n "poteli". Yn y cyfamser, a2, mae'r ail air y mae angen i ddiffinio, os fi yn hafal i 2, gallwn eich gosod a2 i "potel". Fel arall, gosodwch i "poteli". A beth mae hyn yn golygu yn awr yw y gallaf fynd drwy'r hyn a dileu pob un o'r hynny linellau o god. Ac wrth ddweud, braidd yn chwerthinllyd, fod hyn yn awr yn sexier, mae'n sexier yn y math o synnwyr arddull. Mae'r ffaith bod swyddogaethol, y cod hwn mewn gwirionedd yn mynd i gwneud yr un peth yn union. A hyd yn oed er y gallai fod yn edrych ychydig yn cryptig yn gyntaf olwg, oherwydd nid ydym wedi gweld y lluniad o'r blaen, yr wyf i wedi dadlau ei fod yn y pen draw yn mynd i fod yn gymaint mwy ddarllenadwy ac felly yn llawer haws i ni fodau dynol i ddatrys y deall, oherwydd yn awr gallwch ddarllen y cod i gyd ar un llinell. Mae'n dal i fod yn debyg o ran ysbryd i yr os, lle bo hyn yn cyflwr ac yna mae hyn yn beth sydd y tu mewn i'r os a hyn yn yw'r hyn y tu mewn i'r arall. Ond gallwn wneud hyn dim ond yn llawer yn fwy cain. Ac os wyf yn awr yn mynd yn ôl at fy terfynell, ar ôl dileu pob o'r rhai llinellau ac yn eu lle gyda dim ond y ddau, ail-grynhoi, ail-redeg boteli o gwrw gyda 99, hysbysiad bod fy gramadeg, mewn gwirionedd, dal yn gywir. Felly eto, rhywbeth i ddechrau. 2 botel o gwrw, 1 botel o gwrw. Yn edrych yn iawn. Yeah. Felly, mae gennym ateb cryno llawer mwy. Felly, mae hyn, hefyd, wrth i chi gael mwy cyfforddus nid gyda C, anghenraid gyda'r pset cyntaf neu hyd yn oed yn ail, ond sylweddoli y gall y lluniadau yn ein galluogi i wneud pethau byth yn fwy cain. Nawr gadewch i ni wneud un peth arall yma. Gadewch i mi fynd yn ei flaen ac yn agor i fyny return1.c. Nawr gadewch i ni ddechrau i ddatrys problem arall mewn ffordd sy'n yn caniatáu i ni ysgrifennu cod yn fwy soffistigedig. Felly dyma raglen bach syml sydd â'r diben mewn bywyd yw i gynnydd gwerthoedd. Ac mewn gwirionedd, gadewch i ni gymryd cam yn ôl. Gadewch i mi wneud hyn â llaw. Gadewch i mi yn cynnwys ac yn int phrif (gwag). A gadewch i mi galw hyn yn increment.c. A beth ydw i eisiau ei wneud? Rydw i'n mynd i fynd yn ei flaen a dweud rhywbeth fel - byddwn yn galw'r rhifau yr un fath - x int. Felly x int yn cael 2; x printf yw%, d llinell newydd, x. Felly, yr wyf i'n teipio yn gyflym, ond math o bethau cyfarwydd yn awr. Wedyn dw i'n mynd i wneud x + +. Wedyn dw i'n mynd i argraffu bod un frawddeg eto. Ac yna dwi'n mynd i ddychwelyd 0 dim ond i roi'r gorau i'r rhaglen. Mae pob hawl, felly mae hon yn rhaglen sy'n codiadau yn rhif. Mae'n cyntaf yn mynd i ymgychwyn rhywbeth i 2, ac yna mae'n mynd i gynnydd ac argraffu eto. Felly, gadewch i redeg cynyddiad, rhaglen hynod o syml. Ond mae'n debyg nawr mod i am i giwb y gwerth, felly rhywbeth braidd yn fympwyol. Ac yr wyf mewn gwirionedd yn awyddus i wneud x yn cael y ciwb ohono. Felly, gallwn ddefnyddio hyn a elwir y swyddogaeth pow, ond nid wyf yn wir yn gwybod lle y bo hynny'n eto. Felly dw i'n mynd i wneud hyn y ffordd hen-ffasiwn. x gwaith y mae hyn yn cyfateb x amserau x x amser. Felly rwy'n cubing y gwerth, ei luosi ei hun unwaith eto ac eto ac eto, er mwyn i ni gael y pŵer o 3 yn yr achos hwn. Felly nawr, dylai'r rhifau y dylwn argraffu fod, fel y byddwn yn gweld yma - gwneud cynyddiad, felly mae'n mewn gwirionedd yn ddim wir gynyddran anymore, ond byddwn yn gadael y enw yn unig - 2 ac yna 8. Yn awr, mae gennym y dechreuadau cyfle i fireinio yma, lle y peth cubing o luosi nifer Efallai ei ben ei hun gan ei hun drwy ei hun yn teimlo fel hyn yn unig yn ddefnyddiol i gael fel swyddogaeth, yn debyg iawn i rywun benderfynu mlynedd yn ôl - eich bod yn gwybod, math o ddefnyddiol os yw un ohonom yn eistedd i lawr ac yn ysgrifennu printf fel y gall gweddill y byd yn ei ddefnyddio, pam nad ydym yn eistedd i lawr ac ysgrifennu swyddogaeth o'r enw ciwb sy'n gwneud hyn cubing i ni felly nid ydym yn rhaid i chi'ch gweithredu'r syniad o cubing gwerthoedd yma? Felly, enghraifft syml, ond gadewch i ni fynd yn ei flaen ac yn defnyddio hyn yw bod yn cyfle i ysgrifennu ein swyddogaeth ei hun. Hyd yn hyd yn hyn, rydym wedi defnyddio dim ond y prif, ac rydym wedi defnyddio eraill Nid yw swyddogaethau pobl, ond rydym wedi ysgrifennu ein hunain. Felly, yma rydym yn mynd. Rydw i'n mynd i fynd yn ei flaen ac ysgrifennu swyddogaeth o'r enw ciwb. A dwi'n mynd i gael ei gymryd mewnbwn. Felly, ei fewnbwn yn mynd i fod yn gyfanrif. A beth y mae'n mynd i'w wneud? Mae'n mynd i ddatgan allbwn int = mewnbwn gwaith mewnbwn amser mewnbwn. Ac yna mae'n mynd i ddychwelyd y cynnyrch hwnnw. Ac yna mae'n rhaid i mi fod yn benodol yn awr. Mae'r swyddogaeth hon yn mynd i ddychwelyd int. Felly dyma felly yw sut y byddech yn ysgrifennu eich swyddogaethau ei hun. Yn gyntaf benderfynu beth yw'r enw eich swyddogaeth yn mynd i fod. Ac yn gyffredinol, rhywbeth esboniadol yn dda, felly byddaf yn alw ciwb. Yna mae'n rhaid i chi nodi yr hyn y mae'n mynd i ddychwelyd, beth sydd ei allbwn yn mynd i fod. Ac nid oes gennym opsiynau fod llawer eto. Int, torgoch, arnofio, bool, llinyn. Am y tro, dwi'n mynd i gadw gyda int, oherwydd yr wyf am ei i ddychwelyd yn gyfanrif. Yna rhaid i chi nodi beth yw ei fewnbwn, os o gwbl, yn cael eu. Ac os ciwb yn cymryd dadl, yn cymryd rhywbeth rhwng cromfachau, rhaid i chi roi y ddadl enw fel y gallwch alw rhywbeth wrth i chi weithredu neu ysgrifennu swyddogaeth hon, ac mae'n rhaid i chi roi cynnig math, sydd yn yr achos yn mynd i fod yn int. Felly, yn fyr, ciwb yn swyddogaeth sy'n cymryd cyfanrif fel mewnbwn a ffurflenni cyfanrif fel allbwn. Felly, beth mae'n ei wneud gyda mewnbwn hwnnw? Wel, yn unol 14, yr wyf yn datgan allbwn amrywiol o'r enw, ac yr wyf neilltuo yn y gwerth, mewnbwn gwaith mewnbwn amser mewnbwn. Ac yna dof yn ôl allbwn. Felly, sut ydw i'n defnyddio hyn felly? Beth ydw i'n newid y cymeriadau a amlygwyd ar-lein 7 yn cael eu, yn eich barn chi? GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Yeah, felly ciwb o x. Felly x yn newidyn, sy'n golygu ei fod yn dal rhywfaint o werth. Yn ffodus, mae o gyfanrif fath. Ac oherwydd x yn int, sy'n golygu y gallaf ei drosglwyddo i mewn i ciwb. A hyd yn oed er fy mod i'n bwysicach gwerth x gyda'r gwerth x ciwb, fel sydd wedi digwydd hyd yn hyn, unrhyw tro y byddwch yn fod arwydd cyfartal a llinell o god, y stwff ar y dde yn cael ei gweithredu a wedyn yn cael ei neilltuo i'r gwerth ar y chwith. Felly, trefn y gweithrediadau fel y byddem yn gobeithio. Felly, mae hyn yn gweithio? Wel, gadewch i mi fynd i lawr yma. Gadewch i mi agor fy ffenest terfynell. Gadewch i mi yn gwneud cynyddiad, Enter. Ystyr "datganiad ymhlyg o 'ciwb' swyddogaeth yn annilys yn C99. "Fel o'r neilltu, C99 yn cyfeirio at y C iaith fel ei fod yn diffinio yn 1999, a oedd yn ddiweddariad dros y fersiwn o 1989, sef diweddariad dros y gwreiddiol. Felly dyna i gyd yw ystyr hynny. Felly, beth mae'n ei olygu bod "datganiad ymhlyg o 'ciwb' swyddogaeth yn annilys? "Mae'n iawn yma. Mae'n iawn yno yn llinell 12. GYNULLEIDFA: [Anghlywadwy]. DAVID J. Malan: Beth sy'n bod? GYNULLEIDFA: Dyw hi ddim yn blaen. DAVID J. Malan: Dyw hi ddim o'r blaen. Felly, mae hyn yw'r peth. C yn fath o dwp, neu crynoadyddion C yn fath o dwp. Maent yn wir yn unig yn gwneud yr hyn a ddywedwch iddynt ei wneud. Ac maen nhw, yn arbennig, ond yn darllen eich cod top i'r gwaelod, chwith i'r dde. Felly, os y compiler, Clang, yn darllen eich cod, llinell 1, mae'n ffigurau allan sut i wneud hyn. O, dyma brif dod. Iawn, gadewch i mi fynd yn ei flaen ac yn datgan x amrywiol. Gadewch i mi argraffu rhywbeth. Llinell 7, yr hyn y mae'r Heck yn ciwb? Nid yw'n datgan yn stdio.h. Nid yw'n dod gyda C. Nid oes gennyf unrhyw syniad beth i'w wneud. Ac felly Clang unig bails ac yn ymddiswyddo â'r neges gwall. Felly gallwn atgyweiria hon mewn dwy ffordd. Gallwn ddysgu Clang beth ciwb yw drwy dim ond symud pan fo'r datganiad yn. Felly yr wyf yn torri a gludo ei ben brif. Nawr yn sylweddoli mai dim ond oherwydd prif bellach yn gyntaf, mae'n gweithredu yn dal yn ddiofyn. Main yn brif. Mae'n 'r ball enw swyddogaeth. Nid oes ots lle mae mewn ffeil. Ond o leiaf yn awr Clang wedi gweld ciwb cyn i mi ei ddefnyddio. Felly, gadewch i ni weld os Clang yn hapusach yn awr. Gwnewch cynyddiad, oedd yn llunio y tro hwn. Gadewch i mi redeg cynyddiad. Ac yn wir, mae'n ymddangos ei fod yn gweithio. Nawr, gallwch ddod o hyd i sefyllfaoedd yn y pen draw lle nid yw'n ymarferol i roi pob swyddogaeth goruwch pob swyddogaeth arall. Byddwch yn mynd yn sownd yn y dolen ddiddiwedd mewn gwirionedd, lle mae hyn yn guy eisiau bod yma ond mae hyn guy angen i fod yno. Felly nid yw hynny bob tro'n gweithio. Felly, diolch byth, C wedi ateb mwy cain. Rydw i'n mynd i roi hwn yn ôl lle yr oedd, dim ond am fy mod well gennych, fel mater o egwyddor, y prif bob amser yn ar y brig, oherwydd mai dim ond braf i weld beth y rhaglen hon gwneud yn ddiofyn. A hyn yr wyf i'n mynd i wneud i fyny yma yn datgan yr hyn a elwir prototeip. Rydw i'n mynd i ail-ddatgan fy swyddogaeth ciwb drwy llythrennol gopïo a gludo. Mewn gwirionedd, nid yw hynny'n llythrennol. Felly, yn llythrennol copïo a gludo llinell 15 i fyny uwchben y llinell 6. Nid oes ots beth mae hyn yn dod i ben llinell i fyny ar. Mae'n digwydd i fod ar llinell 4. Ond mae'n rhaid i chi fod cyn brif. Ond yn sylwi ar y gwahaniaeth. Llinell 4 yn dod i ben gyda hanner colon, sy'n golygu hey, Clang, gymryd fy ngair i am hynny fod yn rhaid wrth swyddogaeth a elwir yn ciwb sy'n cymryd int ac yn dychwelyd yn int. Ond nid wyf yn gonna dweud wrthych beth ydyw eto. Dim ond yn gwybod fy mod yn addo i ddweud wrthych yn y pen draw. Ac yn wir, yn awr ei fod yn iawn bod hyn yn i lawr isod. Felly, mae hyn yn gyffredinol yn well, gan fod yna ar ben eich ffeil, gallwch ysgwyd i ffwrdd, cyflym-tân, un llinell yr un, beth yw enwau eich swyddogaethau hyn, beth yw eu mewnbynnau'n, beth yw eu cynnyrch yn cael eu. Ac i fod yn fwy eglur, mewnbwn yn gyffredinol yn golygu dadl neu paramedr, gyfystyr â'i gilydd. Allbwn yn golygu gwerth ddychwelyd, beth mae'n ei law yn ôl i mi. Felly, yn yr achos hwn yma, ciwb wedi ei ddatgan ar y brig, ond diffinio, a elwir fel arall fel y'i gweithredwyd, ar y gwaelod. Felly nawr gadewch i ni fynd yn ôl yma ac ail-redeg y. Felly nawr gadewch i mi fynd yn ei flaen ac ail-redeg gwneud, ail-redeg cynyddiad. Ac mae'n awr yn ymddangos i fod yn gweithio jyst ddirwya. Felly nawr gallwn fynd ymlaen ac yn ffactor allan rhywbeth fel y cwrw enghraifft, i mewn y fersiwn pedwerydd. Felly, gadewch i mi sgrolio i lawr yma. Ac yn sylwi fy mod yn fath o gymryd y wers hon i galon yn unig yn awr. Mae'r ffaith fy mod yn canu y pennill un fath eto ac eto ac eto, y llinell gorws un yn y gân, yn teimlo hoffi pam nad ydw i'n ffactor allan i swyddogaeth? Ac yn wir, dylai hyn fod yn un o'r cymhellion. Heblaw am y ffaith y gallai rhywun arall yn y byd am i ddefnyddio swyddogaeth ciwb - mae hynny'n rheswm da i ffactor rhywbeth ac ysgrifennwch eich arfer swyddogaeth ei hun - os oes darn o god yn eich rhaglen mai dim ond yn gwneud ymdeimlad cysyniadol, eich bod yn fath o awyddus i roi cynnig enw - fel yn yr achos hwn, corws - yna gallwch ysgrifennu yr un modd hynny fel swyddogaeth ar wahân. Nid oes rhaid i chi ysgrifennu popeth yn y prif os dim ond teimlo glanach i wahanu allan a rhoi enw iddo. Felly, yn yr achos hwn yma, yn sylwi bod gennyf sylw ar ben swyddogaeth hon mai dim ond canu am y nifer penodol o boteli. Hysbysiad yma nad oes angen i mi galw'r rhain yn pethau mewnbwn ac allbwn. Yn wir, y tro hwn Fi jyst galw fy b mewnbwn ar gyfer potel. Ac yn sylwi yma, ddi-rym yn awgrymu beth? Bod corws - GYNULLEIDFA: Nid yw'n dychwelyd. DAVID J. Malan: Nid yw'n dychwelyd gwerth. Ac yn wir, nid yw swyddogaethau oes rhaid i ddychwelyd gwerthoedd. Dim ond Gallant wneud rhywbeth. Gallant gael hyn a elwir yn sgîl-effeithiau, sydd yn yr achos yn unig yw criw cyfan o argraffu ar y sgrin. Felly, yn sylwi bod y cod hwn yma, yr wyf yn llythrennol dim ond dwyn o yr enghraifft flaenorol. Yr unig wahaniaeth yw yn hytrach na defnyddio i fel fy amrywiol, Im 'bellach yn defnyddio b fel fy amrywiol. Felly mae gen i b i lawr yma, mae gennyf b i lawr yma, mae gennyf b minws 1 i lawr yma. Ond mae'r cod yn union yr un fath. Ond dim ond i ddangos i chi'n awr sut y gallwn ddefnyddio hyn, gadewch i mi fynd flaen ac mewn gwirionedd yn newid hyn i fod yn ddolen i. ar gyfer (i int = n; i> n: i -). Felly, yr wyf wedi dwyn hynny o'n enghraifft flaenorol. Yn flaenorol, mae yn llinell 37 a byddwn wedi dechrau canu y gân blino. Ond yn hytrach, Im 'jyst yn mynd yn hyn alw corws o i. Done. Felly, yn awr ym mhob fersiwn o'r ddolen, yr wyf yn galw hyn yn eraill swyddogaeth, corws, fy mod yn digwydd i ysgrifennu. Nid ei ysgrifennu gan rywun arall flynyddoedd yn ôl. Ond corws, yn y cyfamser, yn defnyddio printf i argraffu hyn allan pedair llinell. Ond y ffaith fy mod i'n galw corws eto ac eto mewn ddolen yn golygu fy mod i'n mynd i nôl, yn y diwedd, y gân union yr un fath gan fod gen i hyd yn hyn. Felly, yn fyr, yn awr os byddaf yn edrych yn ôl ar fy cod, er bod swyddogaethol hyn yn gyfwerth, yn sylwi ei fod yn dechrau mynd hyd yn oed yn fwy darllenadwy. Nid wyf yn gwybod yn union pa mor GetInt cael ei weithredu. A dweud y gwir, nid wyf yn gwybod sut corws yn cael ei weithredu. Ond nid yw o bwys i mi. Nid wyf yn poeni, oherwydd yn awr gellir i ryw raddau, fel bod dynol, darllenwch y gwaelod o'r top i. Ac oherwydd bod y swyddogaethau yn cael eu henwi yn ôl yr hyn y maent wneud, fy cod yn gynyddol ddarllenadwy. Ac fel ein rhaglenni yn cael llawer mwy cymhleth - erbyn diwedd y semester, byddwch yn ysgrifennu cannoedd o linellau cod mewn ieithoedd fel PHP a JavaScript ac ati - fe welwch ei fod gymaint yn haws nag i gadw golwg ar hyn rydych wedi'i wneud. A phan fyddwch yn dechrau cydweithio â ffrindiau neu bartneriaid neu gydweithwyr, byddwch yn gallu ysgrifennu llawer mwy rhaglenni enfawr gan ddechrau ymarfer y rhain sylfaenol blociau adeiladu. Felly, gyda hynny ddywedodd, pam nad ydym yn galw ei fod yn ddiwrnod? A byddwn yn eich gweld ar ddydd Mercher. [Cymeradwyaeth]