[Powered by Google Translate] DAVID J. Malan: pob hawl, mae hyn yn CS50, a dyma'r diwedd Wythnos 1, cardiau astudiaeth felly yn a chyfanswm y cyd-ddisgyblion bod gennych eleni yw 745. Ac rydym wrth ein bodd felly i gael cymaint ohonoch yn y cwrs y semester, ond hyd yn oed er bod y cwrs hwn mor fawr, sylweddoli ei bod yn y pethau hyn fel cinio ddydd Gwener, fel oriau swyddfa, 15-person adrannau, ac yn y blaen y yn cael eu olygu mewn gwirionedd i greu'r hyn yn fwy agos amgylchedd. Felly hyd yn oed er efallai y byddwn yn casglu unwaith neu ddwywaith yr wythnos, yma yng Sanders, yn gwybod bod cryn dipyn o'ch profiad yn y cwrs hwn Bydd yn fawr iawn fod yn ymarferol ar ar ochr eich ffrindiau yn y dosbarth a'r staff addysgu. Felly, yma rydym yn mynd, Fall 2012. Felly, yn cofio bod tro diwethaf i ni ddod i ben ar nodyn o anfanyldeb, siarad am y gynrychiolaeth o rifau. Ac rydym yn edrych ar un o'r methiannau a ddigwyddodd, yn y byd go iawn, pan ddaeth i gamddealltwriaeth sut mae cyfrifiaduron yn gweithio. Wel, heddiw byddwn yn edrych eto ar un arall o'r syniadau hynny fel ogystal â pharhau ein trafodaeth ar y cleient CS50 a C a'r hyn y mae'n ei olygu mewn gwirionedd i raglen. Ond yn gyntaf, dim ond cwpl o gyhoeddiadau corwynt. Adrannau yn dechrau ar ddydd Sul, ac wythnos gyntaf bob amser yn dipyn o gychwyn gyflym, oherwydd ein bod jyst got yn eich ffurflenni adran. Rydym yn gwneud yr un peth, yn awr, gyda'r cymrodyr addysgu, yn awr eu bod yn gwybod eu hamserlenni, felly rydym yn anelu, gan Fore Sadwrn, i ddilyn i fyny gyda chi gyda'ch adran aseiniad a TF. Sylweddoli bod byddant yn dechrau y diwrnod nesaf, Dydd Sul neu ddydd Llun neu ddydd Mawrth. Ac yna byddwn yn darparu ar gyfer newidiadau adran wrth iddynt godi yn y dyddiau i ddod. Oriau swyddfa, yn y cyfamser,, unwaith eto, heno, 8 PM 11, yn Annenberg, yn ogystal â nos yfory. Er bod y setiau problem yn gyffredinol oherwydd ar ddydd Iau am hanner dydd, yn sylweddoli bod gennych hyd at bum niwrnod yn hwyr i'w wario, felly ar gael i oriau swyddfa ar ddydd Iau os arian i chi yn un o'r dyddiau hynny yn hwyr a, thrwy hynny, cyflwyno rhywbeth ar ddydd Gwener. Gadewch i mi yn awgrymu bod Scratch ymhlith yr hwyl yn fwy, ymhlith y setiau problem fwy isel allweddol. A byddwn yn hongian ar y dyddiau hynny yn hwyr, yn strategol, dim ond ar gyfer yn ddiweddarach yn y semester pan fydd bywyd yn dechrau cael yn y ffordd gyda midterms a dosbarthiadau eraill. 1 Set Problem, yn y cyfamser, yn cael eu postio ar y cwrs wefan y dydd Gwener hwn, fel y bydd yn daith ar gyfer y cwrs drwy fideo, a fydd yn cael ei ffilmio am 2:30 pm ar ddydd Gwener ac yna ei phostio ar-lein erbyn y diwrnod nesaf. Felly, rydym yn dod i ben ar ddydd Llun. Rwyf am i - mewn gwirionedd, un nodi yma. Oherwydd bod y dosbarthiadau - gan nad Sanders yn union benthyg ei hun i Q & A achlysurol yn ôl ac ymlaen yn hollol iawn, rydym yn yn mynd i roi cynnig ar rywbeth ychydig yn newydd eleni, lle os nad ydych yn gyfforddus codi eich llaw neu 'ch jyst Ni fyddai yn hytrach codwch eich llaw mewn ystafell fel hyn, rydym yn mynd i gael rhai o'r cymrodyr addysgu a CAs staffio cs50.net/discuss yn ystod darlith. Felly, os oes gennych gwestiwn am fy mod yn gwbl aneglur am rywbeth neu os ydych yn chwilfrydig am rai pwnc, ceisiwch ei bostio yno. Dagio gyda label o Ddarlith, ac fe wnawn ein gorau heddiw a'r wythnos nesaf - we'll roi cynnig ar hyn - i maes ei naill ai'n electronig, ar-lein, neu os yw'n teimlo fel y dylem wir yn mynd i'r afael yn en masse, un o'r cymrodyr addysgu neu Bydd CAs godi eu dwylo ac yn gofyn ddienw ar eich rhan. Felly, byddwn yn rhoi hyn yn ceisio gweld pa mor dda y mae hyn yn gweithio. Ond, ar bob cyfrif, yn parhau i godi dwylo fel y byddech yn ei hoffi. Felly, y tro diwethaf rydym yn dangos bod Nid yw 10% neu un rhan o ddeg yw, yn gwirionedd, 0.1, fel chi yn dysgu nifer o flynyddoedd yn ôl. Mae'n mewn gwirionedd, mae gwerth fel hyn. Ond nid yw hynny'n gwbl wir, dde? Rydym yn unig wedi cyfyngiad hwn mewn cyfrifiaduron sy'n golygu, os ydych yn Dim ond swm penodol o cof, RAM, neu fwy yn benodol darnau, wel, dim ond nifer cyfyngedig o bethau y gallwch ei gynrychioli. Er enghraifft, os oes gennym y nifer sero, ac rydym am cynrychioli yn deuaidd, gan ddefnyddio wyth did, lle mae ychydig, eto, yn sero neu'n un, gallem cynrychioli fel 00,000,000. A dyna ychydig yn ddiangen amleiriog. Yn union fel yn y system degol yn y byd go iawn, yn gyffredinol, os ydych chi eisiau ysgrifennu rhif 123, rydym yn pobl na thebyg yn ysgrifennu 00000123 er, swyddogaethol, dyna yr un nifer yn union. Rydym yn unig yn galw heibio zeros blaenllaw, fel petai. Yn deuaidd, gallwn wneud yr un peth. Binary a sero, sero ac deuaidd yn unig yw sero. Dim ond angen ychydig sengl. Ond unwaith eto, mae'r uned mwyaf cyffredin o fesur yn y byd cyfrifiadura yw bytes, wyth did. Dim ond oherwydd bod un bit, 'n bert' n annefnyddiol. Wyth darnau, nid ofnadwy o ddefnyddiol, ond o leiaf mae'n fwy defnyddiol nag un uned o fesur. Felly, gyda wyth did, byddwn fel arfer yn cynrychioli deuaidd. Felly dyma ni yn cael y rhifau sero, un, dau, ac yna, fel Nate wnaeth yn ein fideo ddydd Mercher diwethaf, gallwn barhau i cyfrif hyd at saith, i wyth. Ac yna, os ydym yn defnyddio darnau mwy a mwy, rydym yn Gall gyfrif hyd i anfeidredd. Ond os mai dim ond nifer cyfyngedig o'r darnau, fel y mae yr achos mewn unrhyw system gyfrifiadurol, neu hyd yn oed taflegryn system, wel, yn wir dim ond yn cael swm cyfyngedig o drachywiredd. Felly, os ydych am i gynrychioli'r nifer fel 0.1, yn dda, mae'r gyfrifiadur i ddewis a dethol. Ac os mai dim ond nifer cyfyngedig o rifau gall cynrychioli, gall ddod yn agos at 0.1 i chi, ond ni all reidrwydd yn rhoi i chi yn union y gwerth yr ydych ei eisiau. Ac mae hyn yn un o'r heriau o gyfrifiaduron, o dan y cwfl, diolch byth. Wrth i ni symud ymhellach yn y semester, mae'r rhain yn lefel is manylion dod yn llawer llai diddorol, ond yn sicr mae'r Gellir cymhwyso'r syniadau hyn gael rhywfaint o byd go iawn oblygiadau. Mae un yn hwyl ychydig. Faint ohonoch chi wedi gweld y ffilm Gofod Swyddfa anhygoel? Os nad ydych, dyna eich answyddogol gwaith cartref ar gyfer yr wythnos. Ond yn y Gofod Swyddfa, y cymrodyr yn y ffilm yn cymryd manteisio ar union syniad hwn, ond maent mewn gwirionedd yn dwyn oddi arall movie a allai fod gennych gweld, hyd yn oed flynyddoedd blaenorol. Felly, gadewch i mi roi ychydig eiliadau y trelar gan y ffilm hon anhygoel ac mae hyn yn fawr iawn academaidd berthnasol. [CHWARAE FFILMIAU] A dweud y gwir dwi'n cael eu hyrwyddo. Gallaf raglennu firws a fydd yn RIP bod gosod oddi ar amser mawr. Wel, sut mae'n gweithio? Bob tro y mae trafodiad banc lle mae llog yn cyfrifiadurol, mae miloedd y dydd, y cyfrifiadur yn dod i ben i fyny gyda'r ffracsiynau o cant. Ond nid wyf i'n mynd i wneud unrhyw beth anghyfreithlon. Anghyfreithlon? Samir, mae hyn yn America. Mae'n rhaid i chi dyngu i Dduw. Os nad oes neb yn gwybod am hyn, ond ni, popeth yn iawn? Dim aelodau o'r teulu, dim cariadon, does neb. [Anghlywadwy]. Peidiwch â phoeni, dyn, ni fyddaf yn dweud wrth unrhyw un chwaith. [FFILMIAU DIWEDD] Mae pob hawl, felly efallai fy mod dod o hyd y ffilm hon yn well na'r rhan fwyaf o pobl yma, ond mewn unrhyw achos, y firws sy'n eu bod yn ceisio creu - ac yn y ffilmiau, unrhyw bryd y byddent yn galw rhywbeth firws, ei fod nid yn gyffredinol, mewn gwirionedd firws. Dim ond rhaglen sy'n ysgrifennodd rhywun i wneud rhywbeth. Ac yn yr achos hwn, y guys yn ceisio ysgrifennu rhaglen a gymerodd manteisio ar eu cwmni o'r enw Innotech yn , system gyfrifiadurol lle cyfrifiaduron, hefyd, hyd yn oed pan yn dod ag arian, all o reidrwydd cynrychioli arian yn fanwl. Felly hyd yn oed er y gallai fod gennych $ 0.10 yn eich cyfrif banc, 0.10, wel, efallai y cyfrifiadur mewn gwirionedd yn meddwl bod gennych hyn cents llawer yn eich cyfrif banc. Ac felly beth yw'r guys yn anelu at ei wneud - ac maent yn dwyn y syniad, mae'n troi allan o Superman III, lle Wnaeth Richard Pryor yr un peth - nhw oedd yn eu hanfod rhaglenni ysgrifennu sy'n anelu at gymryd pob un o'r llusgo rhifau, pob un o'r bach, bach, ffracsiynau bach o ceiniogau, ac yn seiffno rhai nad ydynt fel bod y bobl yn unig meddwl, oh, dim ond $ 0.10 yno, ond mae pob un o'r rhai niferoedd llusgo yn y pen draw adio i fyny. Felly, syniad gwych ac mae'n backfired chwerthin llond eu boliau yn y ffilm arbennig. Ond yn y byd go iawn, hefyd, mae yna lawer mwy o bryder goblygiadau y mathau hyn o bethau. Ac un o'r rhesymau i ddeifio i mewn i'r maes cyfrifiadurol gwyddoniaeth, unwaith eto, ei berthnasedd nid i'r gwyddorau peirianneg ei hun, ond dim ond i meysydd eraill yn ogystal. Felly, mae hyn yn edrych yn llai ysgafn ar hyn a all fynd o'i le, ond mae hefyd yn agoriad llygad eithaf, yr wyf yn meddwl, pan ddaw i deall yn union sut hollbresennol dechnolegau fel cyfrifiaduron a rhaglennu neu y dyddiau hyn, ar ffurf meddalwedd. Felly, mae hyn clip nesaf yn golygu mwy na chwe munud, yn parhau lle rydym yn gadael i ffwrdd tro diwethaf, ond yn caniatáu i ni edrych ychydig yn mwy yn fanwl ar ba un bynnag o'r materion hyn. Gadewch i mi neidio ymlaen i ble rydym yn gadael i ffwrdd, a oedd yn iawn yma. Ac mae gennym rhan dau o ddau, am tua chwe munud yma. [CHWARAE FFILMIAU] Plagued dechnoleg fodern roced. Yn 1991, gyda dechrau cyntaf Rhyfel y Gwlff, y Gwladgarwr taflegryn profi fath tebyg o problem trosi rhif. Ac o ganlyniad, 20 o bobl, 20 o filwyr Americanaidd, eu lladd a tua 100 o bobl eraill eu hanafu, pan fydd y Gwladgarwr, a oedd i fod i ddiogelu yn erbyn Scuds dod i mewn, wedi methu i danio taflegryn. Pan ymosododd Iraq lansio Kuwait ac America yn Anialwch Storm yn gynnar ym 1991, batris taflegryn Gwladgarwr oedd defnyddio i amddiffyn Saudi Arabia ac Israel o Irac Ymosodiadau taflegrau Scud. Mae'r Gwladgarwr yn gyfrwng-range yr Unol Daleithiau wyneb-i-awyr system, gynhyrchwyd gan y cwmni Raytheon. Mae maint y ataliwr Gwladgarwr ei hun, mae'n ymwneud â tua 20 troedfedd o hyd ac mae'n pwyso tua 2,000 o bunnoedd. Ac mae'n cario warhead o tua - Rwy'n credu ei fod yn fras £ 150. Ac mae'r warhead ei hun yn ffrwydrol uchel sy'n darnau o'i gwmpas. Mae'r casin y warhead wedi'i gynllunio i weithredu fel fwled. Mae'r taflegrau yn cael eu cynnal pedwar y cynhwysydd ac maent yn gludo gan ôl-gerbyd lled. Mae'r Gwladgarwr gwrth-taflegryn system yn mynd yn ôl o leiaf i 20 mlynedd yn awr. Fe'i cynlluniwyd yn wreiddiol fel amddiffyn taflegryn aer i saethu i lawr awyrennau gelyn, yn y Rhyfel cyntaf y Gwlff. Pan fydd y rhyfel ddaeth draw, y Fyddin eisiau ei ddefnyddio i saethu i lawr nid Scuds, awyrennau. Nid yw'r Llu Awyr Irac oedd cymaint o broblem, ond y Fyddin yn poeni am Scuds. Ac felly maent yn ceisio uwchraddio'r Gwladgarwr. Rhyng-gipio taflegryn gelyn yn teithio ar Mach 5 yn mynd i fod yn heriol yn ddigon. Ond pan fydd y Gwladgarwr ei rhuthro i mewn i wasanaeth, y Fyddin nid oedd yn ymwybodol o addasiad Irac a gwneud eu Scuds bron yn amhosibl i daro. Beth ddigwyddodd yn y Scuds a oedd yn yn dod i mewn yn ansefydlog. Roeddent yn wobbling. Y rheswm am hyn oedd y Iraciaid, er mwyn cael 600 cilomedr allan o taflegryn ystod cilomedr 300, cymerodd pwysau allan o'r warhead blaen a gwneud y warhead ysgafnach. Felly, yn awr y Gwladgarwr sy'n ceisio dod ar y Scud, a'r rhan fwyaf o'r yr amser, y mwyafrif llethol o'r amser, byddai'n dim ond hedfan gan y Scud. Unwaith y bydd y gweithredwyr Gwladgarwr system sylweddoli y Gwladgarwr methu â chyrraedd ei tharged, maent yn tanio y warhead Gwladgarwr. Er mwyn osgoi anafiadau posibl, caniatawyd i syrthio i'r llawr. Dyna oedd yr hyn a welodd rhan fwyaf o bobl, fel y fireballs mawr yn yr awyr, a'i gamddeall fel rhyng-gipio o arfbennau Scud. Er bod, yn awyr y nos, gwladgarwyr yn ymddangos i fod yn Scuds dinistrio yn llwyddiannus, yn Dhahran, gallai fod dim camgymeriad am ei pherfformiad. Yno, system radar y Gwladgarwr yn colli trac o sy'n dod i mewn Scud a pheidiwch byth â lansio oherwydd i nam meddalwedd. Roedd yr Israeliaid oedd y cyntaf i ddarganfod bod y tymor y system oedd ar, y mwyaf yw'r anghysondeb amser daeth, oherwydd cloc yn rhan annatod o gyfrifiadur y system. Mae tua dwy wythnos cyn y drychineb yn Dhahran, y Israeliaid adroddwyd i'r Adran Amddiffyn y system yn colli amser. Ar ôl tua wyth awr o redeg, maent yn sylwi bod y system yn dod yn amlwg yn llai cywir. Ymatebodd yr Adran Defense drwy ddweud wrth bawb o Nid y batris Gwladgarwr i adael y systemau ymlaen am amser hir. Maent byth yn dweud beth amser hir oedd - 8 awr, 10 oriau, 1,000 o oriau. Does neb yn gwybod. Mae'r batri Gwladgarwr lleoli yn y barics yn Dhahran ac mae ei gloc yn ddiffygiol mewnol wedi bod ar fwy na 100 o oriau ar noson 25 Chwefror. Mae'n olrhain amser i gywirdeb o tua un rhan o ddeg eiliad. Erbyn hyn, mae rhan o ddeg o'r ail yw nifer ddiddorol oherwydd Ni ellir ei fynegi mewn binary, yn union, sy'n golygu ni ellir ei mynegi yn union mewn unrhyw cyfrifiadur modern digidol. Mae'n anodd credu. Ond yn defnyddio hwn fel enghraifft. Gadewch i ni gymryd y rhif un trydydd. Ni all un o bob tri yn cael ei fynegi mewn degol, yn union. Traean yn cael ei 0.333 mynd ymlaen am anfeidredd. Does dim ffordd i wneud hynny gyda chywirdeb absoliwt yn degol. Dyna'n union yr un fath o broblem a ddigwyddodd yn y Gwladgarwr. Po hiraf yn rhedeg y system, y gwaethaf y gwall amser daeth. Ar ôl 100 awr o weithredu, mae'r gwall mewn amser yn unig oedd tua thraean o eiliad. Ond o ran targedu taflegryn sy'n teithio ar Mach 5, mae'n arwain at gwall olrhain dros 600 metr. Byddai'n gamgymeriad angheuol ar gyfer y milwyr yn Dhahran. Beth ddigwyddodd yn lansio Scud ei ganfod gan y rhybudd cynnar lloerennau ac maent yn gwybod bod y Scud yn dod yn eu cyfeiriad cyffredinol. Doedden nhw ddim yn gwybod lle cafodd ei dod. Roedd yn awr i fyny at y gydran radar y Gwladgarwr system, amddiffyn Dhahran, i leoli a chadw golwg ar y taflegryn gelyn dod i mewn. Roedd y radar yn smart iawn. Byddech yn mewn gwirionedd yn olrhain lleoliad y Scud ac yna ragfynegi lle byddai'n debygol o fod y tro nesaf y radar anfon curiad allan. Dyna oedd enw y giât ystod. Yna, unwaith y bydd y Gwladgarwr yn penderfynu digon o amser wedi mynd heibio i fynd gefn a gwirio lleoliad nesaf ar gyfer y canfyddir gwrthrych, mae'n mynd yn ôl. Felly pan aeth yn ôl i'r lle anghywir, yna yn gweld unrhyw wrthwynebu, ac mae'n penderfynu nad oedd gwrthrych. Roedd yn canfod ffug ac yn disgyn y trac. Diflannodd y Scud sy'n dod i mewn oddi wrth y sgrin radar. Ac eiliadau yn ddiweddarach, mae'n Condemniwyd hi i mewn i'r barics. Mae'r Scud lladd 28 a oedd yr un olaf ei tanio yn ystod y Rhyfel cyntaf y Gwlff. Yn drasig, y meddalwedd diweddaru cyrraedd Dhahran y diwrnod canlynol. Ac mae'r diffyg meddalwedd wedi ei osod, cau un bennod yn hanes cythryblus y taflegryn Gwladgarwr. Gwladgarwr mewn gwirionedd yn acronym ar gyfer "Olrhain Array raddol Rhyng-gipio Targed. " Mae pob hawl, felly mae llawer mwy ar ganlyniadau drist pryd nad oedd yn ddeall y byd. A'r tecawê, mewn gwirionedd, gan y ffilm yw fod yr ateb roedd yna ailgychwyn eich system amddiffyn taflegryn pob siwrnai mewn blwc. Ac felly eto, un o amcanion y cwrs, yn sicr ar raddfa fwy gostyngedig na'r ceisiadau hyn, yw llygaid pawb mewn gwirionedd yn agored i union sut yr ydych yn mynd ati i peiriannau yn gwneud gwneud yr hyn rydych eisiau iddynt ei wneud a sut rydych yn mynd am wneud hynny yn gywir, tra ar hyd y ffordd wneud hynny yn dda, cain, ac yn y blaen. Ac felly heddiw, gadewch i blymio i mewn i ychydig yn fwy o hyn, ond fel nad ydym yn mynd yn rhy gyflym, yn enwedig ar gyfer rhai sy'n llai gyfforddus, ond hefyd fel y gallwn gadw diddordeb y rhai sy'n fwy cyfforddus, gadewch i ni dim ond yn gyflym yn dechrau gydag ychydig o ailadrodd rhai o'r syniadau hyn. Ac eto, gofynnwch i ffwrdd, yn bersonol neu ar-lein, os oes gennych cwestiynau fel y gallwn gadw pawb ar yr un dudalen. Felly, y Appliance CS50, quick step yn ôl, yn beth, yn eich geiriau eich hun? Mae'n iawn os nad oes gennych syniad beth gall y geiriau fod eto. [Anghlywadwy] Iawn, felly mae rhyngwyneb cyffredinol ar gyfer - y gallwn i gyd rannu. Yn hollol. Felly, gallem, er enghraifft, dweud wrthych i fynd i rai gwefan, lawrlwythwch y meddalwedd ar gyfer Mac OS. Lawrlwythwch y meddalwedd ar gyfer Windows, ffurfweddu yn hyn ac y. Ond y gwir amdani yw, yna rydym yn rhedeg i mewn technegol di-rif gefnogi materion. A hefyd y dyddiau hyn, mae llawer o'r hyn sy'n cael ei wneud ochr y gweinydd, ym myd cyfrifiadureg, yn enwedig pan ddaw i ar y we datblygu a cheisiadau ar y we, mewn gwirionedd yn aml wneud ar gyfrifiaduron Linux neu Unix, yn hytrach na Macs neu gyfrifiaduron Windows. Felly, ymysg y upsides, yna, o ddefnyddio peth hyn a elwir y CS50 Offer yw y bydd gan bob un ohonom yr un amgylchedd. Felly, mae pawb sydd ar y dudalen un fath ni waeth pa galedwedd chi Daeth i'r campws gyda nhw, ond bydd hefyd yn dabbling yn union yr un amgylchedd y byddwch yn ei ddefnyddio tuag at diwedd semester yn ogystal ar gyfer datblygu ar y we, yn ogystal ag yn y dyfodol ar gyfer ceisiadau byd go iawn ohono. Felly yn fwy concretely, mae'r Offer CS50 yn ddarn rhad ac am ddim o meddalwedd sy'n caniatáu i chi redeg system weithredu arall, Linux, yn yr achos hwn, ar eich cyfrifiadur eich hun, mewn ffenestr. Nawr nid ydych yn gallu lawrlwytho'r offer. Byddwch angen rhaglen i'w ddefnyddio i chwarae neu redeg y ddyfais. A bod darn o feddalwedd yn cael ei adnabod yn gyffredinol fel hypervisor. Hypervisors ddod yn y ffurf o gynhyrchion fel VMware, Blwch Rhithwir, Parallels. Mae pob math o gwmnïau yn gwneud meddalwedd, yn rhydd ac masnachol, fel ei gilydd. Beth fyddwch chi'n ei weld yn Problem Set 1 cyfarwyddiadau ar sut i gael meddalwedd am ddim i'w ddefnyddio i rhedeg y Appliance CS50. Ac unwaith y byddwch yn ei wneud, bydd gennych, mewn ffenestr ar eich Mac neu PC, amgylchedd penbwrdd sy'n edrych yn debyg i hyn, lle mae ganddo Cychwyn dewislen tebyg i beth yn y gwaelod gornel chwith. Mae ganddo, ffolder Cartref neu cyfeiriadur cartref, yn yr ochr chwith uchaf yno, a sbwriel yn gallu, ac yn y blaen. Felly, byddwn yn canfod ar wahân y manylion angenrheidiol wrth i ni fynd. Ond yn awr, gadewch i ni ddechrau i ddeifio i mewn i C. Felly C yn yr iaith hon raglennu, yn debyg o ran ysbryd i'r Scratch, ond yn llawer llai graffigol, ond yn eironig, ymhell yn fwy pwerus ar ôl i chi gael savvy ag ef. Felly, yn C, byddwn yn ysgrifennu rhaglenni drwy ysgrifennu cod ffynhonnell, sydd yn y gystrawen Saesneg-fel, yn debyg i'r sanau arddangos ein bod yn gwneud y tro diwethaf sy'n eich galluogi i mynegi eich hun yn weddol fanwl gywir, os arcanely, i'r cyfrifiadur. Felly, pa fath o feddalwedd gynnyrch ydych chi'n ei angen mewn gwirionedd i ysgrifennu rhaglenni mewn iaith fel C, yn seiliedig ar ein sgwrs ar ddydd Llun? [Anghlywadwy] OK, 'ch jyst angen golygydd testun. Nid oes angen unrhyw feddalwedd arbennig fel y cyfryw i ysgrifennu rhaglenni. 'Ch jyst angen golygydd testun fel Notepad, ar Windows, TextEdit ar Mac, neu rywbeth a elwir yn gedit, yn y byd o Linux, y byddwn yn ei ddefnyddio yma. A dyna ni, i ysgrifennu rhaglenni. Ond ysgrifennu dim ond hanner yr hafaliad. Yna bydd angen i'w rhedeg. Ond er mwyn rhedeg rhaglenni - Ni allwch chi redeg cod ffynhonnell. Chi yn lle hynny rhaid i chi wneud beth i yn gyntaf? Yeah. DAVID J. Malan: Mae angen i chi llunio ei. Ac, rhywun arall, llunio'r cod ffynhonnell yn golygu - [Anghlywadwy] DAVID J. Malan: Yn union. Cyfieithu i sero a rhai. Gan fod pob un ohonom, y dyddiau hyn, gyfrifiaduron sydd wedi CPUs, bron pob un ohonynt yn cael eu gwneud gan gwmni o'r enw Intel, ac Intel Y tu mewn, yn golygu fod y tu mewn i'r ymennydd eich gyfrifiadur, a elwir yn y CPU. Ac un o'r pethau y bod ymennydd yn ei wneud yn, mae'n gwybod sut i ddeall patrymau o sero a rhai. Mae'n gwybod beth patrwm o ddarnau yn cynrychioli ogystal, pa patrwm yn cynrychioli Tynnu gyda, pa batrwm o darnau cynrychioli argraffu, ac yn creu sain clywadwy. Felly, yn fyr, y CPU, ynghyd â'r system weithredu, sydd yn ddarn o feddalwedd sy'n rhedeg ar ben y CPU, felly, i siarad. Gyda'i gilydd, y ddau ddarn yn gwybod sut i redeg rhaglenni sy'n rydym yn bodau dynol ysgrifennu. Felly, os byddaf yn mynd i mewn i'r Appliance CS50 yma, mae angen i mi agor i fyny golygydd testun a gallaf gael gafael ar y mewn dwy ffordd. Gallaf naill ai fynd i Fynegai'r, Rhaglennu, ac yna gallaf ddewis - Na, nid y fwydlen. Gallaf fynd i Ategolion / gedit yma i agor fy golygydd testun bach. Neu yn fwy syml, gallaf glicio ar yr eicon hwn bach yn y gwaelod gornel chwith. Ac yn awr yr wyf yn cael yr amgylchedd yma. Mae'n eithaf atgoffa rhywun o golygydd testun syml, gyda dim ond un neu ddau o wahaniaethau. Yn y top, lle mae'r cyrchwr yn amrantu yn awr, dyma lle Gallaf ddechrau ysgrifennu fy cod. Yn y gwaelod mae hyn yn beth a elwir yn y ffenestr terfynell. A gall pa fathau o bethau yr wyf yn ei wneud yn hyn o hyn a elwir yn ffenestr terfynell? [Anghlywadwy] Iawn, felly byddaf yn rhedeg gorchmynion. Ac mae rhai o'r gorchmynion ydym yn rhedeg ar ddydd Llun ychydig yn cryptig i ddechrau, ond ls am restr, cd gyfer cyfeiriadur newid, rm, ar gyfer cael gwared. Felly, mae'n fath o ffordd hen-ysgol o lywio eich cyfrifiadur, gan ddefnyddio dim ond eich bysellfwrdd a gorchmynion testunol, ac nid, yn gyffredinol, gan ddefnyddio llygoden. Ond byddwn yn gweld, cyn hir, mae hyn mewn gwirionedd yn rhoi i ni pŵer ychydig yn fwy a thrachywiredd ychydig mwy i mynegi ein hunain. Ac yna dros yma ar y chwith, rydym yn jyst yn mynd i weld, wrth i ni ddechrau, meddalwedd ysgrifennu crynodeb ychydig o rhaglen yr ydym wedi ysgrifennu ar y chwith uchaf. Ond byddwn yn gweld hynny eto cyn bo hir. Felly, gadewch i ni wneud rhywbeth eithaf syml yma. Gadewch i mi yn gyntaf fynd yn ei flaen ac yn mynd i Ffeil, Achub, ac rwy'n dim ond mynd i glicio ar jharvard yma, drosodd ar y chwith, a jharvard yw, unwaith eto, yr enw ar gyfer fy blygell gartref, fy ffeiliau personol, i mi, bellach yn cael eu John Harvard, gan fod pob un ohonoch Cyn bo hir bydd John Harvard yn yr amgylchedd hwn. Mae ganddo y cyfeiriadur cartref, Fy Dogfennau ac yn y blaen, yr wyf am ei gynilo, yn awr, y ffeil hon i mewn Felly, yr wyf i'n mynd i alw hello.c. Wedyn dw i'n mynd i fynd ymlaen cliciwch ac Achub, ac yn awr yr hyn sydd gennyf yma yw tab a elwir yn hello.c, cymaint fel math arall o golygydd. Felly nawr gadewch i mi fynd yn ei flaen ac yn dechrau ysgrifennu rhaglen. int brif (gwag). Ac yna Fi jyst yn gwneud y tro diwethaf, printf, ar gyfer print fformatio, ("Helo, byd!" );. Mae bron gwblhau. Ond dw i'n colli ychydig o fanylion. Beth sydd ar goll o'r rhaglen hon y Fi 'n sylweddol angen am i lunio mewn gwirionedd? Yeah. [Anghlywadwy]? DAVID J. Malan: Yeah, felly mae angen i mi gynnwys y safon I / O llyfrgell. Felly, mae angen i fynd uchod bennaf, hyd Im 'jyst yn mynd i gwneud rhywfaint o le ar ei gyfer yno. Ac yr wyf i'n mynd i wneud # cynnwys . Ac yn sylwi ar y cromfachau onglog yno. Ac fel o'r neilltu, gedit yn defnyddio ychydig yn gyfeillgar, os weithiau ychydig yn gymhleth, gan ei fod yn ceisio helpu eich llygaid sylwi ar yr hyn llinellau i fyny gyda'r hyn. Felly, mae'r ffaith bod fy cyrchwr yn iawn nesaf at y onglog braced, sylwch sut mae'n tynnu sylw at y ongl eraill braced ynghyd â hyn un. A dim ond i dynnu fy sylw at y ffaith fy mod gael cymesuredd. Ac cymesuredd mewn rhaglenni yn gyffredinol yn beth da. Yn yr un modd, os wyf yn symud fy cyrchwr i'r diwedd, sylwch sut y mae'r braces cyrliog llinell i fyny i ddangos, ie, mae gennyf un agored ac yn un gaeedig, felly, i siarad. Gall pob hawl, ac yr wyf yn gwneud un peth arall. Dyw hi ddim yn hollol angenrheidiol, ond mae arferion da, i ddweud dychwelyd 0. A 0 dychwelyd yn gwneud yr hyn i ni yma? Neu arwydd beth? [Anghlywadwy] DAVID J. Malan: Ond dim byd o'i le. A dweud y gwir mae'n anodd i lawer fynd o'i le mewn rhaglennu byr hwn. Felly, Im 'jyst yn bod yn super eglur bod popeth yn iawn. Yr wyf fi, y dynol, pan fyddaf yn rhedeg y rhaglen, mae'n debygol y bydd byth yn gweld bod 0. Yn gyffredinol, mae'r niferoedd sy'n cael eu dychwelyd o brif Dim ond fagu eu pennau i bobl pan rhywbeth yn mynd o'i le. A ydych yn cael pop bach i fyny gwall system yn dweud, un, dau, tri, neu beth bynnag y nifer oedd bod ei ddychwelyd mewn gwirionedd. Felly unrhyw beth arall o'i le ar hyn? [Anghlywadwy] DAVID J. Malan: Felly, nid yw hyn yn gymaint o gamgymeriad swyddogaethol ond yn un esthetig. Mae'n debyg y dylwn roi mewn cymeriad Newline yno ar y ddiwedd y llinyn fel ein bod mewn gwirionedd yn symud y cyrchwr i y llinell nesaf, a bydd y rhaglen yn unig yn edrych ychydig yn prettier. Felly nawr gadewch i mi fynd i lawr at fy ffenestr terfynell a chwyddo yn ôl i mewn Ac mae hyn yn beth yma, fe'i elwir yn brydlon. Mae'n dim ond fy atgoffa pwy ydw i, jharvard @ offer, lle offer yn enw'r cyfrifiadur dwi ar. Yn y cromfachau yw hyn tilde, y symbol squiggle, sy'n cynrychioli'r hyn? GYNULLEIDFA: cyfeiriadur cartref. DAVID J. Malan: cyfeiriadur cartref. Felly dyna dim ond nodiant llaw-fer am ddweud eich bod yn eich ffolder personol lle mae pob un o'ch ffeiliau yn mynd yn ddiofyn. Felly nawr, yma, gallaf deipio ls ar gyfer rhestr. A'r unig beth yr wyf yn gweld yma ar hyn o bryd yn hello.c. Ac mae hynny'n beth da oherwydd fy mod newydd ei ysgrifennu hyn. Felly, gadewch i mi fynd yn ei flaen ac yn gwneud helo. Ac yn sylwi nad wyf i'n teipio yn gwneud hello.c. Yn hytrach, Im 'yn unig teipio enw'r waelod y ffeil, helo. A gwnewch, fel y gwelsom ddydd Llun bydd, dim ond casglu fy mod am y. ffeil c. Felly, yn awr yr wyf wedi ei deipio i wneud helo. Nawr rwy'n gweld y gorchymyn yn weddol hir a bydd yn parhau gweld hyn dro ar ôl tro. Ond i fod yn glir, clang, y gair mai dim ond yn ymddangos, bod yn y compiler gwirioneddol. Gwnewch yn unig yw cyfleustodau adeiladu. Mae'n dim ond rhaglen mwy cyfeillgar sy'n arbed i mi, yn y tymor hir, rhag gorfod teipio allan anhygoel o ddiflas hir gorchmynion fel 'na un. Felly gallech redeg Clang llaw. Gallech math hynny i gyd â llaw. Dim ond yn mynd yn ddiflas. Ac felly gwnewch yn unig yw rhaglen sy'n symleiddio ein bywydau a redeg gorchmynion mwy cymhleth i ni. Mae pob hawl, felly, yn awr yr hyn y ffeil dylwn gael yn fy cyfeiriadur ar hyn o bryd? Nid dim ond hello.c, ond hefyd helo. Felly os wyf eisiau rhedeg helo, cofio fy mod yn dweud dot slaes, lle y defnyddir dulliau dot mynd i mewn i'r ffolder ar hyn o bryd, ble bynnag yr ydych , ac yna rhedeg y rhaglen o'r enw hello, ac yn wir, yn awr, Mae gen i fyd helo. Mae pob hawl, unrhyw gwestiynau ar y llif gwaith neu y gystrawen o hyn yr ydym yn unig oedd? Mae pob hawl, felly gadewch i ni gymryd pethau i fyny hollt eto. Felly, roedd hyn yn anfoddhaol i ddim ond ysgrifennu rhaglen mai dim ond byth yn dweud helo, byd. Felly, rydym yn newid, ar ddydd Llun, i ddweud, helo, David. Mae'n ychydig yn fwy personol, ond yr un mor galed codio fel y fersiwn gyntaf. Felly nid yw pob bod gymhellol. Ond mae yn bodoli, yn C, swyddogaethau ar wahân yn sicr print, swyddogaethau sy'n gadael i chi gael mewnbwn defnyddwyr. Ac mae'r ffordd yr ydym yn gwneud hyn, y diwrnod o'r blaen, fel a ganlyn. Cyn i mi argraffu rhywbeth, tro cyntaf i mi rhywbeth gan y defnyddiwr. Felly, gadewch i mi wneud hyn eto. Llinynnol, lle mae yn unig yw enw mympwyol, yma, ar gyfer llinyn, yn hafal i GetString. Felly, beth oedd yn GetString? Mae'n amlwg yn cael llinyn, yn seiliedig ar ei enw. Ond beth ydyw, yn fwy technegol? Mae'n swyddogaeth. Felly, mae'n swyddogaeth nad yw'n dod gyda C fel y cyfryw. CS50 staff ysgrifennodd y. Ac felly i ddefnyddio'r hyn, nid ydych yn gallu cynnwys stdio.h, Angen i chi hefyd gynnwys yr hyn? Yeah. Felly cs50.h, sydd ychydig ffeil wnaethom ysgrifennu rai blynyddoedd yn ôl. Rydym yn ei osod ar y peiriant i chi ochr yn ochr â holl ffeiliau safonol. Ac felly yn yr ychydig wythnosau cyntaf y dosbarth, byddwn yn defnyddio hyn dim ond er mwyn symleiddio'r broses o wneud sylfaenol iawn pethau fel mewnbwn defnyddiwr gael. Oherwydd fel y byddwn yn gweld mewn ychydig wythnosau, mewnbwn defnyddiwr gael mewn iaith fel C mewn gwirionedd yn syndod o gymhleth, yn enwedig oherwydd nad ydych yn gwybod ymlaen llaw, fel arfer, sut y pethau lawer y defnyddiwr yn mynd i deipio i mewn A phan nad ydych yn gwybod faint o ddata i'w disgwyl, nad ydych yn gwybod faint o gof i ddyrannu. Ac os ydych mewn gwirionedd yn cael ddefnyddiwr gwrthwynebus pwy sy'n ceisio i hacio i mewn i'ch system, damwain eich cyfrifiadur, yn dda, gyffredinol y dull cyntaf o ymosodiad yw, yn union fel y gwneuthum ar Dydd Llun, teipiwch dilyniant hir cyfan o gymeriadau ar hap, daro Enter, a gweld beth yn torri. Oherwydd yn gyffredinol, os bydd yn torri rhaglen, sy'n Awgrymiadau ar nam diogelwch, o bosibl. Mae'n sicr yn Awgrymiadau ar chi, y rhaglennydd, ar ôl gwneud camgymeriad, ond yn fwy peryglus, efallai y byddwch wedi gwneud gysylltiedig â diogelwch camgymeriad, ac yn gyffredinol byddwn yn gweld bod dyna sut y peiriannau yn cael eu peryglu hyd y dydd hwn, yn yn y byd y we a rhaglenni ar y , llinell orchymyn fel hyn. Mae pob hawl. Felly llinyn s yn dychwelyd GetString. Felly, yn fwy concretely yn awr, beth yw llinell 6 wneud yma? Felly, mae'r swyddogaeth ar y dde yn cael llinyn, cymryd sawl dadleuon? Iawn. Felly, dim. Mae ychydig o bwyll gwirio. Mae dadl, unwaith eto, yn unig yw mewnbwn i swyddogaeth i newid ei ymddygiad diofyn mewn rhyw ffordd. Ond yn yr achos hwn, nid wyf am newid ymddygiad GetString. Fi jyst eisiau i gael llinyn. Felly, yr wyf yn rhoi unrhyw beth yn y cromfachau, ac yna yr wyf yn rhoi i hanner colon demarking diwedd y llinell o god. Yn awr, y symbol hafal yn golygu gyfartal, fel y cyfryw. Mae'n golygu aseiniad, sy'n golygu rhoi beth bynnag yn cael outputted ar y tu mewn cywir o beth bynnag sydd ar y chwith. Felly, ar y chwith, rydym yn dweud ein bod wedi datgan llinyn o'r enw s. Ac yn fwy penodol, rydym wedi dyrannu cof tu mewn y byddwn yn rhoi'r darnau sy'n cynrychioli cyfres o cymeriadau. Ond ar gyfer heddiw, rydym wedi dyrannu neu ddatgan llinyn. Mae pob hawl. Felly, yn awr unwaith y byddaf wedi gwneud hyn, rwyf am i lenwi'r yng ngwerth y s, gwerth David. Felly, mae hyn yn anghywir pam? Felly, mae hyn yn unig yw llythrennol s hard-coded. Mae'n dweud "helo, s," nad yw hyn rwyf eisiau. Felly gallaf wneud hyn. Mae'r arwydd y cant yn placeholder, ond erbyn hyn mae angen i mi fynd i mewn argraffu ail ddadl. Dwyn i gof bod dadleuon i swyddogaethau yn cael eu gwahanu gan atalnodau, felly mae'r coma nesaf yma yr wyf yn rhoi ar ôl hyn yn y llythyr. Ac yn y cyd-destun yn awr, s yn y newidyn, ac printf, ar dderbyn y ddau fewnbwn - y llinyn ar y chwith a'r enw amrywiol ar y dde - bydd yn llenwi'r olaf i mewn i'r hen i ni, ac dim ond argraffu llinyn hardd 'n glws cynnwys beth bynnag yw ein bod yn teipio i mewn Felly, gadewch i ni geisio hyn. Mynd i fynd yn ei flaen ac yn chwyddo allan, yn ôl i fy ffenestr terfynell. Chwyddo i mewn ar waelod yma. Ail-deipiwch gwneud helo. Clang fel pe bai wedi cael ei ailgynnal. Rydw i'n mynd i deipio. / Helo, Enter. Nid oes dim yn ymddangos i fod yn digwydd eto, ond mae'n ar hyn brydlon y gallaf deipio rhywbeth fel Nate, Mewnbynnu, ac erbyn hyn mae gennym Helo, Nate. A allaf wneud hynny eto gyda Rob, ac yn y blaen. Felly, gobeithio nawr y rhaglen hon yn ymddwyn fel yr wyf yn bwriadu. Nid yn awr, y cyfan sydd gyfeillgar i'r defnyddiwr. Does gen i ddim syniad beth sy'n cael ei ddisgwyl i mi. Felly, gallwn yn sicr lanhau hyn i fyny ychydig bach. Gadewch i mi fynd yn ôl i fyny yma, ac yn hytrach na dim ond saethu i mewn ac gofyn i'r defnyddiwr ar gyfer llinyn, gadewch i mi yn benodol yn dweud wrth y defnyddiwr yr hyn rwy'n ei ddisgwyl. Felly printf ("Rhowch llinyn:" ); Felly, dim newidynnau yma. Dim arwyddion y cant. Dim ond yr ymadrodd Saesneg syml. Gadewch i mi fyned yn awr i'r gwaelod yma ac ailgynnal fy rhaglen. Ond dim ymddangos i wedi newid. Pam? Rhaid i mi ail-grynhoi iddo. Felly, camgymeriad hawdd i'w wneud. Ond mae'n rhaid i chi nid yn unig yn arbed y ffeil ond ail-grynhoi y rhaglen. Ac felly os wyf yn ail-redeg gwneud helo, sydd bellach yn rhedeg Clang. Nawr gallaf redeg. / Helo. Ac yn awr yr wyf yn gweld "Rhowch llinyn:". Iawn. Nawr mae'n ychydig yn fwy defnyddiwr-gyfeillgar. Nate, Mewnbynnu, helo, Nate. Wel, gadewch i ni geisio hyn eto ac yn dechrau meddwl am achosion cornel. Felly, yn union fel yn Scratch, rydych yn annog neu'n cael eu annog yn y fanyleb i fath o feddwl am beth allai fynd anghywir os nad ydych yn rhagweld popeth y gallai'r defnyddiwr ei wneud. Pryfed, felly gallai, dilyn. Felly, mynd i mewn i linyn - beth achos cornel yma? Beth yw sefyllfa yr wyf fi, y rhaglennydd efallai na fydd, yn cael eu rhagweld? Yeah. Iawn. Felly beth os ydw i'n teipio mewn nifer fel hyn? Mae pob hawl. Felly, mae'n dal i weithio. Gramatically yn gwneud unrhyw synnwyr. Ond o leiaf mae'r rhaglen yn gweithio. Beth yw achos arall cornel? Rhywbeth Nid oeddwn yn disgwyl. Yeah? Iawn. Felly, gallem wneud rhywbeth fel nifer iawn, iawn fawr. Felly, gadewch i ni wneud hyn yma. Gadewch i mi chwyddo allan am eiliad, gadewch i mi dynnu sylw. Methu copïo a gludo i lawr yma. Mae pob hawl. Felly, ni allaf gopïo a gludo yn y ffenestr hon terfynell, felly gallwn eich dim ond efelychu ei. Gadewch i mi chwyddo allan, mynd i lapio. Dydw i ddim yn mynd i wneud hyn yn rhy hir, oherwydd ni fydd yn mewn gwirionedd yn doriad yn y rhaglen hon. Ond y gallai. Enter. Ond ni wnaeth. Mae pob hawl. Ond mae'n achos cornel go iawn. A'r unig reswm y ymddwyn yn gywir, felly i siarad, oherwydd bod y CS50 GetString swyddogaeth mewn gwirionedd cynllunio o dan y cwfl, fel y byddwn yn gweld ymhen ychydig wythnosau, yn awtomatig dyrannu RAM mwy a mwy, yn fwy a mwy o cof gan y system weithredu, pan fydd yn sylweddoli, wow, rydych wedi teipio mewn gwirionedd yn rhywbeth eithaf hir. Yn awr, mae hyn yn dipyn o gelwydd gwyn. Os ydym mewn gwirionedd yn seibio am gryn amser, ac rwy'n deipio mewn rhywbeth fel 5000000000 cymeriadau ar y bysellfwrdd yma, neu daro mewn gwirionedd gopi-gludo gryn dipyn, rydym o bosib Gallai achosi i'r rhaglen i ddamwain. Dim ond ychydig yn galetach i efelychu hynny gyda cyfyngedig faint o amser. Beth yw achos arall gornel gallem geisio? Yeah? Yeah. Felly pam nad ydym yn ateb dim byd? Felly, rydym mewn gwirionedd yn rhaid i ni gymryd rhai camau, oherwydd fel arall y rhaglen yn mynd i eistedd yno trwy'r dydd amrantu. Ond os Fi jyst daro Enter - OK, yn awr, yn dal i edrych yn anghywir. Heb chwalu, ond efallai mae bellach yn gyfle i dechrau gweithredu rhaglen fwy trylwyr sydd mewn gwirionedd yn gwirio. Ac os y llinyn, y ddedfryd, y gair yr wyf teipio mewn wedi hyd 0, yn dda, efallai y dylwn gweiddi ar y defnyddiwr, neu ddweud ef neu hi i fynd i mewn i linyn eto, fel y ydym mewn gwirionedd yn cael yr hyn edrych fel ymddygiad cywir ac nid dim ond amryfusedd llwyr ar fy rhan. Cwestiwn yn y cefn? Rhif degol. Felly, gallem geisio hynny, hefyd. 1.10000005. Seems fel 'na sy'n mynd i jyst yn gweithio mewn gwirionedd iawn. A bod mewn gwirionedd yn cael ei ddisgwyl. Hyd yn oed er efallai y byddwn wedi ei deipio y nifer hwnnw yno, neu nifer mwy yn gynharach, yn sylweddoli bod pan fyddwn yn teipio defnyddiwr Nid yw mewnbwn ac rydym yn defnyddio'r swyddogaeth GetString, yn mater os bydd yr hyn yr wyf i'n teipio yn edrych fel rhif. Dwyn i gof bod yn ôl ASCII, popeth ar eich bysellfwrdd werth rhifiadol y gellir eu mapio i cymeriad, golosg. Felly, yn yr achos hwn, hyd yn oed er efallai y byddwn yn deipio rhif, cyfrifiadur yn mynd i feddwl am y peth, fel petai, fel llinyn - rhywbeth sy'n edrych yn debyg i nifer, ond mae'n nad ydynt mewn gwirionedd yn rhif. Ond mewn gwirionedd segue berffaith, oherwydd yn awr gallwn mewn gwirionedd yn trosglwyddo i raglenni ysgrifenedig ddefnyddio mathau data eraill. Felly, ar wahân gan ddefnyddio chars, neu yn hytrach, ar wahân i ddefnyddio llinynnau, sylweddoli ein bod wedi fathau o ddata eraill yn C yn ogystal ag yn ieithoedd eraill. Mae torgoch, fel yr awgryma'r enw, yn unig yw cymeriad unigol. Mae arnofio yn werth pwynt arnawf, a bod yn unig ffansi ffordd o ddweud nifer go iawn - rhywbeth sydd â degol pwynt ynddo gyda rhai rhifau i'r chwith a / neu i'r dde. Mae int yw cyfanrif, sydd ychydig rhif, er enghraifft 123. Ac yn awr yn fwy diddorol yw pethau fel dwbl. Beth wnaethon ni ddweud dwbl oedd y tro diwethaf? Mae'n 64, i'r dde. Felly, tra nodweddiadol fflôt yn 32-bit - felly mae'n hyn yn hir yn y cof, mae'n defnyddio 32 zeros a rhai i cynrychioli gwerthoedd - dwbl yn llythrennol ddwywaith hynny, a yn golygu y gallwch naill ai gynrychioli rhifau mwy, neu gallwch gynrychioli rhifau mwy manwl gywir. Felly, gallwch gael mwy o rifau ar ôl y pwynt degol, ond fel y cyd-dweud yn y fideo, hyd yn oed rhywbeth syml gysyniadol ni all er enghraifft 1/3 yn cael ei cynrychioli yn union gan cyfrifiadur, oherwydd yn y pen draw byddwch yn rhedeg allan o ddarnau, ac felly gallwch ond gwneud .33333333 gymaint o weithiau, yn y pwynt os oes gen ti i ddweud fy mod allan o gynrychiolaeth gofod, rhaid i mi ei alw'n ddim y dydd a'i gynrychioli braidd yn imprecisely yn hoffi hynny. A hir hir - enw dwp, ond mae'n oherwydd mae 'na math data a elwir yn hir yn C a chyda llaw yn aml yn 32 catiau, yn union fel int yw 32 darnau, ond hir hir yn yn gyffredinol 64 did. Felly, 'i jyst yn golygu y gallwch gynrychioli mwy rhifau na hyn. Mae pob hawl. Felly, os ydym mewn gwirionedd yn awyddus i ddechrau yn cynrychioli pethau, rydym yn efallai y bydd angen mwy o fathau soffistigedig, ac dyna pam yr ydym wedi llinyn. Felly, yn y llyfrgell CS50, y ffeil o'r enw cs50.h, rydym wedi mewn gwirionedd datgan, math ddata fel petai, a elwir yn llinyn, ond nid yw llinyn yn bodoli mewn gwirionedd. Mae hyn, unwaith eto, un o'r haenau hyn rydyn ni'n mynd i croen yn ôl mewn wythnos neu ddwy a'i daflu i ffwrdd, ac mewn gwirionedd yn edrych o dan y cwfl ar yr hyn llinyn mewn gwirionedd yw, a sut mae'n cael ei chynrychioli. Rydym hefyd yn mynd i edrych ar werthoedd Boole. Felly beth oedd yn bool yng nghyd-destun Scratch? Mae'n wir neu'n anwir. Felly, mae'n werth dim ond mae hynny'n wir neu'n anwir, ar neu oddi ar, 1 neu 0, fodd bynnag ydych am weld y byd. Felly, yn C, diolch i lyfrgell CS50, sydd yn ei dro yn cynnwys lyfrgell arall o dan y cwfl, mae gennym mynediad i fath data sy'n cael ei alw bool, a fydd yn llythrennol yn ein galluogi i aseinio y gwerthoedd gwir neu anwir i pethau mewn rhaglen. Felly, gadewch i ni fynd yn ei flaen yma ac ysgrifennu rhaglen bach sy'n yn gwneud rhywbeth sy'n cynnwys rhifau yn lle hynny. Felly, gadewch i mi fynd yn ôl at y Appliance CS50, gadewch i mi fynd yn ei flaen a creu ffeil newydd o'r enw yma - gadewch i 'jyst dweud rhywbeth syml, fel math.c. Mae pob hawl. Ac yn awr yn mynd i fyny i ben fy rhaglen, rwy'n mynd i wneud y arferol - # Cynnwys , fel y gallaf ddefnyddio printf, int brif (gwag) - byddwn yn dod yn ôl i, yn y pen draw, pa int olygu yma, pa ddi-rym yn golygu yma, ond ar hyn o bryd, dim ond yn gwybod bod rhaid i chi ddechrau raglenni fel hyn. Nawr rwy'n mynd i fynd yn ei flaen a dweud rhywbeth ychydig yn wahanol - printf ("Rhowch i mi rhif:" );. Wedyn dw i'n mynd i wneud int n = GetInt, gan ei fod yn tro allan GetInt yn swyddogaeth arall yn y llyfrgell CS50 ar wahân GetString. Ac yn awr yr wyf i'n mynd i wneud rhywbeth twp, fel "diolch ar gyfer y d%, "ar gyfer cyfanrif degol, ac yna n coma, a wedyn yn dychwelyd 0. Felly, unwaith eto, yn dychwelyd 0 ddim byd i wneud gyda'r nifer rwy'n gofyn i'r defnyddiwr ar gyfer. Dim ond arwydd ar y diwedd y cyfan, yn ôl pob tebyg, yn dda. Felly, gadewch i mi fynd i lawr at fy ffenestr terfynell yma. Gadewch i mi deipio yn gwneud mathemateg, rhowch. A rhywbeth o'i le. Sicrhewch nad mathemateg oedd yn gweithio. Dyma'r cyntaf o'n negeseuon gwall. Pam? Mae cryptic ychydig, ond - Yeah. Felly cs50.h. Felly, unwaith eto, yn enwedig yn gynnar, byddwch yn ysgrifennu eich dewis cyntaf rhaglen ar gyfer pset 1 mewn adrannau, yn ystod oriau swyddfa, a dweud y gwir, bydd yn cael ei llethol weithiau beth yw'r pethau yn ei ddweud mewn gwirionedd. Ond byddwch yn sylweddoli yn gyflym iawn y byddant yn dechrau disgyn i mewn i bwcedi lle hwn yn golygu eich bod wedi gadael oddi ar un o # gynnwys ar ben y ffeil. Ac Clang, y compiler, yn eich hysbysu o hyn drwy ddweud, yn hytrach fancifully, datganiad ymhlyg o GetInt swyddogaeth yn annilys. Mae pob hawl. Felly beth mae hynny'n ei olygu? 'I jyst yn golygu eich bod wedi datgan llwyr GetInt yn yr ystyr nad ydych wedi datgan yn glir arno. I ddatgan yn benodol int, rhaid i chi ddysgu Clang ei fod yn bodoli. Ac mae'r ateb yn syml iawn am hynny yw ei ddysgu gan gan gynnwys y ffeil arall, cs50.h, yn frig eich ffeil. Oherwydd llythrennol, yr hyn # gynnwys yn ei wneud yw ei fod yn dweud Clang 'n bert lawer i fynd ddod o hyd i'r ffeil o'r enw cs50.h, copi, bastio 'n awtomatig i mewn i ben fy rhaglen i mi, ac yna drosi'r cod ffynhonnell i sero a rhai. Ond byddai hynny yn amlwg yn iawn 'n faith os ydym bodau dynol wedi i fynd gopïo a gludo y ffeiliau mawr drwy'r amser, felly dim ond # cynnwys gwneud popeth yn awtomatig heb muddying fy cod gyda rhywun arall llyfrgell. A llyfrgell arall yn unig ffeil yn cynnwys swyddogaethau a pethau eraill y mae rhywun arall wedi ysgrifennu, ein bod yn leveraging ar gyfer ein fwyn ei hun. Mae pob hawl. Gadewch i ni geisio eto. Gwnewch mathemateg. Enter. Da. Felly, mae'n ymddangos ei fod yn gweithio. Felly, gadewch i mi redeg yn awr mathemateg;. / Mathemateg. Rhowch rhoi i mi nifer, 123. Diolch am y 123. Nawr gadewch i ni geisio achos arall gornel. Mae llinyn yn eithaf hael, oherwydd bod Gall llinyn fod yn unrhyw beth. Gallu edrych fel rhifau, yn edrych fel cymeriadau, yn edrych fel geiriau. Ond mae int yn int. Felly, yn awr os ydw i'n ddefnyddiwr anodd, ac mae'n dweud "Rhowch i mi nifer, "beth os byddaf yn ceisio gwneud rhywbeth fel 0.1? Wel, mae hynny'n nifer, ac mae'n gyson â'r gramadeg wyf yn ei ddefnyddio yma, ond o dan y cwfl, Im 'yn cwrs gan ddefnyddio'r GetInt swyddogaeth. Felly, gadewch i ni weld beth sy'n digwydd. Mewnbynnu, retry. Mae pob hawl. Gadewch i mi fod yn anodd ac yn jyst daro Enter eto. Mewnbynnu, Enter. Felly nawr mae'n ymddangos bod GetInt ychydig yn fwy pwerus na GetString. Rydym ni, y staff, eu gweithredu yn y fath fodd, os ydym yn sylwi nad ydych wedi rhoi i ni yn int - a int yn rhif degol zeros sy'n cynnwys, rhai, fesul dau, tri, pedwar, pump, chwech, saith, wyth oed, neu nines. A dyna ni. Dim pwyntiau degol, dim cymeriadau, dim atalnodi. Mae'n ymddangos bod yn rhaid inni gydweithredu. Felly, gadewch i mi roi cynnig pedwar, pump, chwech, ac sy'n cael mi drwy. Felly mewn gwirionedd, i fod yn rhefrol yma, mae'n debyg y dylwn ddweud "Rhowch i mi cyfanrif "er mwyn cyfleu i'r defnyddiwr yn union yr hyn yr wyf yn bwriadu. Nawr gadewch i ni feddwl am dan y cwfl. Nid ydym yn mynd i edrych ar sut cs50.h cael ei weithredu heddiw, y llyfrgell. Ond os yw'n cadw dweud retry, retry, retry, pa rhaglennu adeiladu ydw i'n ôl pob tebyg gan ddefnyddio o dan y cwfl i weithredu hynny? Felly, dim ond dolen, dde? Un o'r syniadau symlaf a welsom ar Scratch. Mae'r Forever adeiladu, y Ailadrodd adeiladu. Yn ôl pob tebyg, yn y rhaglen hon, o dan y cwfl, hyd yn oed er ei fod yn ysgrifennu yn C ac nid dechrau, mae'n gwneud rywbeth a elwir yn cyfateb i am byth os nad yw'r defnyddiwr teipio mewn cyfanrif, yn dweud retry, retry, retry, retry, felly yna yn olaf pan fyddwn yn cael cyfanrif, yna rydych dorri allan o'r cylch. Felly, beth swyddogaethau eraill yr ydym yn defnyddio yma yn CS50 llyfrgell? Wel, math o'r rhai amlwg, o leiaf yn seiliedig ar y mathau o ddata ein bod bellach yn gwybod yn bodoli. Rydym yn gweithredu GetString, GetInt, ond drwy gydol y wythnosau cyntaf y tymor, gallwch hefyd ddefnyddio GetFloat a GetDouble a GetLongLong er mwyn cael yr union mathau o ddata yr ydych ei eisiau. Oherwydd bod y manylion allweddol yma yw bod yn wahanol i rai ieithoedd, fel Python a Ruby, lle nad oes rhaid i datgan y math data o amrywiol - Nid oes rhaid i chi ddweud wrth y cyfrifiadur pa fath o bethau rydych chi'n mynd i'w roi yn y newidyn - yn C, rhaid i chi fod byth mor fanwl gywir. Felly os ydych am newidyn a elwir yn n, darn o storio yn yr achos hwn yn digwydd bod yn 32 catiau gan gonfensiwn, byddwch yn yn rhaid i ddweud wrth y cyfrifiadur bod y darnau yn mynd i storio nifer - nid Nid yw cymeriad, llinyn, nid arnofio. Ac mae hyn yn mynd i'r afael â'r mater yn effeithiol rydym yn yn rhedeg i mewn yr wythnos diwethaf. Os ydym yn defnyddio sero a rhifau rhai i gynrychioli nid yn unig niferoedd ond Fel a brecwast a Cs, sut yn y byd yn cyfrifiadur yn mynd i wybod bod y patrwm hwn o ddarnau mewn gwirionedd yn cynrychioli nifer 65, yn hytrach na chynrychioli llythyren A, sy'n gyd-ddigwyddiad, yn ôl ASCII, galw i gof, yn cyfateb i 65? Felly, y mathau hyn data darparu cyd-destun i'r cyfrifiadur, felly ei bod yn gwybod os y darnau ei ddehongli fel int neu fel llinyn. Unrhyw gwestiynau, yna, ar hyn? Yeah? DAVID J. Malan: Cwestiwn da. Os byddwn yn cymryd stdio.h, rydym yn arbed y ffeil - gadewch i mi fynd i lawr at y ffenestr derfynell ac yn rhedeg yn gwneud mathemateg, zoom mewn a rhowch - awr yr wyf yn cael gwall gwahanol, oherwydd fy mod yn ymhlyg datgan beth yw swyddogaeth nawr? Printf. Felly nawr dwi wedi creu problem newydd, y mae ei ateb yw yn y bôn yr un fath. Angen i mi roi hynny'n ôl. GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Oh. Felly, os wyf yn cymryd allan - Iawn, yeah. Felly, os wyf yn cael gwared ar y safon I / O llyfrgell cynnwys i fyny yma, ac yna rydych chi'n ei ddweud os wyf yn cael gwared ar printf, yn cael gwared o printf? Ydw. Dylai hyn weithio, oherwydd dydw i ddim bellach yn defnyddio unrhyw - Wps. A wnes i jyst yn gorwedd? O, iawn. Ni fydd hyn yn gweithio oherwydd gwall newydd yr ydym yn unig gyflwyno. Ac mae hyn yn un ychydig yn fwy hunan-esboniadol. Beth yw'r broblem? N amrywiol nas defnyddiwyd. Felly, mae hyn gwall yn sgîl y ffaith ffurfweddu y offer i fod yn arbennig o bedantig, i wir gweiddi ar i chi am bob camgymeriad posibl, hyd yn oed os yw'n fath o camgymeriad heb fod yn angheuol fel hyn - a yw'n wir mor fawr delio fy mod yn dyrannu int, rhowch nifer ynddo, ac yna dim ond yn gwneud dim byd ag ef? Felly, swyddogaethol, dim. Nid yw hynny'n mynd i dorri'r rhaglen. 'I' jyst fath o dwp, dde? Nid oes unrhyw werth i wedi gofyn am y nifer hwnnw, storio mewn newidyn, os nad ydych chi'n mynd i wneud unrhyw beth ag ef, boed hargraffu neu ei chadw. Felly, yn yr achos hwn, Clang yn cydnabod cymaint, a mae'n dweud n amrywiol heb ei ddefnyddio. Felly gallwn atgyweiria hon os ydym wir eisiau. Ond unwaith eto, nid yw hyn yn rhaglennu da yn awr. Felly, dim ond gallwn i wneud hyn - mynd i lawr yma, gadewch i mi glirio'r sgrin, yn gwneud mathemateg. Sy'n gweithio. Nawr gallaf rhedeg fy rhaglen mathemateg, yn cymryd mewnbwn - yn dda, a oedd yn wael. Cymryd mewnbwn, a dyna'r cyfan mae'n ei wneud, yn yr achos hwn. Felly, mewn gwirionedd, gadewch i ni geisio un achos gornel eraill yr ydym yn nid oedd yn meddwl yn gynharach. Yn yr achos hwn - yma, gadewch i ni fynd yn ôl i'r un mae hynny'n ychydig yn fwy defnyddiwr-gyfeillgar. Gadewch i mi fynd yn ôl yma ac yn rhedeg yn gwneud mathemateg eto. Wps, beth wnes i ei wneud o'i le? Got i rolio yn ôl ymhellach. Iawn. Nawr rydym yn ôl yn y cyflwr gwreiddiol, lle mae pob yn gobeithio dda. Ac yn awr os byddaf yn rhedeg mathemateg, 123 ymddangos i weithio. Ond nid yw hyn yn wir yn brawf effeithiol, i ddweud iawn, sy'n gweithio. 789, sy'n gweithio. Amser i gyflwyno. Oherwydd mae achosion cornel arall yma. Nid yw llinyn ddim yn rhoi i ni lawer o drafferth trwy deipio mewn llawer gyfan o gymeriadau. Ond beth os ydw i'n teipio yn hyn? Taro y rhif 1 a lot, lot cyfan yma - popeth yn iawn, mae'n mynd braidd yn ddiflas, felly dwi'n mynd i aros yma, ac yr wyf i'n mynd i daro Chofnoda. Beth mae'r uffern newydd ddigwydd? Felly, gall hyn mewn gwirionedd yn cael eu hesbonio. Felly oedd yn mynd ag ef fel deuaidd? Mae meddwl da, ond na, nid y ffaith ei fod yn cymryd yn fel deuaidd, oherwydd yn wir, a oedd yn union fath o cyd-ddigwyddiad. Gallwn wneud hyn eto. Felly, does dim 2 yn y system ddeuaidd, dyna yn ôl pob tebyg yn ddigon beth bynnag. Enter. Felly nid oedd y broblem. Beth arall? Yn union. Felly meddyliwch yn ôl at yr hyn mae int mewn gwirionedd. Mae'n 32 catiau sydd gyda'i gilydd yn cael eu dehongli fel rhif. Os oes gennych 32 catiau, sy'n golygu y gall pob un o'r darnau fod yn o 0 neu a. 1, 0 neu 1 Felly mae hynny'n golygu mae yna ddau posibiliadau ar gyfer y darn, dau bosibilrwydd ar gyfer hyn, dau bosibilrwydd ar gyfer y bit - felly dyna 2 waith 2 waith - felly dyna 2 i rym 32 yw cyfanswm nifer y amnewidiadau o sero a rhai os oes gennych 32 bachau, zeros neu rai, o flaen chi. Felly os oes gen i 2 i 32, fathemategol, dyna beth? Felly, mae'n llawer. Mae'n 4 biliwn, rhoi neu gymryd. Ac nid 4000000000 yw'n ymddangos i fod yr hyn oedd yn hargraffu yma. Mewn gwirionedd, mae hyn yn edrych yn agosach at 2 biliwn. Ond nid yw hyn yn cyd-daro. Mae'r ffaith bod y cyfrifiadur wedi camddehongli fy rhif enfawr, fy dilyniant enfawr o rai ac yna fy dilyniant enfawr o deuoedd, fel tua 2 biliwn, yn esbonio sut? Mae terfyn ar int. Mae yna yn sicr yn werth mwyaf y gallwch ei gynrychioli. Ond mae fel arfer yn 4 biliwn, dde? Os bydd 2 i 32 yw tua 4 biliwn, sy'n ymddangos fel dyna'r rhif mwyaf. Felly, nid gweddill, ond mae meddwl da. Rhifau negatif. Felly, os oes gennych 4000000000 bethau posibl y gallwch cynrychioli â'r gwahanol batrymau o 32 0au ac 1s, yn dda, mae'n sefyll i reswm y gallwn pobl eisiau cynrychioli nid yn unig gyfanrifau positif ond gyfanrifau negatif. Ac yn wir, dyna'r rhagdybiaeth bod C yn ei wneud. Felly, gyda 32 darnau, gallwch gynrychioli yn fras negyddol 2 biliwn yr holl ffordd i fyny i bositif 2 biliwn. Ac felly yn yr achos hwn, yr hyn rydym ni'n wirioneddol gweld yn unig ymylon y gallu ein cyfanrif, ac mae gennym, felly i siarad, gorlifo yn gyfanrif. Rydym wedi ceisio gwasgu darnau mwy i mewn iddo nag y gellir mewn gwirionedd yn addas. Felly, y canlyniad terfynol yw ein hanfod yr holl ddarnau 1. Rydym wedi troi ein holl ddarnau yn ddiweddarach, rydym wedi ceisio i gynrychioli y nifer fwyaf posibl, ond nid yw'n glir bron ddigon mawr i gynrychioli'r ddau beth rwyf wedi ei deipio i mewn yn unig Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Cwestiwn da. Pam na allwn ni jyst cynrychioli'r negyddol llofnodi fel dim ond cymeriad? Felly, rydym yn hollol gallai, a gallem wedyn arbed yn ychydig yn ychwanegol. Ond rydych chi'n dal yn mynd i gael i gynrychioli'r dash, a mae hynny'n mynd i gostio i chi o leiaf rhywbeth, yn ôl pob tebyg ychydig. Felly ie, gallai gennym 32 ddarnau a ddefnyddir ar gyfer ein rhif, ond erbyn hyn mae arnom angen ychydig arall a ddefnyddir ar gyfer ein llinell doriad symbol, arwydd minws. Felly, nawr rydym gennym 33 o werthoedd bit, y gallem ei wneud, ond mae'n dim ond nid y ffordd y mae'n ei wneud. Rydym yn llunio barn years galwad yn ôl, 32 darnau yn fath o uned o fesur yma. Felly, rydym yn mynd i ddefnyddio un o'r rhai darnau yn effeithiol i cynrychioli negyddol, a 31 darnau i gynrychioli'r rhif. Cwestiynau eraill? Mae pob hawl. Mae hynny'n llawer. Pam nad ydym yn mynd yn ei flaen ac yn cymryd ein pum-munud egwyl yma? Mae pob hawl. Felly eto, er mwyn gorbwysleisio ceisiadau mathemategol o raglennu, gadewch i ni dim ond tyn oddi ar un enghraifft hon yn cyn i ni symud i mewn lluniadau eraill, dim ond oherwydd ei fod yn Bydd dangos ambell bwynt tramgwydd cyffredin ar rai o'r y pethau sylfaenol pan ddaw i raglenni ysgrifennu. Yn yr achos hwn, yn gwneud rhifyddeg ymadroddion sydd â rhai berthnasol diddorol i'r gystrawen. Felly, mae hyn yn unig yw fformiwla gyda y gallwn drosi tymheredd o Fahrenheit i Celsius. Os nad ydych yn cofio, nid yw hyn ond y fformiwla. Felly, os gallwn gau yn Fahrenheit gwerth o 32 gradd, sydd yn rhewi, mae hynny'n mynd i fod yn 32 llai 32 yw 0, ac yn wir, 0 mewn Celsius hefyd yn rhewi. Felly pwyll cyflym gwirio yno - dyna y fformiwla cyfarwydd. Gadewch i mi fynd draw at y peiriant, fodd bynnag, a dechrau ysgrifennu rhaglen o'r enw, fel, f2c; "Fahrenheit i Celsius dot c ". Ac ar y top yma, dw i'n mynd dechrau i ffwrdd gyda # yn cynnwys stdio.h, ac yr wyf i'n mynd i wneud brif int (gwag), a eto, byddwn yn dod yn ôl yn y dyfodol ynghylch pa int olygu yno a beth ddi-rym yn golygu bod. Ac yn awr gad i mi fynd yn ei flaen a gweithredu rhaglen sy'n yn y bôn mae hyn yn trosi i ni. Felly printf, gadewch i ni ddweud, tymheredd yn Fahrenheit. Ac yna gadewch i mi fynd yn ei flaen a chael y gwerth gan y defnyddiwr. Pa fath o werth a gaf gan y defnyddiwr os ydw i eisiau iddynt roi i mi tymheredd yn Fahrenheit? Yeah? Beth fyddech chi'n ei gynnig? Yeah. Felly, arnofio yn teimlo eithaf rhesymol. Mae gennym, unwaith eto, dim ond ychydig o ddewisiadau sy'n rydym wedi gweld hyd yn hyn. Mae gennym pethau fel torgoch, dwbl, arnofio, int, hir hir, bool, llinyn. Felly, o'r rhain, arnofio yn teimlo eithaf rhesymol. Gallem ddefnyddio dwbl, iawn, oherwydd os ydym wir eisiau cynrychioli tymheredd a dynol - 98.60000 - gallem ddefnyddio 64 did i wneud hynny, ond mae'n teimlo fel overkill ar gyfer y tymheredd. Felly, gadewch i 'jyst yn mynd gyda fflôt. Nawr mae angen newidyn. Dim ond i gadw pethau'n syml, dw i'n mynd i alw ei f, ond yr wyf Gallai un mor gywir ei alw tymheredd, ond naill ai yn iawn. Felly, arnofio f = GetFloat. Cyn gynted ag yr wyf yn awr wedi penderfynu defnyddio GetFloat, fodd bynnag, yr wyf angen i wneud un cywiriad. Yeah. Felly mae angen i # cynnwys , fel arall, y casglwr yn mynd i gweiddi arnon ni. Nawr bod gen i arnofio, gadewch i mi fynd yn ei flaen a gwneud y trosi. Felly, yn gyntaf, gadewch i mi fynd i mewn i'r arferiad yma o sylwadau fy cod. Felly eto, sylw yn unig yw nodiant i'r dynol sy'n nad ydynt yn rhan o'r rhaglen fel y cyfryw, ond ei fod yn un, yn eich helpu i deall beth wnaethoch chi y bore nesaf, neu y nesaf mis, mae'n helpu eich cyd-addysgu yn deall yr hyn a wnaethoch chi neu beth yr ydych yn bwriadu ei wneud, felly mae'n ymarfer yn gyffredinol yn dda iawn. Mae pob ychydig linellau o god, ysgrifennu sylw at y eich hun neu eich cydweithiwr. Felly yma, dw i'n mynd i ddweud, "Gofyn defnyddiwr ar gyfer tymheredd." Nid yw'n rhaid i chi fod brawddeg gyflawn, dim ond ymadrodd byr. Ond mae'r syniad y tu ôl i sylwadau yn C yw bod pob un o'ch Dylai sylwadau grym i chi - neu, dyweder, TF neu gydweithiwr - i sgimio eich rhaglen a gwybod yn union beth mae'n ei wneud, drwy beidio â cymaint darllen y cod, ond trwy ddarllen y sylwadau, a Dylai fod yn gryno ac yn glir. Mae pob hawl, felly, yn awr gad i mi fynd yn ei flaen a dweud, "Trosi Fahrenheit i Celsius. "Felly rwy'n mynd i fynd yn ei flaen ac yn ei wneud, gadewch i ni ddweud, arnofio c. Byddwn yn cadw Celsius fel Gwerth pwynt arnawf. A gadewch i mi gymryd drywanu ar hyn. Y fformiwla yw, unwaith eto, i fyny yma. Fel 5/9 gwaith F minws 32. Felly, gadewch i ni wneud hyn. Hynny 5 wedi'i rannu gan 9, minws - Wps, yr wyf cyboledig i fyny yn barod. Times. Felly, 5/9 gwaith F minws 32. Felly F minws 32, hanner colon. Ac yn awr, i lawr yma, yr wyf i'n mynd i fynd yn ei flaen a dweud, argraffu canlyniad. Ac mae hyn yn rhan hawdd. Printf. Sut ydw i'n mynd ati i argraffu hyn? Wel, gallwn ddweud "Dyna rhif yn Celsius yw% f \ n", yn unig ar gyfer rhai estheteg. Ac yna beth werth ydw i'n awyddus i gau'r yma fel y printf ail ddadl? Iawn. Felly, dim ond c. Felly, byddwn yn dechrau gyda hyn ac yna dim ond dychwelyd 0. Unwaith eto, mae wedi ddim i'w wneud â'r math. Mae'n jyst yn golygu popeth yn iawn. Yn awr, mae hyn yn gywir, y rhaglen hon? Mae pob hawl. Felly, yr wyf wedi gwneud rhai camgymeriadau. Hyd yn oed os nad oes gennych syniad beth yw rhaglennu, gallwch ddatrys o casglu yn ôl i'r ysgol radd hyn y mae'r Gallai camgymeriadau yma fod. Beth yw un o'r cyntaf? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Yeah. Felly, rydym yn colli cromfachau. Roedd yn fwriadol a wneuthum cromfachau yn y prif llithro yma, oherwydd mae mewn gwirionedd syniad hwn o drefn o weithrediadau, neu blaenoriaeth, lle gweithrediadau penodol - lluosi - fod yn uwch rhwymo, yn cael blaenoriaeth uwch, na phethau fel adio neu dynnu. Felly, rydym wedi gwneud hyn ers blynyddoedd dim ond er mwyn gwneud yn glir yn union pa weithrediad mathemategol sydd yn cael ei wneud yn gyntaf. Felly mae'n debyg y dylwn dynwared yn union hynny. Fel arall, mae'r cyfrifiadur yn ôl pob tebyg yn mynd i geisio gwneud rhywbeth fel rhaniad 5 erbyn 9, yna lluosi F, yna tynnu 32 o holl beth. Nad yw, mewn gwirionedd, yr hyn rydym am ei wneud. Felly, gadewch i ni parenthesize. Gadewch i ni ychwanegu fy cromfachau yma, cromfachau yma. Gadewch i ni roi hyn dros yma. Yma, Fi jyst sylwi ar gamgymeriad arall yr wyf ar hyd y ffordd. Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Ah. Da. Felly, rydym mewn gwirionedd yn cael yr un cyfanrif mater adran o'r blaen. I gywiro hynny, gadewch i ni weld beth yw'r symptomau yn. Ond rydym ni'n mynd i gael i gywiro un camgymeriad arall yma. Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Ydw. Felly, camgymeriad dwp a wneuthum, ond yn hynod o bwysig. Nid yw'r cyfrifiadur yn mynd i jyst troi llygad dall a gadael i mi ddefnyddio F cyfalaf, pan oeddwn mewn gwirionedd yn datgan y newidyn fel f llythrennau bach yma, yn llinell 8. Felly, mae angen i mi gywiro yn llinell 11 fy cyfalafu, y mae hyn o bryd yn ôl roedd yn F cyfalaf mewn camgymeriad. Beth am fan hyn? Pe bai hyn yn llythrennau bach yn ogystal? Dylai fod yn, ond mae hynny'n cyd-ddigwyddiad. Bod f% wedi ddim i'w wneud â'r amrywiol. Felly, dim ond i fod super glir yma, gadewch i mi fynd yn ei flaen a ail-enwi hyn, yn fyr, "tymheredd." Gadewch i mi ail-enwi y "tymheredd." Gadewch i mi Methu ail-enwi hyn. Oherwydd, unwaith eto, f% yn fyd-eang yn golygu, "fel y bo'r angen gwerth pwynt." Wedi ddim i'w wneud gyda fy amrywiol. Ond "tymheredd" i gyd dros y lle yn unig yw ychydig yn amleiriog, felly dwi'n mynd i fynd yn ôl at fy llythrennau bach "f" s. Yn awr, gadewch i mi fynd yn ei flaen i lawr at fy ffenestr yma. Gwnewch f2c - a oedd, unwaith eto, yr enw mympwyol I roddodd i'r ffeil hon. Ymddangos i wedi ei lunio. Gadewch i mi redeg f2c. Enter. Tymheredd yn Fahrenheit - gadewch i ni wneud yn un hawdd. 32. OK, cywiro. Ond, os wyf yn ei wneud yn awr 212 i gael berwi - damn. Mae pob hawl. Felly, nid, yn amlwg yn gywir, os yw eich TF ceisio o leiaf dau werth. Felly beth yw'r broblem yma? Wel, ydych chi eisoes yn rhoi eich bys ar yr hyn y mater. Ond pam bod yr achos? Up yma, pan oeddwn i'n gwneud y math o 5 wedi'i rannu gan 9. Felly gysyniadol, mae hynny'n berffaith gywir. Gwbl gyson â'r fformiwla. Ond gyfrifiaduron ond yn gwneud yn union yr hyn yr ydych dweud wrthyn nhw am wneud. A beth ydym ni'n effeithiol dweud wrth y cyfrifiadur yma rhannwch y 5 gyfanrif gan y 9 gyfanrif ac yn rhoi 'm' r canlyniad. Y broblem yw, fodd bynnag, pan fyddwch yn is-adran gan ddefnyddio data mathau, mae'r allbwn yw'r math ddata un fath â'r mewnbynnau. Ac felly os yw'r ddau fewnbwn yn y ddau ints, mae'r allbwn yn mynd i fod yn int. Ac hynny 5 wedi'i rannu gan 9 yn rhywbeth pwynt. Ond beth yw'r cyfanrif agosaf i bwynt rhywbeth? Felly, mae'n mewn gwirionedd 0. Felly, wrth i ni drafod ddydd Llun, popeth ar ôl y degol pwynt yn cael ei fyrhau. 'I jyst yn cael eu taflu i ffwrdd. Felly, mae hyn yn gamgymeriad gyflawn, oherwydd efallai y byddaf yn ogystal dim ond lluosi popeth erbyn 0 yma. Yn awr, gallaf atgyweiria hon mewn dwy ffordd. Gallwn wneud hyn. 5.0 rhannu gan 9.0. Yn dechnegol, nid wyf yn hyd yn oed angen i wneud hynny. Mae'n gwneud yn ddigon i ddim ond gwneud un o'r rhifau fflôt - neu ddwbl - drwy roi'r pwynt degol yma. Oherwydd yr hyn sy'n digwydd yn awr yw pan fyddwch yn rhannu'r yn gyfanrif gan fflôt, neu ddwbl, y cyfrifiadur yn mynd i wireddu oh, un o'r rhai yn fwy manwl gywir. Gadewch i mi gyfeiliorni ar ochr o roi mwy o fanylder nag oeddech yn bwriadu. Felly, bydd yn newid y canlyniad - bydd yn dychwelyd y canlyniad fel Gwerth pwynt arnawf yn ogystal. Felly, a fyddai'n gweithio. Byddai hyn yn gweithio. Ac mae un dull arall y byddwn yn gweld yn y mwy o fanylion yr wythnos nesaf. Gallwch mewn gwirionedd, fel y rhaglennydd, ddweud wrth y cyfrifiadur mewn gwirionedd drin un math data fel er ei fod yn un arall. Felly, gallai Fi 'n weithredol wneud hyn. Mewn cromfachau, gallaf ddweud rhywbeth fel (arnofio), agored paren, paren agos. Ac mae hyn yn hyn a elwir "castio." Unwaith eto, yn fwy hyn yr wythnos nesaf. Ond dim ond y ffordd rhaglennol o ddweud y cyfrifiadur, yeah Rwy'n gwybod 9 yn gyfanrif neu hir. Rwy'n gwybod nad ei fod yn werth pwynt arnawf. Ond ei drin yn briodol beth bynnag. Felly, er mwyn bwrw math data yn golygu i drosi o un i'r llall. A dweud y gwir, mae hyn yn unig yw ychydig yn hyll, felly byddwn yn cynnig byddwn yn mynd gefn i'r awgrym gwreiddiol o ddim ond trosi y pethau hyn i arnofio werthoedd pwynt llaw. Oherwydd awron 'i' jyst super glir beth sy'n mynd ymlaen, ac nid yw'n bob un sy'n tynnu sylw. Felly, gadewch i ni bellach yn mynd yn ôl i mewn i fy ffenest terfynell. Gwnewch f2c. Gadewch i mi fynd yn ei flaen ac yn rhedeg y. Ac, wrth fynd heibio, byddwch yn cael diflasu teipio gorchmynion hyn dro ar ôl tro, yn sylweddoli bod cyfrifiaduron, fel Linux yma, yn tueddu i fod yn eithaf smart. Ac os wyf yn taro Up, gallwn fynd trwy fy hanes gyfan o gorchmynion, Up and Down. Felly, yn yr achos hwn yma, gallaf jyst yn mynd Hyd at redeg gwneud f2c. Rwy'n cael yelled, oherwydd Fi jyst yn gwneud hynny eiliad yn ôl. Mae eisoes yn gyfoes. Felly nawr gallaf redeg f2c eto. Gadewch i ni geisio 32 Fahrenheit. Nawr gadewch i ni geisio 212 Fahrenheit. PHEW. Ymddangos i weithio. Yn awr, mae hyn yn dda, ond mae'n teimlo ychydig yn mympwyol a fyddai'n Rwy'n dangos chwe rhif ar ôl y pwynt degol. Hawl? Os mai chi yw'r person y tywydd ar y teledu, rydych yn fath o doofus os ydych chi'n darllen y tymheredd i y radd o gywirdeb. Felly, gadewch i ni symleiddio hyn. Felly, gadewch i ni mewn gwirionedd yn mynd i fyny yma, i fy printf. Ac ie, yr wyf am i arnofio. Ond yr wyf am i hyn nodi y manylder. Ac yr wyf i'n mynd i fod yn gryno bach. Rydw i'n mynd i ddweud, yn rhoi i mi un pwynt ar ôl y lle degol. Felly, yn hytrach na dweud f%, dw i'n mynd i ddweud% .1 f. Ac mae hyn yn unig yn golygu rhoi i mi un swydd ar ôl y pwynt degol. Mae pob hawl. Gadewch i ni geisio hyn eto. Gadewch i mi ail-redeg ar ôl llunio. Ac yn awr yr wyf yn teipio mewn 32, ac yr wyf yn mynd yn ôl i werth yn fwy cryno. A allaf deipio i mewn, yn awr, 212, a mynd yn ôl fwy cryno gwerth yn ogystal. Ac mae pethau eraill y gallwch chi ei wneud gyda printf. Gallwch mewn gwirionedd yn nodi pa mor eang y dylai'r nifer fod. Os ydych chi am gael padin arno, fel y gallwch dde-alinio neu chwith-alinio eich holl rhifau neu ceisio bethau ganolfan. Felly, yn sylweddoli bod driciau bach y gallwch eu gwneud yno. Ond maent dim ond berwi i lawr i godau fformat, fel y mae gennym yno. Felly, o ran y mater o flaenoriaeth. Mae hwn yn tabl diflas iawn i fynd drwy'r drefnus. Ond yn sylweddoli bod awduron C wedi dod o hyd i'r rheolau sy'n pennu pa weithredwyr uwch blaenoriaeth, mwy o bŵer rhwymo, nag eraill. Felly, tra yn yr ysgol radd, rydym yn gyffredinol yn gwybod ei bod yn lluosi a rhannu, yna adio a thynnu, yna rhai pethau eraill. Mewn byd o raglenni, mae llawer rhestr hwy o bethau. Ac nid yw hyn yn rhywbeth gwerth cofio nawr. Byddwch yn cael acclimated iddo cyn hir. Ond yn union fel yn yr ysgol radd, cromfachau yn gyffredinol datrys y materion blaenoriaeth, drwy wneud super glir i'r cyfrifiadur a dynol fel ei gilydd yr hyn a fwriedir. Felly, yn ystyried hyn yn unig taflen twyllo ychydig yno. Ond mae'r rhan fwyaf o'r manylion hynny ni fyddwn yn cael i ers peth amser. Mae pob hawl. Nawr, gadewch i ni adeiladu i fyny ac i symud i ffwrdd o'r ychydig gwirion enghreifftiau mathemategol. Yn dal i ddefnyddio yr hanfodion yr un, ond yn dechrau mynegi ein hunain ychydig yn fwy fel Scratch. Felly, yn Scratch, cawsom y mynegiadau Boole. Ac yn Saesneg, mynegiad Boole yw beth? Gwir neu ffug. Mae'n rhywbeth sy'n gwerthuso yn wir neu'n anwir. 1 neu 0. Ar neu i ffwrdd. Beth bynnag yr ydych am ei alw. Nawr yn Scratch, y darnau pos yn edrych fel hyn. A dyna y cyfuniad, ar y gwaelod yno, o dri darnau pos. Un ar y cyd - rhywbeth sydd yn wag ac yn wag. Ac yna ddau mynegiadau Boole tu mewn iddo. Felly, gallwch mynegiadau Boole nythu i gael rhagor o cymhleth mynegiadau Boole. Er enghraifft, os yw dydd Sadwrn, ac mae'n braf tywydd, ac yna mynd allan. Neu rywbeth fel 'na mympwyol. Felly, gallwch ymuno â mynegiadau Boole i ddod o hyd i gwerth gwir mwy o faint, y mae ei ateb yn seiliedig ar y rhai llai. Yn awr, yn C, diolch byth, y mapiau hyn yn mewn gwirionedd yn eithaf syml. Cromfachau helpu i wneud pethau yn glir yma. && Hyn yn golygu "a." Felly dyna sut y rydym yn mynd i newid y blociau o Scratch i C. Ac ar gyfer yr amodau a welsom yn Scratch, ar y llaw chwith ochr yno, gallaf pentyrru nhw yr un modd yn C. Os yw x yn llai nag y, yna gwnewch hyn. Arall os x yn fwy na y, yna gwnewch hyn. Arall yn rhesymegol rhaid iddynt fod yn gyfartal, felly dweud eu bod yn gyfartal. Felly, gallwn yn awr ddechrau adeiladu y pethau hyn i fyny. Felly, gadewch i ni wneud yn enghraifft. Gadewch i mi agor i fyny ffeil sydd ar wefan y cwrs y Ysgrifennais o flaen llaw. Sy'n cael ei alw'n nonswitch.c. A byddwn yn gweld pam fod mewn dim ond hyn o bryd. Felly, yn y ffeil - nonswitch.c-- 1 yn sylweddoli bod yna criw cyfan o sylwadau ar y brig. Dyna dim ond egluro enw'r ffeil, beth mae'n ei ei wneud, ac yn y blaen. Ac mae'n debyg yn dangos y defnydd o Boole A-ing - conjoining ddau fynegiad. Felly, gadewch i ni weld sut y mae'r rhaglen hon yn gweithio. Wyf yn cynnwys fy dwy ffeil, cs50.h a stdio.h. Os byddaf yn sgroliwch i lawr, yn awr, at y rhaglen, mae'n ychydig yn hwy nag yr ydym wedi ysgrifennu o'r blaen, ond 'n bert ddarllenadwy. Felly, Tro cyntaf i mi argraffu i'r defnyddiwr, ar-lein 18, "Rhowch i mi cyfanrif rhwng 1 a 10." Felly sy'n iawn yno. Nawr rwy'n cael y cyfanrif. Ond sylweddoli bod GetInt - 'n bert syml. Mae'n dim ond yn mynd i gael int. Mae'n mynd i beidio â sicrhau ei fod yn cael int a llinyn neu fflôt. Ond nid yw'n mynd i wneud unrhyw fath o wirio ffin. Nid yw'n mynd i hidlo'r niferoedd i fod rhwng ystod benodol. Felly, mae'n rhaid i ni weithredu ein hunain. Felly, yn union fel yn Scratch, lle y gallwn wneud ar y cyd o dau fynegiad, gallaf wneud hynny yn C fel a ganlyn. Os n yn fwy na neu'n hafal i 1, ac n yn llai na ac yn neu'n hafal i 3, yr wyf yn mynd i iawn fympwyol gorchymyn a plith i fod yn nifer fechan. Dim ond er mwyn datganiad. Arall os yw n rhwng 4 a 6, print "Rydych yn dewis gyfrwng rhif. "Else os n yw rhwng 7 a 10, print" Rydych yn dewis a nifer mawr. "Else argraffu" chi ddewis rhif annilys. " Oherwydd rhesymegol, sy'n dilyn os ydym wedi wedi blino'n lân ein hystod. Felly, yn sylweddoli nad yw hyn yn hollol sut y byddwn yn ysgrifennu yn fwy na neu'n cyfartal i mewn dosbarth mathemateg. Hawl? Byddwch fel arfer yn tynnu fel hyn, gyda'r llinell yn ei sgil. Ond nid oes allwedd o'r fath ar fy bysellfwrdd. Felly mae'r symbol yn C ar gyfer mynegi fwy na neu'n cyfartal i yw dau gymeriad, a'r symbol am lai na neu'n hafal i yw dau gymeriad yn ogystal. Mae pob hawl. Felly, os wyf yn rhedeg y rhaglen, mae'n debyg y gallwch ddyfalu beth yw mynd i'w wneud. Os byddaf yn mynd yn ei flaen ac yn gwneud nonswitch, Enter. Ac yna yn rhedeg nonswitch. Rhowch i mi rif rhwng 1 a 10. Rydw i'n mynd i roi 11. Yr wyf yn codi nifer annilys. Gadewch i mi roi cynnig ar y rhif 3. Yr wyf yn codi nifer bach. Felly, yn weddol syml yno. Beth os wyf am newid ymddygiad y rhaglen hon ac wneud rhywbeth ychydig yn wahanol yn lle hynny? Gadewch i mi fynd yn ei flaen a dweud hyn. Gadewch i mi gael gwared ar yr holl hyn. A gadewch i mi ddweud os (n == 42). Ac yna dwi'n mynd i fynd yn ei flaen a dweud print "Rydych dewis y ateb cywir. "Else rydym yn mynd i fynd yn ei flaen a dweud, printf ("Rydych dewis y ateb anghywir ");. Iawn. Dim ond oherwydd. Nawr, ychydig o bwyntiau gallwn wneud yma. Un, doeddwn i ddim yn teipiwch y symbol y byddech yn meddwl yn y mwyaf rhesymol. Pan fyddaf am wirio cydraddoldeb, troi allan nad ydych yn defnyddio'r arwydd cyfartal. Chi yn hytrach na defnyddio'r arwydd cyfartal cyfartal. Ac efallai pam fod, dim ond reddfol? Yeah. GYNULLEIDFA: [Anghlywadwy] DAVID J. Malan: Cywir. Mae'r arwydd cyfartal yn cael ei ddefnyddio eisoes ar gyfer aseiniad. Nid yw rhywun oedd yn wir yn feddwl hyn trwyddo. Ac felly yn awr, pan ddaw i brofi cydraddoldeb, mae'n rhaid i ni fod yn fwy eglur, a dweud hafal gyfartal. Camgymeriad cyffredin iawn yw i wneud hyn. Ac, os yn ystod oriau swyddfa neu rywbryd yr wythnos nesaf neu yn y y pythefnos nesaf byddwch yn gwneud rhywbeth fel hyn ac yna cael trafferth â nhw am 10, 20 munud yn ceisio at chyfrif i maes yr hyn y byg damn yw, yn sylweddoli eich bod yn un o'r rhai bobl a wnaeth y camgymeriad. Felly, super hawdd i'w wneud. Ond y nod yn awr yw i ward oddi ar y camgymeriad. Gallai hyn gwerthuso, gan fod yr hyn mae hyn yn ei ddweud mewn gwirionedd? Os n cael 42. Felly y bobl a ferf defnyddio, ar lafar, i fynegi syniad o aseiniad yw "ei gael." Felly, os n cael 42. Felly mae hynny'n golygu neilltuo 42 i n. Nawr mae gennyf mynegiad Boole mewn cromfachau, y tu mewn y cyflwr hwn, y gwerth sydd yn 42. Hawl? Oherwydd os ydych yn ei werthuso gan y, y tu mewn i'r cyfanswm ateb, yn awr, yw 42. Felly, os wyf yn gofyn y cwestiwn, "os (42)," yr hyn sy'n bod ei ddweud mewn gwirionedd? Wel, gall mynegiadau Boole yn unig fod yn wir neu ffug. 1 neu 0. Ar neu i ffwrdd. Felly, rydym yn ymddangos i gael achos cornel yma, lle mae'r holl o sydyn, i ddim yn dweud "os (42)". Nid yw hynny'n werth Boole. Felly, yr hyn y cyfrifiaduron yn ei wneud, fodd bynnag, yw ei hanfod yn cyfateb unrhyw beth nad yw hynny'n cael ei ddehongli 0 i fod yn wir. 1. Ar. Maen nhw i gyd cyfatebol swyddogaethol. Dim ond y gwerth 0, neu yr allweddair ffug, fel y gallwn eich yn y pen draw yn gweld, mewn gwirionedd ffug. Felly, "os (42)" fyddai mewn gwirionedd yn wir, oherwydd ei fod yn di-sero. Felly, i fod yn fwy manwl gywir yma, mae gwerth Boole nid yn wirioneddol felly llawer yn wir neu'n anwir, ond ar gyfer yr achos, os yw 0 neu heb fod yn sero. Felly, ffug neu nad ffug. Ac mae hynny'n ein galluogi i gynnwys yn fwy posibiliadau yn y mynegiant cromfachau. Felly mae angen i, byth mor ofalus, yn dweud hyn - os (n == 42). Yn syml, oherwydd mae angen i ni nodi prawf o gydraddoldeb, Nid yw aseiniad o werth. Beth arall sydd werth eu nodi yma? Mae'r rhain yn braces cyrliog nad ydynt mewn gwirionedd yn angenrheidiol. Rydw i wedi bod yn ei wneud ohonynt yn unig i fod yn nit-picky yma. Ond pan fydd gennych gyflwr mai dim ond un llinell o cod, fel hwylustod, nid rhaglenwyr oes angen i ddefnyddio y braces cyrliog. Mae'n ddigonol i ddim ond indent, am resymau esthetig, a yna ysgrifennwch eich llinell o god. Dim ond pan fyddwch am i ysgrifennu dwy linell o god - ar gyfer enghraifft, arall printf ("Hwyl!"). Os ydych chi am ei wneud hynny, mae hyn yn cael ei dorri. Gallwch indent yr holl ydych am, ond y ffaith eich bod wedi teipio dwy linell o god heb ddefnyddio braces cyrliog yn golygu na fyddai hyn yn rhaglen yn rhedeg yn gywir neu a allai Nid yw hyd yn oed yn llunio yn gywir. Felly, ar hyn o bryd, i fod yn onest, yr wyf yn meddwl yr arfer gorau yn unig defnyddio'r braces cyrliog, a byddwch yn dod o hyd eu bod yn gwneud super glir beth sy'n mynd ymlaen. Hefyd, wrth fynd heibio - yn enwedig os ydych chi ymhlith y rhai sy'n defnyddio y llyfrau a argymhellir neu adnoddau ar-lein - sylweddoli fod yna syniad hwn o arddull yn rhaglennu. Ac mae rhai pobl yn well i roi'r Brace cyrliog dros yma ar linell. Well gan rai pobl i wneud pethau gwirion, hoffi eu rhoi yma. Does dim ateb anghywir pan ddaw i arddull, ond mae hyn yn anghywir. Ond mae rhai pobl yn ei wneud. [Chwerthin] DAVID J. Malan: Felly, yr wyf yn sôn am hyn yn awr, yn syml oherwydd fel eich bod yn darllen i fyny ar bethau mewn llyfrau neu ar-lein, rydych yn mynd i gael negeseuon gwahanol gan wahanol athrawon a gwahanol awduron. A dim ond yn sylweddoli hynny, swyddogaethol, maen nhw'n cyffredinol cyfwerth, ond byddwch yn gyson. Felly, yn yr achos hwn, byddwn yn safoni ar y cyrliog braces leinin i fyny yma ar y chwith. Mae pob hawl. Felly, gadewch i ni fynd yn ei flaen yn awr ac yn rhedeg hyn, a gweld beth sy'n digwydd gyda'r rhaglen hon. Gwnewch nonswitch. Yna rhedeg nonswitch. Rhowch i mi cyfanrif rhwng 0 a - felly nid yw hynny'n berthnasol anymore, ond Im 'jyst yn mynd i ddweud fympwyol 42. Ac yr wyf yn dewis yr ateb cywir. Wel yn awr, gadewch i ni mewn gwirionedd yn cymryd hyn i gyfeiriad gwahanol. Mae'n troi allan mae rhywfaint o gystrawen eraill yr ydym yn Gall eu defnyddio mewn rhaglen. Dyma ddarn newydd o gystrawen sy'n swyddogaethol yr un fath, ond dim ond yn cyflwyno ffordd arall o fynegi ein hunain. Felly, mae hyn yn beth a elwir yn "ddatganiad switsh." A datganiad switsh yn gweithredu fel a ganlyn. Mae'n cymryd, mewn cromfachau, mae gwerth yr ydych am ei "Newid" ar. Rydych am i ymddwyn yn wahanol yn seiliedig ar ei werth. Felly, mae hyn yn golygu newid ar werth n. A beth mae hynny'n ei olygu? Wel, os n yn 1 neu 2 neu 3, mynd yn ei flaen ac argraffu "Rydych dewis nifer fawr "ac yna torri. Y rheswm dros y toriad yw bod y ffordd C yn gweithio mor gynted ag y bydd yn canfod achos sy'n cyd-fynd, yn dechrau gweithredu pob un o'r cod isod hynny. Felly os oes gen i un llinell o god, fel yr wyf fi yma ar llinell 27, mae'n yn cael ei ddienyddio. Os byddaf yn ychwanegu llinell arall yma, mae'n cael ei weithredu. Arall llinell yma, mae'n cael ei weithredu. Mae'r rhaglen yn unig yn stopio gweithredu beth sydd o dan y datganiad achos perthnasol pan fyddaf yn benodol dweud "dorri." Felly anghywir. Iawn, yn yr achos hwn, o ganlyniad. Achos 4 neu 5 neu 6, yn yr un modd, yn mynd i argraffu neges. Yn yr achos hwn, rhif canolig. Egwyl. Achos 7, 8, 9, 10, mae'n mynd i argraffu "Rydych dewis mawr rhif. "Break. Ac yna mae llythrennol air allweddol o'r enw "diofyn" sy'n effeithiol fel y "arall" adeiladu. Felly cystrawen newydd, ond yn ddeallusol, dim byd o gwbl yma newydd. Mae'n union fel y Scratch. Os, arall os, arall os, math o bloc. Felly dyna y fersiwn newid y rhaglen hon. Ond sylwi ein bod yn gwneud hynny gyda rhifau yma. Gadewch i mi agor ail fersiwn, dim ond i ddangos rywbeth ychydig yn fwy cadarn. Felly dyma ni yn cael graddau yn lle hynny. Troi allan gallwch ddefnyddio switshis nid yn unig ar cyfanrifau, ond ar cymeriadau. Nid ym mhob math data, ond o leiaf ar gymeriadau. Felly yma, gallem wneud rhywbeth fel os yw gwerth y C y y defnyddiwr deipio i mewn, yn unol 19, drwy ddefnyddio'r swyddogaeth GetChar, yw prifddinas A neu lythrennau bach a, gadewch i ni ei ddehongli fel gradd, ac yn dweud eu bod yn dewis cael gradd 'rhagorol. Ac i lawr ar hyd y datganiad newid, y mae gennym eraill achosion ar gyfer "B" s a "C" s, ac yn y blaen. Ond gadewch i ni yn awr yn cloi allan un peth arall. Ac eto, math o hedfan drwy rhai o'r enghreifftiau hyn. Ond mae'n wirioneddol fel y gallwn eu cymhwyso, yn awr - neu mewn gwirionedd, dim ond eu cyfieithu nawr - i C. Felly, gadewch i mi fynd ymlaen a gwneud hyn. Rydw i'n mynd i agor ffeil newydd. Ac yr wyf i'n mynd i'w gwneud yn cynnwys . Ac yna dwi'n mynd i wneud int brif (gwag). Gadewch i mi arbed y ffeil fel loop.c. Yn union fel enghraifft. Ac yr wyf i'n mynd i fynd yn ei flaen ac yn gwneud y canlynol. Rwyf am i ysgrifennu rhaglen iawn 'n faith. Felly 10. Gadewch i ni wneud hyn. 9. Mae pob hawl. Cyn gynted ag y byddwch yn dechrau gwneud hyn mewn rhaglennu, rydych yn yn ôl pob tebyg yn gwneud rhywbeth o'i le. Ond byddwn yn dechrau yno beth bynnag. Wps. Sydd mewn gwirionedd yn anghywir. 7. 6. 5. 4. Nid oes dim yn mynd i ddigwydd pan fyddwn yn mynd i 0. 3. 2. 1. Iawn. 0. Dileu. Mae pob hawl. Felly, yn dychwelyd 0. Felly, mae'r rhaglen hon sy'n amlwg yn mynd i wneud yr hyn yn tediously dweud ei fod yn mynd i'w wneud. Mae'n mynd i argraffu pob un o'r rheiny gwerthoedd, o'r top i'r gwaelod. Felly, gadewch i mi yn gwneud ddolen. Ac yna - Wps. Gwnewch ddolen. Roeddwn i yn y cyfeiriadur anghywir. Ac yn awr gad i mi redeg ddolen. Enter. Woohoo. Iawn 'n glws. Nice, rhaglen hir. Mae pob hawl, ond yn awr gadewch i ni wneud hyn yn well. Yn union fel yn Scratch, pan fyddwch yn dechrau defnyddio dolennu adeiladu, yn hytrach na dim ond copïo a gludo yr holl darnau pos, gadewch i mi gyflwyno y peth hyn. Felly, yn C, mae yn adeiladu dolennu amrywiol, un sy'n edrych fel hyn. A "i" ddolen Mae tri pheth, wedi'u gwahanu gan ddau hanner colon. Ac yna, y tu mewn i'r corff y ddolen, fel petai - y y tu mewn pethau o'r braces cyrliog - gallwn wneud rhywbeth eto ac eto. Felly, yr hyn sydd gennyf yma ar y sgrîn, mae hyn yn llythrennol yn unig sylw. Y / / golygu yma daw sylw. Nid yw hyn yn cod. Mae hyn yn unig disgrifiad Saesneg, i mi, y dynol. Initializations Felly, amodau, a diweddariadau. Wel, gadewch i ni weld sut mae hyn yn gweithio. Mae hyn yn caniatáu i mi i ailysgrifennu y rhaglen hon fel a ganlyn. I - felly dyma daw fy dolen - int i - yma hon newidyn o'r enw "i" - yn cael ymgychwyn i 10. Felly mae fy initialization. Rwyf am wneud hyn dolen cyhyd â "i" yn fwy na neu'n gyfartal i 0. Ac ar bob fersiwn o'r ddolen, yr wyf eisiau i wneud i -. Felly, gwelsom + + ar ddydd Llun. - Yn y gwrthwyneb. Mae'n decrements gwerth erbyn 1. Y tu mewn y ddolen, yr wyf am ei wneud mewn gwirionedd rhywbeth. Felly dw i'n mynd i ddweud rhywbeth fel printf. Nid wyf am i dyweder 10 awr, oherwydd mae'n amlwg bod hyn yn unig yw mynd i argraffu'r un gwerth. Beth ydw i eisiau argraffu yn lle hynny, yn ôl pob tebyg? Yeah. Felly, "i." D% Felly, i. Felly, yr wyf i'n mynd i ddwyn un o'r syniadau hynny o gyfnod cynharach - hyn fel dewis amgen ar gyfer codau fformat - ac yna i lawr yma, yn y gwaelod, 'n annhymerus' yn dychwelyd 0, dim ond ar gyfer mesur da. Ond nawr, mae gen i raglen yn fwy cryno. Dim ond ychydig o linellau, ac nid yw rhai 10 neu 11 o linellau. Gadewch i mi fynd i fy brydlon i lawr yma. Dolen ail-wneud. Ailgynnal ddolen. Ac mae'n ymddangos i fod yr un fath. Nawr, mae'r rhaglen yn ddim mwy diddorol. Ond yn awr y gallaf deipio rhywbeth fel hyn. Gallaf newid hyn i 100. Yna gallaf ail-grynhoi fy rhaglen. Ac yna gall yr wyf yn ail-redeg fy rhaglen. Ac yn awr mae'n mynd super-gyflym ar gyfrifiaduron heddiw. Ond mae gen i - ac mewn gwirionedd, nid yw fy byffer teflir yn hyd yn oed yn mynd mor bell. Dyna ni. Felly, mae gennym yr holl 100. Ond mae'n hawdd i wneud camgymeriadau yma. Beth sy'n mynd i fod yr ymddygiad a ddisgwylir os byddaf yn ddamweiniol gwneud hynny? Felly, mae'n teimlo fel ddiddiwedd. Felly, gadewch i ni weld os bydd y cyfrifiadur yn ymddwyn. Felly, gadewch i mi fynd yn ei flaen ac yn gwneud ddolen. A gadewch i mi redeg ddolen. Felly, gadewch i ni ddod yn ôl at hynny mewn dim ond hyn o bryd. Byddwn yn gadael i hynny rhedeg. Oherwydd dylai hyn yr ydym yn cyfrif hyd at, cyn lleied â phosibl? Yn ôl pob tebyg o leiaf 2 biliwn, os byddwn yn cael y darnau lawer, ac ein bod yn defnyddio gwerthoedd cadarnhaol. Felly, gadewch i ni neidio yn ôl yma. Heblaw am y math o dolenni, mae gennym yr hyn a elwir tra dolenni. Felly, yn union fel yn Scratch, oedd gennych Forever blociau, a oedd gennych blociau Ailadrodd. Yn yr un modd, yn C, os oes gen ti ffyrdd eraill o fynegi eich hunan. Felly, mae gennych syniad hwn o dolen tra bod eich galluogi i mynegi eich hun ychydig yn wahanol. Ac yna mae gennych rywbeth a elwir yn ddolen do-tra, sy'n gweithredu ychydig yn wahanol yn ogystal. A byddwn yn canfod y rhain ar wahân dros gyfnod o amser. Ond gadewch i ni edrych ar y yr un olaf ei yma. Os ydym yn mynd i mewn i - dal i redeg. Mae'n eithaf ddiddiwedd. Felly, gadewch i mi fynd i mewn i cadarnhaol, ac yn dangos sut y gallwn mewn gwirionedd rheoli mewnbwn defnyddwyr ychydig yn fwy effeithiol. Mae'n rhaglen eithaf byr. Ac yma mae gennym, yn bennaf, yn int n datganiad. Felly, yn rhoi i mi newidyn a elwir yn n. Yn awr, yr wyf yn llythrennol yn dweud "Wneud." Ac yna mae gen i agor cyrliog Brace, brês agos cyrliog. Ac yna sylwi, ar y dde ar ôl hynny, mae'n dweud tra n yn llai nag 1. Felly, yn sylwi bod y llinellau hyn - 19-24 - cyfansoddi ar y cyd dolen do-gyfnod. Ac eto, cystrawen yn newydd, yn syniad newydd. Dim ond ffordd arall o dolennu, syntactically. Felly beth mae hyn yn ei wneud? Gwneud y canlynol tra n yn llai nag 1. Felly, beth ydw i eisiau ei wneud? I fynnu eich bod yn rhoi i mi gyfanrif positif. Yna mi mewn gwirionedd yn ceisio cael cyfanrif gan y defnyddiwr. Ond o ran y drefn gweithrediadau yma, oherwydd y tra bod cyflwr sydd i lawr yma, rwy'n wedyn yn mynd i wirio, yw n llai nag 1? Felly, mae'n debyg bod y defnyddiwr - ar ôl cael ei galw yn y ffordd hon - math yn y 0 gwerth. Mae'r amod hwn yn mynd i fod yn wir neu'n anwir? Wel, mae'n wir yn mynd i fod yn wir. Gan fod n yn 0, a 0 yn llai nag 1. Felly beth mae hynny'n ei awgrymu? Yn ei wneud eto. Yn ei wneud eto. Yn ei wneud eto. Dim ond unwaith y cyflwr yn enrhifo i FFUG. Os byddaf yn teipio 42. Wel na, nid 42 yn llai nag 1. Felly mae'r ddolen yn cael ei wneud gweithredu. Ac felly ar y pwynt hwnnw, bydd y rhaglen yn ei ddweud, diolch am 42, yn yr achos hwn. Nawr eich bod yn cael y ffordd o fynegi eich hun - Ni ddylem ddisgwyl i hyn orffen. Mae'n mynd i gymryd peth amser. I'w barhau tro nesaf, efallai. Ond yn awr, mae gennych y gallu i, gobeithio, i ddeall ychydig o hiwmor geek. Ymddiheuriadau. Nid yw hyn yn gynrychioliadol o hiwmor yn y wyddoniaeth gyfrifiadurol byd, ond mae'n 'n giwt. [Chwerthin] Dewch i ben ar y nodyn hwnnw. A byddwn yn eich gweld ar ddydd Llun. [Cymeradwyaeth]