[CHWARAE CERDDORIAETH] DAVID J. Malan: pob hawl, mae hyn yn CS50. Ac mae hyn yn wythnos un. Felly dwyn i gof bod tro diwethaf mewn wythnos sero, buom yn canolbwyntio ar feddwl cyfrifiannol. Ac rydym yn transitioned o hynny i Scratch, mae rhaglenni graffigol iaith gan ein ffrindiau yn Lab Cyfryngau MIT. A gyda Scratch, wnaethon ni archwilio syniadau fel swyddogaethau, ac amodau, a dolenni, a newidynnau, a hyd yn oed digwyddiadau, ac edafedd, a mwy. A heddiw, rydym yn mynd i barhau i ddefnyddio syniadau hynny, ac yn wir yn eu cymryd am ganiataol, ond yn eu cyfieithu i iaith arall a elwir yn C. Yn awr, C yn iaith mwy traddodiadol. Mae'n lefel is iaith, os mynnwch. Mae'n testunol yn unig. Ac felly ar yr olwg gyntaf, mae'n i gyd yn mynd i edrych braidd cryptig os nad ydych erioed wedi ei raglennu o'r blaen. Rydym yn mynd i gael hanner colon, a chromfachau, a bresys cyrliog, a mwy. Ond yn sylweddoli bod hyd yn oed er bod y gystrawen yn ar fin edrych ychydig yn anghyfarwydd i'r rhan fwyaf ohonoch, gweler gorffennol. Ac yn ceisio i weld y syniadau sydd, yn wir, yn gyfarwydd, gan fod yma yn wythnos un beth byddwn yn dechrau ei wneud yw cymharu, i ddechrau, Scratch yn erbyn C. Felly, er enghraifft, dwyn i gof bod pan fyddwn yn rhoi ar waith y cyntaf o'n rhaglenni tro diwethaf, cawsom bloc a oedd yn edrych rhywbeth bach fel this-- pan glicio baner werdd, ac yna rydym yn cael un neu fwy o ddarnau pos islaw iddo, yn yr achos hwn, yn dweud, helo byd. Felly, yn wir, yn Scratch, pan fyddaf yn clicio y faner werdd i redeg fy rhaglen, felly i siarad, mae'r rhain yn y blociau sy'n cael eu gweithredu, neu i redeg. Ac, yn benodol, Scratch Meddai, helo, byd. Yn awr, gallwn fod wedi penodedig geiriau gwahanol yma. Ond byddwn yn gweld bod, yn wir, mae llawer o o blocks-- hyn ac yn wir, yn C Gall llawer o functions-- fod parametrized neu addasu i wneud pethau gwahanol. Yn wir, yn C os ydym am newid, yn awr, y rhaglen Scratch i'r hwn iaith arall, rydym yn mynd i ysgrifennu ychydig iawn o rhywbeth fel hyn. Roddwyd, mae rhywfaint o anghyfarwydd cystrawen yno fwyaf tebygol, int, a cromfachau, ac yn ddi-rym. Ond printf-- hyd yn oed er y byddech yn meddwl y byddai'n unig fod print. Ond brint golygu print fformatio, gan y byddwn yn fuan yn gweld. Bydd hyn yn llythrennol argraffu i'r sgrin beth bynnag yw tu mewn cromfachau hynny, sydd wrth gwrs, yn yr achos hwn, helo byd. Ond byddwch yn sylwi ar rai eraill cystrawen, mae rhai dyfynodau dwbl, bod y cromfachau ar y diwedd, yr hanner colon ac yn y blaen. Felly mae 'na ychydig o uwchben, fel petai, yn wybyddol ac syntactically, bod rydym yn mynd i gael i gofio cyn hir. Ond yn sylweddoli bod ag arfer, bydd hyn yn dechrau i neidio allan ar chi. Yn wir, gadewch i ni ganolbwyntio ar hynny un swyddogaeth specifically-- yn yr achos hwn, ddweud helo byd. Felly, yn dweud yw swyddogaeth. Helo byd yn ei paramedr, neu ddadl, ei customization. Ac cywerthedd yn C yn unig mynd i fod yr un yma llinell yma, lle mae printf yn gyfwerth â, dyweder, y llinyn a ddyfynnir dwbl, helo byd yn cyfateb, wrth gwrs, i'r hyn sydd yn y blwch gwyn yno. A'r n slaes, er bod ychydig rhyfedd ac yn absennol o'r Scratch, yn syml yn mynd i gael yr effaith yr ydym annhymerus ' gweld mewn cyfrifiadur, fel fy Mac neu PC, o ddim ond symud y cyrchwr at y llinell nesaf. Mae fel taro Nodwch ar eich bysellfwrdd. Felly byddwn yn gweld hynny eto cyn hir. Ond yn gyntaf, gadewch i ni edrych ar hyn Enghraifft arall yn achos y dolenni. Cawsom hyn am byth dolen tro diwethaf, a oedd cyfres o ddarnau pos a wnaeth rhywbeth llythrennol forever-- yn yr achos hwn, yn dweud, helo byd, helo byd, helo byd, helo byd. Felly mae'n dolen ddiddiwedd drwy ddylunio. Yn C, os ydym am roi hyn ar waith un syniad, efallai y byddwn yn syml yn gwneud hyn. Er bod yn wir, printf helo world-- awr tra, yn union semantig, math o conjures i fyny y syniad o wneud rhywbeth eto, ac eto, ac unwaith eto, ac am ba hyd? Wel, galw i gof true-- sy'n yn wir yn unig ar neu un. A gwir yw, wrth gwrs, bob amser yn wir. Felly mae'n fath o ddiystyr datganiad dim ond i ddweud yn wir. Ond yn wir, mae hyn yn fwriadol, oherwydd os yn wir yn unig bob amser yn wir, na tra yn wir yn unig yn awgrymu, os ychydig yn anuniongyrchol, bod y llinellau canlynol o god rhwng y braces cyrliog rheini Dylai jyst weithredu eto, ac eto, ac unwaith eto, a byth yn stopio mewn gwirionedd. Ond os ydych yn dymuno i'ch dolen i stopio, wrth i ni gwnaeth y tro diwethaf gyda rhywbeth fel hwn, ailadrodd y 50 gwaith canlynol, yn C gallwn wneud yr un peth â'r hyn sydd a elwir yn ar gyfer loop-- y gair allweddol heb fod yn ychydig, ond ar gyfer. Ac yna rydym yn cael rhywfaint o gystrawen newydd yma, gyda int ff yn dychwelyd 0, fi yn llai na 50, ff ++. A byddwn yn dod yn ôl at hynny. Ond mae hyn yn syml sut y byddem cyfieithu y set o flociau Scratch i set o linellau o god C. Yn y cyfamser, yn ystyried newidynnau. Ac, yn wir, rydym yn unig Gwelodd un funud yn ôl. Ac yn achos Scratch, os ydym yn awyddus i ddatgan newidyn enw i ar gyfer i fod yn cyfanrif, dim ond rhif, ac rydym yn awyddus i osod i ryw werth, byddem yn defnyddio oren hwn bloc gosod i Yma-- i 0. A byddwn yn gweld heddiw ac tu hwnt, yn union fel yr wythnos diwethaf, rhaglenwyr gwneud bron bob amser yn dechrau cyfrif o sero, mewn gwirionedd drwy gonfensiwn. Ond hefyd oherwydd bod galw yn ôl o ein trafodaeth o deuaidd, y nifer lleiaf y gallwch cynrychioli gydag unrhyw nifer o ddarnau yn unig yn mynd i fod yn 0 hun. Ac felly byddwn yn gyffredinol yn dechrau ymgychwyn hyd yn oed ein newidynnau i 0. Ac yn C i wneud yr un fath, rydym yn mynd i ddweud int ar gyfer cyfanrif, fi jyst drwy gonfensiwn. Gallwn i wedi galw newidyn hwn unrhyw beth yr wyf am ei gael, yn union fel yn Scratch. Ac yna yn dychwelyd 0 jyst aseineion werth 0 o'r dde ac yn ei roi i mewn y newidyn, neu'r storio cynhwysydd yno, ar y chwith. Ac mae'r hanner colon gan y byddwn see-- a rydym wedi gweld rhai o'r already-- hyn yn unig yn golygu diwedd y meddwl. Ewch yn eich blaen i wneud rhywbeth arall ar y llinellau sy'n dilyn. Nawr, beth am ymadroddion Boole? Dwyn i gof bod yn Scratch, roedd y rhain yn ymadroddion sydd naill ai'n wir neu gwestiynau false--, mewn gwirionedd, sydd naill ai'n gywir neu'n anghywir. Felly, yn achos Scratch, gallem gofyn cwestiwn syml fel hyn, yn ff llai na 50? Felly fi, unwaith eto, yn gyfanrif. Efallai rydym yn ei ddefnyddio mewn rhaglen Scratch i gadw golwg ar sgôr neu rywbeth fel 'na. Felly cystrawen hwn yma yn Scratch jyst yn golygu, yn ff llai na 50? Wel, diolch byth, rhywbeth yn syml yn C. Ac i gyfieithu, hwn byddem yn dweud yn syml i lai na 50, gan ddefnyddio'r allwedd cyfarwydd ar eich bysellfwrdd. Yn y cyfamser, os ydych chi eisiau dweud rhywbeth mwy cyffredinol, fel, yn dda, yn x yn llai na y lle mae pob x ac y eu hunain newidynnau? Gallwn wneud yr un peth yn C, cyn belled ag y mae gennym creu newidynnau hyn eisoes. A byddwn yn gweld sut i gwneud hynny cyn bo hir. Byddem yn dweud yn syml x yn llai na y. Felly, rydych yn dechrau gweld rhai nodweddion tebyg. A Folks rhai a wnaeth Scratch yn sicr a ysbrydolwyd gan rai o syniadau sylfaenol hyn. A byddwch yn gweld y math hwn o cystrawen mewn llawer languages-- nid dim ond Scratch, nid dim ond C, ond Python, a JavaScript, a ieithoedd eraill yn llonydd. Gadewch i ni ystyried lluniad arall o C, y syniad o amod, gwneud rhywbeth yn amodol. Os yw rhywbeth yn wir, yn gwneud hyn. Os rhywbeth arall yn wir, yn gwneud hynny. Mae'n fath y rhaglennu sy'n cyfateb i fforch yn y ffordd. Efallai ei fod yn ddwy-ffordd fforch, tair-ffordd fforc, neu fwy. Ac yn Scratch, gallai fod yn rhaid gweld rhywbeth fel hyn. Felly, mae hyn yn un 'a un mawr. Ond yn ystyried y perthynas symlrwydd y rhesymeg. Os x yn llai na y, yna dywedwch x yn llai nag y, arall os x yn fwy na y, yna dywedwch x yn fwy na y. Ac yna, yn rhesymegol, os yn eich barn chi yn ôl i Scratch neu dim ond eich greddf dynol ei hun, yn dda, os x nad yw'n fwy na y, a x yn llai na y, yna, wrth gwrs x yn mynd i fod yn hafal i y. Felly, yn yr achos hwn, gan nythu blociau Scratch hynny, gallwn gyflawni tri fforch ffordd yn y ffordd? Yn y cyfamser, os ydym am wneud hynny yn C, mae'n gellid dadlau edrych ychydig simpler-- o leiaf unwaith y byddwch yn cael gyfarwydd â'r gystrawen. Os x yn llai na y, printf x yn llai na y. Arall os x yn fwy na y, printf x yn fwy na y. printf Arall x yn hafal i y-- ac, unwaith eto, gyda'r rhai slaes yn dod i ben yn union ar gyfer llinellau newydd hynny, felly os ydych yn mewn gwirionedd yn rhedeg y math hwn o raglen byddai'n jyst yn symud eich cyrchwr yn y pen draw i'r llinell nesaf y sgrin. Yn awr, roedd gan y cyfamser Scratch arall nodweddion mwy soffistigedig, yn unig rhai ohonynt rydym yn mynd i yn y lle cyntaf yn symud drosodd i fyd C. Ac mae un ohonynt oedd Gelwir rhestr yn Scratch. Ac roedd hyn yn arbennig math o newidyn sy'n ganiateir i chi storio pethau lluosog yn yn ôl, wrth gefn, i gefnogi, i gefnogi. Yn C, nid oes ganddo rhestrau, fel y cyfryw, ond rhywbeth sydd yn fwy cyffredinol Gelwir araeau, er ein fe yn dod yn ôl yn ddiweddarach semester hwn i edrych ar rywbeth a elwir yn rhestr, neu mewn gwirionedd yn rhestr gysylltiedig. Ond am y tro, yr agosaf cyfatebol yn C i ni yn mynd i fod yn rhywbeth Gelwir arae. Ac amrywiaeth yn unig yw math arbennig o amrywiol sy'n eich galluogi i storio data yn ôl, wrth gefn, i gefnogi, i gefn. Ac, yn wir, yn Scratch, os ydym yn awyddus i gael mynediad elfen gyntaf arae neu yn list-- ac rwy'n mynd i alw, drwy gonfensiwn, argv, dadl fector, ond yn fwy ar hynny cyn bo hir. Os ydw i eisiau mynd yn yr elfen gyntaf o argv, ym myd Scratch chi ei wneud mewn gwirionedd yn nodweddiadol yn dechrau cyfrif o 1. Ac felly efallai y byddwn yn cael eitem 1 o argv. Dyna sut MIT rhoi ar waith y syniad o restrau. Ond yn C, dw i'n mynd i yn symlach dim ond dweud, argv, sydd eto yn enw fy list-- neu i fod yn glir, amrywiaeth. Ac os ydw i am y tro cyntaf elfennau, dwi'n mynd i ddefnyddio cromfachau sgwâr, yr ydych yn Efallai na chaiff ei ddefnyddio yn aml dan bysellfwrdd. Ond 0 jyst yn golygu, mynd i mi y cyntaf. Felly, ar adegau ac fel amser fynd heibio, rydym yn mynd i ddechrau i weld dichotomies hyn rhwng Scratch a C, lle Scratch yn defnyddio un. Rydym yn C yn defnyddio 0 yma. Ond byddwch yn gweld yn gyflym unwaith y byddwch yn deall sylfeini pob iaith, bod y pethau hyn yn dechrau i gael yr holl mwy cyfarwydd trwy ymarfer ac ymarfer. Felly gadewch i ni mewn gwirionedd yn edrych yn awr ar raglen. Yma, fydd y cyntaf o'n C cod ffynhonnell ar gyfer rhaglenni cyflawn. A'r rhaglen rydym yn mynd i'w gynnig i'w ystyried yw'r un sy'n gyfwerth at y darn Scratch gynharach. Felly, yn fan hyn, mae gennym yr hyn sydd gellir dadlau y rhaglen C symlaf gallwch ysgrifennu hynny mewn gwirionedd yn gwneud rhywbeth. Yn awr, byddwn yn edrych yn y gorffennol, am y tro, wedi cynnwys, io.h safonol, ac mae'r rhain ongl cromfachau, ac int, ac yn ddi-rym, a'r braces cyrliog, ac yn y blaen. A gadewch i ni dim ond yn canolbwyntio ar beth, o leiaf yn reddfol, Gallai neidio allan ar chi eisoes. Yn wir, prif, nid wyf yn ei wneud o reidrwydd yn gwybod beth yw hyn, ond llawer fel Scratch oedd pan baner werdd glicio darn pos, felly hefyd C fel iaith raglennu cael prif ddarn o cod sy'n yn cael ei gyflawni yn ddiofyn. Ac, yn wir, yn llythrennol yn mynd i gael ei alw prif. Felly prif yn swyddogaeth. Ac mae'n swyddogaeth arbennig sy'n bodoli yn C fod pan fyddwch yn rhedeg rhaglen, mae'n brif sy'n cael ei redeg gan diofyn. Ym myd Scratch, fel arfer oedd pan baner werdd clicio a gafodd ei redeg gan ddiofyn. Yn y cyfamser, rydym wedi gweld hyn o'r blaen, printf neu brint fformatio, dyna mynd i fod yn swyddogaeth sy'n dod gyda C, ynghyd â criw cyfan o bobl eraill, hynny ewyllys o amser ac amser eto, er mwyn gwneud yn union fel yr awgryma'r enw, argraffu rhywbeth. Beth ydym ni eisiau argraffu? Wel, byddwn yn gweld bod gan gymeriadau amgáu fel these-- byd helo, n slaes mewn dyfynodau dwbl, gallwn ddweud printf yn union beth i argraffu ar y sgrin. Ond er mwyn gwneud hynny, yr ydym yn anffodus Mae angen i gymryd rhywbeth sy'n eisoes yn cryptig i ni bodau dynol, ond o leiaf mae'n braidd readable-- miniog yn cynnwys, io.h safonol, int, prif, yn ddi-rym, printf, pob un o'r hudol incantations rydym yn unig yn gweld ar y sgrin. Ond rydym mewn gwirionedd yn rhaid i ni mynd yn fwy arcane o hyd. yn gyntaf mae angen i ni gyfieithu'r cod ein bod yn ysgrifennu i mewn i cod peiriant. A galw i gof o wythnos diwethaf fod peiriannau, o leiaf y rhai yr ydym yn gwybod yma, ar ddiwedd y dydd yn unig deall seroau a rhai. Ac mae fy Nuw, os byddwn yn gorfod ysgrifennu'r rhain zeros a rhai i mewn gwirionedd rhaglen, byddai'n iawn, yn gyflym iawn cymryd yr hwyl allan o unrhyw beth. Ond mae'n troi allan, yr wythnos diwethaf, bod y patrymau hyn o zeros a rhai yn unig wedi ystyr arbennig. Mewn rhai cyd-destunau, Efallai y maent yn ei olygu rhifau. Mewn rhai cyd-destunau, efallai y maent yn ei olygu llythyrau, neu liwiau, neu unrhyw rif tyniadau eraill yno arno. Ond yn union fel eich cyfrifiadur wedi CPU, Uned Brosesu Ganolog, neu yr ymennydd tu mewn eich cyfrifiadur. Mae fel arfer yn Intel tu mewn, oherwydd dyna un o'r cwmnïau mwyaf sy'n gwneud CPUs ar gyfer cyfrifiaduron. Wel, CPUs Intel ac eraill yn syml wedi penderfynu o flaen llaw bod patrymau penodol o zeros a Bydd rhai yn golygu pethau penodol. patrymau penodol o zeros a rhai Bydd yn golygu, argraffu hwn i'r sgrin, neu ychwanegu y ddau rif, neu tynnu y ddau rif, neu symud y darn hwn o ddata o cof fy cyfrifiadur dros yma, neu unrhyw nifer o lefel isel iawn eraill, ond yn ddefnyddiol yn y pen draw, gweithrediadau. Ond, diolch i'r drefn, rydym pobl yn ddim yn mynd i angen gwybod y lefel hon o fanylder. Yn wir, yn union fel y tro diwethaf, lle'r ydym yn ei dynnu eto, ac eto, ac unwaith eto, adeilad o lefel isel iawn primitives fel zeros a rhai i gysyniadau lefel uwch fel rhifau, a llythyrau, a lliwiau, ac yn fwy, felly allwn ni fel rhaglenwyr sefyll ar ysgwyddau eraill sydd wedi dod ger ein bron ac yn defnyddio meddalwedd sy'n arall pobl wedi ysgrifennu cyn us-- sef rhaglenni a elwir yn crynoadyddion. C yn iaith sy'n Fel arfer, ei llunio, sy'n golygu trosi o cod ffynhonnell i god peiriant. Yn benodol, beth mae hyn yn golygu yw, os ydych wedi cael eich ffynhonnell cod ydych chi eich hun yn ysgrifennu, gan ein bod yn fuan bydd mewn dim ond eiliad ar y sgrin, ac rydych am ei drosi yn y pen draw i beiriant code-- zeros a rhai hynny sy'n dim ond eich Mac neu eich cyfrifiadur understands-- gennych cyntaf bwydo y cod ffynhonnell i mewn fel mewnbwn i arbennig rhaglen o'r enw casglwr, cynnyrch yr ydym yn Rhaid weld yw cod peiriant. Ac, yn wir, y tro diwethaf buom yn siarad am, mewn gwirionedd, ar ddiwedd y dydd, datrys Problemau. Rydych chi wedi got mewnbynnau. A bod gennych allbynnau. A bod gennych ryw fath o algorithm yn y canol. Gall algorithmau siwr o fod rhoi ar waith mewn meddalwedd, fel y gwelsom gyda wythnos diwethaf pseudocode ac fel y byddwn yn gweld gyda cod gwirioneddol wythnos yma. Ac felly casglwr mewn gwirionedd dim ond Mae set o algorithmau y tu mewn ohoni sy'n gwybod sut i trosi y geiriau allweddol arbennig, fel prif, a printf, ac eraill yr ydym newydd Gwelodd i mewn i batrymau o sero ac rhai sy'n Intel tu mewn a arall CPUs mewn gwirionedd yn deall. Felly sut rydym yn gwneud hyn? Ble rydym yn cael compiler? Mae'r rhan fwyaf ohonom yma yn cael Mac neu PC. Ac rydych yn rhedeg Mac OS, neu Windows, neu Linux, Solaris neu, neu unrhyw nifer o eraill systemau gweithredu. Ac, yn wir, gallem mynd allan ar y we a lawrlwytho compiler ar gyfer eich Mac neu eich cyfrifiadur ar gyfer eich system weithredu penodol. Ond byddai pob un ohonom fod ar gwahanol dudalennau, fel petai. byddem wedi ychydig ffurfweddau gwahanol. Ac ni fyddai pethau'n gweithio gyd yr un fath. Ac, yn wir, y dyddiau hyn llawer ohonom peidiwch â defnyddio meddalwedd sy'n rhedeg yn unig ar ein gliniaduron. Yn lle hynny, rydym yn defnyddio rhywbeth fel porwr sy'n yn ein galluogi i gael mynediad at y we-seiliedig ceisiadau yn y cwmwl. Ac yn ddiweddarach y semester hwn, byddwn yn gwneud yn union hynny. Byddwn yn ysgrifennu ceisiadau neu Nid yw meddalwedd defnyddio code-- C, ond ieithoedd eraill fel Python a JavaScript-- sy'n rhedeg yn y cwmwl. Ac i wneud hynny, rydym ni ein hunain yn ystod y semester Bydd yn ei ddefnyddio cwmwl-seiliedig amgylchedd a elwir yn CS50 IDE. Mae hwn yn rhaglennu ar y we amgylchedd, neu ddatblygu integredig amgylchedd, Ide, sy'n adeiladu ar ben rhai meddalwedd cod agored o'r enw Cloud 9. Ac rydym wedi gwneud rhai pedagogaidd symleiddio iddo fel ag i guddio nodweddion penodol mewn yr wythnosau cyntaf nad oes angen i ni, ac ar ôl hynny gallwch datgelu iddyn nhw ac yn gwneud y rhan fwyaf o unrhyw beth yr hoffech gyda'r amgylchedd. Ac mae'n caniatáu i ni, hefyd, i cyn-gosod meddalwedd penodol. Pethau fel CS50 hyn a elwir yn llyfrgell, y byddwn yn fuan yn gweld rhoi i ni yn C gyda rhai swyddogaethau ychwanegol. Felly, os byddwch yn mynd i, yn y pen draw, CS50.io, byddwch yn cael eich annog i fewngofnodi, ac unwaith y byddwch yn ei wneud a chreu cyfrif am ddim, byddwch yn gallu cael mynediad at amgylchedd sy'n edrych yn eithaf fel hyn. Yn awr, mae hyn yn yn y modd diofyn. Mae popeth yn braf ac yn llachar ar y sgrin. Mae llawer ohonom wedi arfer o yn gweithio ar ddarn CS50 dyna yn eithaf hwyr yn y nos. Ac felly efallai y byddai'n well rhai ohonoch i droi i fodd nos, fel petai. Ond, yn y pen draw, yr hyn yr ydych chi'n mynd i weld o fewn CS50 IDE yw tri areas-- wahanol ardal ar y lle y chwith eich ffeiliau yn mynd i fod yn y cwmwl, ardal ar y dde uchaf lle mae eich cod yn mynd i fod eu golygu. Byddwch yn gallu agor tabs unigol ar gyfer unrhyw raglen eich bod yn ysgrifennu semester hwn y tu mewn o'r gornel dde uchaf. Ac yna y rhan fwyaf arcanely, ac eto rymus, yn mynd i fod y peth hyn yn y gwaelod a elwir derfynnell ffenest. Mae hon yn hen ysgol Rhyngwyneb Archa Bannod, neu CLI, sy'n caniatáu chi i redeg gorchmynion ar y computer-- yn yr achos hwn, y cyfrifiadur yn y cloud-- i wneud pethau fel lunio eich cod o cod ffynhonnell i'r cod peiriant, i redeg eich rhaglenni, neu i ddechrau eich gweinydd gwe, neu i gael mynediad at eich cronfa ddata, ac unrhyw nifer o dechnegau eraill y byddwn yn dechrau ei ddefnyddio cyn hir. Ond i gyrraedd yno, rydym yn mynd i mewn gwirionedd yn cael i fynd ar-lein a dechrau chwarae. Ac i wneud hynny, gadewch i ni yn gyntaf dechrau tinkering gyda phrif, ac ysgrifennu'r prif rhan o raglen. A gadewch i ni ddefnyddio'r swyddogaeth honno printf, yr ydym yn eu defnyddio yn gynharach, yn syml i ddweud rhywbeth. Felly dyma fi eisoes y tu mewn o IDE CS50. Rwyf wedi mewngofnodi ymlaen llaw. Ac yr wyf yn llawn sgrinio y ffenestr. Ac felly, yn y pen draw, byddwch yn hefyd mewn problemau i ddod yn dilyn camau tebyg sy'n Bydd darparu dogfennau ar-lein. Felly nid oes angen i chi boeni am amsugno pob cam bach technegol fy mod yn ei wneud yma heddiw. Ond byddwch yn cael screen fel hyn. Yr wyf yn digwydd i fod yn y modd y nos. A gallwch fywiogi popeth sefydlwyd gan anablu modd nos. Ac ar ddiwedd y dydd, rydych chi'n mynd i weld y tri phrif areas-- y ffeil porwr yn chwith, y tabiau cod fyny top, ac y ffenestr derfynell ar y gwaelod. Gadewch i mi fynd yn ei flaen ac ysgrifennu fy rhaglen gyntaf. Rydw i'n mynd i fynd preemptively i File, Save, ac yn arbed fy ffeil fel hello.c. Yn wir, erbyn confensiwn, unrhyw ydym rhaglen ysgrifennu sy'n ysgrifennu yn yr iaith C Dylid enwi rhywbeth dot c, drwy gonfensiwn. Felly, yr wyf i'n mynd i enwi ei hello.c, oherwydd Fi jyst eisiau dweud helo wrth y byd. Nawr rwy'n mynd i chwyddo allan a chliciwch Save. A'r holl gennyf yma yn awr yw tab lle y gallaf ddechrau cod ysgrifennu. Nid yw hyn yn mynd i lunio. Mae hyn yn golygu dim byd. Ac felly hyd yn oed os wyf yn trosi hwn i zeros a rhai, CPU yn mynd i gael unrhyw syniad beth sy'n digwydd o gwmpas. Ond os wyf yn ysgrifennu llinellau ydynt yn cyfateb i fyny gyda C C lles conventions--, unwaith eto, mae hyn yn language-- gyda chystrawen hoffi hwn, printf helo world-- ac rwyf wedi gotten gyfforddus gyda gwneud hyn dros gyfnod o amser. Felly, nid wyf yn meddwl fy mod gwneud unrhyw wallau teipio. Ond, yn ddieithriad, y cyntaf iawn tro y byddwch yn gwneud hyn, byddwch yn. A beth wyf ar fin ei wneud efallai iawn yn dda, nid yn gweithio i chi y tro cyntaf. A dyna berffaith iawn, oherwydd ar hyn o bryd i chi bosibl y bydd yn gweld llawer gyfan o newydd-deb, ond dros gyfnod o amser ar ôl i chi ddod yn gyfarwydd gyda'r amgylchedd hwn, ac yr iaith, ac eraill, byddwch yn dechrau gweld pethau sy'n naill ai'n gywir neu'n anghywir. A dyma beth mae'r cymrodyr addysgu a chwrs cynorthwywyr cael mor dda yn dros amser, yn cael ei sbotio camgymeriadau neu chwilod yn eich cod. Ond yr wyf yn honni bod yna oes unrhyw bugs yn y cod hwn. Felly, yr wyf yn awr am redeg y rhaglen hon. Nawr ar fy Mac neu PC eich hun, Im 'i mewn yr arfer o eiconau glicio ddwywaith pan wyf yn awyddus i gynnal rhai rhaglen. Ond nid dyna'r y model yma. Yn yr amgylchedd hwn, sef CS50 IDE. Rydym yn defnyddio gweithredu system o'r enw Linux. Linux yn ein hatgoffa o un arall system weithredu, a elwir yn gyffredinol fel Unix. A Linux yn adnabyddus yn arbennig ar gyfer cael Archa Bannod Amgylchedd, CLI. Nawr, rydym yn defnyddio benodol blas o Linux enw Ubuntu. Ac Ubuntu yn unig yw Fersiwn penodol o Linux. Ond Linux rhain yn y dyddiau hyn yn ei wneud mewn gwirionedd dod gyda rhyngwynebau defnyddwyr graffigol. Ac yr un yr ydym yn digwydd i fod yn defnyddio yma yw ar y we. Felly, gallai hyn edrych yn hyd yn oed ychydig yn wahanol o rywbeth efallai y byddwch chi eich hun gael gweld neu eu cynnal yn y gorffennol. Felly, yr wyf i'n mynd i fynd yn ei flaen yn awr ac yn gwneud y canlynol. Rwyf wedi arbed y ffeil hwn fel hello.c. Rydw i'n mynd i fynd yn ei flaen a Math o clanghello.c Felly chlang ar gyfer yr iaith C yn compiler. Mae'n cyn-osod yn CS50 IDE. A gallwch hollol lawrlwytho a gosod hyn ar eich Mac neu PC eich hun. Ond, unwaith eto, ni fyddai'n rhaid i chi i gyd o y cyn-gyflunio wneud i chi. Felly am y tro, Im 'jyst mynd i redeg clanghello.c. Ac yn awr sylwi ar gystrawen hon yma bydd yn y pen draw sylweddoli golygu fy mod mewn ffolder neu gyfeirlyfr o'r enw Workspace. Mae'r arwydd doler yn unig yw confensiwn am ystyr, teipiwch eich gorchmynion yma. Mae'n hyn a elwir yn brydlon, dim ond drwy gonfensiwn yn arwydd ddoler. Ac os wyf yn mynd yn ei flaen yn awr a chliciwch Mewnbynnu, nid oes dim yn ymddangos i fod wedi digwydd. Ond mae hynny'n mewn gwirionedd yn beth da. Mae'r llai sy'n digwydd ar eich sgrîn, y mwyaf tebygol eich cod yw i fod yn gywir, o leiaf syntactically. Felly os wyf eisiau rhedeg hwn rhaglen, beth ddylwn i ei wneud? Wel, mae'n ymddangos bod y enw diofyn drwy gonfensiwn ar gyfer rhaglenni pan na fyddwch yn pennu enw ar gyfer eich rhaglen yn unig a.out. A chystrawen hyn hefyd, wnewch chi helpu cael gyfarwydd â hwy cyn hir. Dot slaes yn unig yn golygu, hey, CS50 IDE, yn rhedeg rhaglen o'r enw a.out dyna y tu mewn fy cyfeiriadur cyfredol. Mae hynny'n golygu bod y dot cyfeiriadur cyfredol. A gawn ni weld beth dilyniannau eraill o gymeriadau golygu cyn bo hir. Felly dyma ni, Mewnbynnu, helo byd. A byddwch yn sylwi, bod yr hyn a ddigwyddodd? Nid yn unig ei fod yn argraffu helo byd. Mae hefyd yn symud y cyrchwr at y llinell nesaf. A pham oedd hynny? Beth oedd y cod sy'n ysgrifennom cyn a oedd yn sicrhau y byddai'r cyrchwr mynd ar y llinell nesaf? peth rhyfedd am cyfrifiadur yn dim ond yn mynd i wneud yn llythrennol yr hyn yr ydych yn dweud iddo ei wneud. Felly, os ydych yn dweud ei fod i printf helo, coma, gofod, byd, dyfynnwch agos, mae'n llythrennol ond yn mynd i argraffu cymeriadau hynny. Ond roedd gen hwn cymeriad arbennig ar y diwedd, galw i gof, slaes n. A dyna beth sicrhau a aeth cymeriad i'r llinell nesaf y sgrin. Yn wir, gadewch i mi fynd a gwneud hyn. Gadewch i mi fynd yn ei flaen a dilëwch hyn. Yn awr, yn sylwi bod y ben fy sgrin mae ychydig o olau coch yn y tab sy'n dangos, hey, nad ydych wedi arbed eich ffeil. Felly, yr wyf i'n mynd i fynd yn ei flaen gyda rheolaeth S neu orchymyn S, arbed y ffeil. Nawr mae'n goes-- aeth am gwyrdd moment--. Ac yn awr mae'n ôl i dim ond bod yn eicon agos. Os wyf yn awr yn rhedeg clanghello.c eto, Rhowch, dot slaes, a.out, Mewnbynnu, byddwch yn gweld ei bod yn dal i weithio. Ond mae'n gellid dadlau ychydig bygi. Ar hyn o bryd, mae fy lle gwaith prompt--, ac yna y arwydd doler, ac yna fy prompt-- gwirioneddol i gyd ar yr un llinell. Felly, mae hyn yn sicr yn bug esthetig, hyd yn oed os nad yw'n wir yn bug rhesymegol. Felly, yr wyf i'n mynd i ddadwneud hyn yr wyf newydd ei wneud. Rydw i'n mynd i ailgynnal a.out. Rhybudd Rwyf wedi ychwanegu y newline cymeriad cefn. Rwyf wedi arbed y ffeil. Felly, yr wyf i'n mynd i ailgynnal a.out, ac-- dammit, nam, a bug sy'n golygu camgymeriad. Felly y nam yw bod hyd yn oed er Ychwanegais y slaes n yno, ail-arbed, ail-redeg y rhaglen, yr ymddygiad yn yr un fath. Pam fyddai hynny? Im 'yn colli cam, dde? Mae hynny'n gam allweddol cynharach oedd eich bod wedi canlynol-- pan fyddwch yn newid eich cod ffynhonnell, mae'n troi allan hefyd yn rhedeg drwy'r compiler eto er mwyn i chi gael cod peiriant newydd. A'r cod peiriant, y zeros a rhai, yn mynd i fod bron yn union, ond nad yn berffaith felly, oherwydd mae angen, wrth gwrs, bod llinell newydd. Felly, i atgyweiria hon, dwi'n mynd i angen i ailgynnal clanghello.c, rhowch, dot slaes, a.out. Ac yn awr, helo byd yn ôl i ble yr wyf yn disgwyl iddo fod. Felly, mae hyn i gyd yn gain ac yn dda. Ond a.out yn enw eithaf dwp am rhaglen, er ei fod yn digwydd bod, am resymau hanesyddol, mae'r default-- ystyr allbynnau cynulliad. Ond gadewch i mi fynd yn ei flaen yma ac yn gwneud hyn yn wahanol. Rwyf am i fy rhaglen helo byd i mewn gwirionedd yn cael eu galw helo. Felly pe bai'n eicon ar fy n ben-desg, ni fyddai'n cael ei a.out. Byddai'n cael ei alw helo. Felly, er mwyn gwneud hyn, mae'n troi allan bod chlang, fel llawer o raglenni, cefnogi dadleuon llinell gorchymyn, neu faneri, neu switsys, sydd yn syml yn dylanwadu ar ei ymddygiad. Yn benodol, chlang yn cefnogi llinell doriad o baner, sydd wedyn yn cymryd ail air. Yn yr achos hwn, fympwyol 'n annhymerus', ond yn rhesymol, ei alw'n helo. Ond gallai wyf yn ei alw unrhyw beth Rwyf am, ac eithrio a.out, a oedd yn fyddai yn hytrach ar wahân i'r pwynt. Ac yna dim ond nodi enw'r o'r ffeil wyf am lunio. Felly nawr er bod ar y dechrau o'r gorchymyn yr wyf yn dal i gael chlang, ar ddiwedd y gorchymyn Rwy'n dal i gael y enw'r ffeil, Yr wyf yn awr yn cael y rhain archa bannod dadleuon, baneri hyn sydd yn ei ddweud, oh, gyda llaw, allbwn-o, ffeil Gelwir helo, nid yw'r a.out rhagosodedig. Felly os wyf yn taro Rhowch nawr, dim byd ymddengys ei fod wedi digwydd. Ac, eto, yn awr y gallaf ei wneud slaes dot helo. Felly mae'n yr un rhaglen. Mae'r zeros a rhai yn union yr un fath ar ddiwedd y dydd. Ond maen nhw mewn dau gwahanol a.out files--, sef y fersiwn cyntaf a dim ond enwir ffôl, ac yn awr helo, sydd yn llawer mwy enw cymhellol ar gyfer rhaglen. Ond, yn onest, yr wyf byth mod mynd i gofio hyn eto, ac unwaith eto, ac unwaith eto. Ac, mewn gwirionedd, fel yr ydym yn ysgrifennu rhaglenni mwy cymhleth, y gorchmynion rydych yn mynd i gael i ysgrifennu yn mynd i gael hyd yn oed mwy cymhleth o hyd. Ac felly beidio â phoeni. Mae'n ymddangos bod bodau dynol cyn ni wedi sylweddoli eu bod yn rhy Roedd gan un broblem union hon. Maent yn rhy nid oedd yn mwynhau gorfod teipio gorchmynion cymharol hir, dirgel, heb sôn am eu cofio. Ac felly bodau dynol ger ein bron wedi gwneud rhaglenni eraill sy'n ei gwneud yn haws i lunio eich meddalwedd. Ac, yn wir, un fath Gelwir rhaglen Gwneud. Felly, yr wyf i'n mynd i fynd yn ei flaen ac yn gwneud hyn. Rydw i'n mynd i dadwneud popeth rwy'n yn unig oedd yn y ffordd ganlynol. Gadewch i mi deipio LS. A byddwch yn sylwi tri things-- a.out, ac yn seren, helo a seren, a hello.c. Gobeithio, dylai hyn fod ychydig yn haws, i'r graddau gynharach roedd nid oes dim yn lle gwaith hwn. Nid oedd unrhyw beth fy mod wedi greu nes ni ddechrau dosbarth. Ac yr wyf yn creu hello.c. yna mi a luniwyd ef, a'i alw'n a.out. Ac yna yr wyf luniwyd eto ychydig yn yn wahanol a'i alw'n helo. Felly, yr wyf wedi tair ffeil yn y cyfeiriadur hwn, yn y ffolder hwn a elwir Workspace. Yn awr, gallaf weld hynny hefyd os wyf yn chwyddo allan mewn gwirionedd. Os byddaf yn chwyddo allan yma ac edrych ar y llaw dde uchaf cornel, fel yr addawyd y chwith ochr eich sgrîn mae bob amser yn mynd i ddangos i chi beth sydd yn eich cyfrif, beth tu mewn IDE CS50. Ac mae tair ffeil yno. Felly, yr wyf yn awyddus i gael gwared o a.out a helo. Ac wrth i chi efallai dychmygwch reddfol, yr ydych Gallai didoli o reolaeth cliciwch neu cliciwch i'r dde ar hyn. Ac mae bwydlen bach yma pops i fyny. Gallwch lawrlwytho y ffeil, rhedeg iddo, rhagolwg ohono, adnewyddu, ail-enwi, neu beth i beidio. A gallai Fi jyst ddilea, ac y byddai'n mynd i ffwrdd. Ond gadewch i ni wneud pethau gyda meistrolaeth lein am y tro, er mwyn cael gyfforddus gyda hyn, ac yn gwneud y canlynol. Rydw i'n mynd i fynd yn ei flaen a chael gwared a.out drwy deipio llythrennol rma.out. Mae'n troi allan, mae'r gorchymyn i cael gwared neu ddileu rhywbeth, Nid yw cael gwared ar neu ddileu. Mae'n fwy cryno RM, dim ond i arbed chi rai keystrokes, a daro Chofnoda. Nawr rydym yn mynd i fod braidd yn gryptig gwared a.out ffeil rheolaidd. Dydw i ddim yn gwybod beth yw Byddai ffeil afreolaidd yn eto. Ond yr wyf yn dymuno symud oddi yno. Felly, yr wyf i'n mynd i deipio y am ie. Neu gallwn i ei deipio allan, a tharo Enter. Ac, unwaith eto, nid oes dim yn ymddangos i ddigwydd. Ond dyna, yn gyffredinol, yn beth da. Os byddaf yn teipio LS y tro hwn, beth ddylwn i ei weld? Gobeithio, dim ond helo a hello.c. Yn awr, wrth fynd heibio, wnewch chi helpu sylwi ar seren hon, seren, dyna ar ddiwedd fy rhaglenni. Ac maent hefyd yn dangos i fyny mewn gwyrdd. Mae hynny yn unig yw ffordd CS50 IDE yn ohonoch cluing i mewn i'r ffaith nad yw hynny'n cod ffynhonnell. Dyna weithredadwy, mae runnable rhaglen y gallwch redeg mewn gwirionedd drwy wneud slaes dot, ac yna mae'n enw. Yn awr, gadewch i mi fynd yn ei flaen a chael gwared hwn, rm helo, Mewnbynnu, cael gwared rheolaidd ffeil helo, ie. Ac yn awr os wyf yn teipio LS, rydym yn ôl i hello.c. Ceisiwch beidio â dileu eich cod ffynhonnell gwirioneddol. Hyd yn oed er bod nodweddion hadeiladu i mewn IDE CS50 lle gallwch fynd drwy eich hanes adolygu ac ailddirwyn mewn amser os ydych yn ddamweiniol dileu rhywbeth, yn gwneud yn ymwybodol yn unol ysgogiadau hyn ydw neu nac ydw, o'r hyn yr ydych mewn gwirionedd am ei wneud. Ac os af i fyny i ben chwith gornel yma, cyfan sydd ar ôl yw hello.c. Felly mae tusw o gorchmynion eraill sy'n eich Gall gweithredu yn y byd o Linux, un ohonynt yw, unwaith eto, Gwneud. Ac rydym yn mynd i Wneud fy rhaglen yn awr fel a ganlyn. Yn hytrach na gwneud chlang, yn hytrach na gwneud chlang-o, Rydw i'n mynd i wneud dim ond teipio yn llythrennol, yn gwneud helo. Ac yn awr yn sylwi, yr wyf yn Nid yw teipio yn gwneud hello.c. Yr wyf yn teipio gwneud helo. Ac mae'r rhaglen hon Gwnewch hynny dod gyda IDE CS50, ac yn fwy yn gyffredinol gyda Linux, yn rhaglen sy'n mynd i wneud rhaglen o'r enw Helo. Ac mae'n mynd i gymryd yn ganiataol, gan gonfensiwn, os gall y rhaglen hon yn cael ei wneud, mae'n mynd i gael eu gwneud o ffynhonnell file cod yn dod i ben mewn dot c, hello.c. Felly os wyf daro Chofnoda awr, yr hysbysiad hwnnw y gorchymyn sy'n cael ei gyflawni mewn gwirionedd hyd yn oed mwy o amser cyn nag o'r blaen. A dyna oherwydd ein bod i wedi IDE CS50 ragosodedig i gael rhai nodweddion ychwanegol a adeiladwyd yn y Nid oes angen dim ond eto rydym, ond yn fuan fydd. Ond y peth allweddol i wireddu bellach mae gen i raglen Helo. Os byddaf yn teipio LS eto, yr wyf yn cael rhaglen helo. A gallaf rhedeg gyda dot slaes a.out, na, oherwydd bod y pwynt cyfan o hwn ymarfer yn dot helo slaes. Ac yn awr yr wyf wedi fy rhaglen helo byd. Felly symud ymlaen, rydym yn unig bron bob amser mynd i lunio ein rhaglenni gan ddefnyddio'r Gwneud gorchymyn. Ac yna rydym yn mynd i redeg iddynt gan dot slaes, ac enw'r rhaglen. Ond yn sylweddoli beth Gwnewch yn ei wneud ar gyfer chi, yw nad yw'n ei hun yn compiler. Mae'n dim ond rhaglen cyfleustra sy'n gwybod sut i sbarduno casglwr i redeg fel y gallwch chi eich hun yn ei ddefnyddio. Pa gorchmynion eraill yn bodoli yn Linux, ac yn ei dro y CS50 DRhA? Byddwn yn fuan yn gweld bod yna gorchymyn CD, Cyfeiriadur Newid. Mae hyn yn caniatáu i chi o fewn eich rhyngwyneb llinell orchymyn i symud ymlaen, ac yn ôl, ac agor ffolderi gwahanol heb ddefnyddio'ch llygoden. LS gwelsom, sy'n sefyll am y rhestr y ffeiliau yn y cyfeiriadur cyfredol. Gwnewch Dir, gallwch yn ôl pob tebyg yn dechrau casglu beth mae'r rhain yn ei olygu now-- gwneud cyfeiriadur, os ydych am i greu ffolder. RM i dynnu, RM Dir gyfer cael gwared directory-- ac mae'r rhain, unwaith eto, yw'r llinell orchymyn cyfwerth o'r hyn yr ydych Gallai wneud yn CS50 IDE gyda'ch llygoden. Ond byddwch yn dod o hyd yn fuan hynny weithiau dim ond yn llawer cyflymach i'w wneud pethau gyda bysellfwrdd, ac yn y pen draw yn llawer mwy pwerus. Ond mae'n anodd dadlau bod unrhyw beth yr ydym wedi bod yn gwneud hyd yn hyn yw'r cyfan sydd pwerus, pan fydd yr holl rydym wedi bod yn ei ddweud yw, helo byd. Ac, yn wir, yr wyf yn hardcoded y geiriau helo byd i mewn i fy rhaglen. Nid oes ddynamiaeth eto. Scratch yn gorchymyn o faint yn fwy diddorol yr wythnos diwethaf. Ac felly gadewch i ni fynd yno. Gadewch i ni gymryd cam tuag at hynny trwy ffordd o rai o'r swyddogaethau hyn. Felly, nid yn unig y mae C yn dod gyda printf, a sypiau o swyddogaethau eraill rhai ohonynt byddwn yn gweld dros gyfnod o amser, nid yw'n gwneud y cyfan yn hawdd y dde allan y porth o ran cael mewnbwn defnyddwyr. Yn wir, un o'r gwendidau ieithoedd fel C, a hyd yn oed Java ac eto eraill, yw nad yw'n gwneud ei gwneud yn hawdd i ychydig gael pethau fel cyfanrifau gan ddefnyddwyr, neu llinynnau, geiriau, ac ymadroddion, gadael i bethau ei ben ei hun fel Gwerthoedd pwynt, neu rhifau real fel y bo'r angen gyda phwyntiau degol, ac yn wir rhif o hyd, gan y byddwn yn fuan yn gweld. Felly rhestr hon o swyddogaethau yma, mae'r rhain yn debyg darnau pos Scratch arall ein bod wedi rhag-osod yn CS50 IDE y byddwn yn defnyddio am ychydig wythnosau fel olwynion hyfforddiant o ryw fath, a yn y pen draw yn mynd â nhw i ffwrdd, ac yn edrych o dan y cwfl, efallai, yn sut y pethau hyn yn cael eu gweithredu. Ond i wneud hyn, gadewch i ni mewn gwirionedd yn ysgrifennu rhaglen. Gadewch i mi fynd yn ei flaen yn awr. Ac yr wyf i'n mynd i greu newydd ffeilio drwy glicio bach hwn a mwy, a chlicio Ffeil Newydd. Rydw i'n mynd i achub y nesaf un fel, gadewch i ni ddweud, string.c, oherwydd yr wyf am i chwarae gyda llinynnau. A llinyn yn C yn unig dilyniant o gymeriadau. Felly nawr gadewch i ni fynd yn ei flaen a gwneud y canlynol. Cynhwyswch safonol IO.h-- a mae'n troi allan IO safonol, IO yn unig yn golygu mewnbwn ac allbwn. Felly, mae'n ymddangos bod y llinell hon dyma beth yn y ni cyfagos i ddefnyddio printf. Printf, wrth gwrs, yn cynhyrchu allbwn. Felly, er mwyn defnyddio printf, mae'n troi allan mae'n rhaid i chi gael y llinell hon o god ar frig eich ffeil. A byddwn yn dod yn ôl at yr hyn sydd wir yn ei olygu cyn hir. Mae'n ymddangos bod yn unrhyw raglen C i mi ysgrifennu, Mae gen i ddechrau gyda cod sy'n edrych fel hyn. A byddwch yn sylwi CS50 IDE, a datblygiad integredig eraill amgylcheddau ei hoffi, yn mynd i roi cynnig ar orau gallant i orffen eich meddwl. Yn wir, funud yn ôl os byddaf yn dadwneud yr hyn yr wyf yn unig oedd, yr wyf yn daro Chofnoda. yna yr wyf yn taro cyrliog agored Brace, daro Chofnoda eto. Ac mae'n orffen fy meddwl. Mae'n rhoi i mi llinell newydd, mewnoli dim llai am resymau arddull neis byddwn yn gweld. Ac yna rhoddodd i mi yn awtomatig bod Brace cyrliog i orffen fy meddwl. Yn awr, y mae'n ei wneud yw bob amser yn ddyfalu beth rydych am ei wneud. Ond i raddau helaeth, mae'n ei wneud arbed keystrokes chi. Felly funud yn ôl, cynhaliwyd program-- hwn helo, byd, ac yna llunio iddo, ac yna rhedodd hi. Ond does dim ddynamiaeth yma. Beth os ydym yn awyddus i wneud rhywbeth gwahanol? Wel, beth os oeddwn i eisiau mewn gwirionedd cael llinyn gan y defnyddiwr? Rydw i'n mynd i ddefnyddio darn pos Gelwir union that-- cael llinyn. Troi allan yn C pan nad ydych chi eisiau i roi mewnbwn i ddarn pos, neu yn fwy priodol i swyddogaeth, rydych yn llythrennol dim ond gwneud parenthesis agored, parenthesis cau. Felly mae'n fel pe yna dim blwch gwyn i deipio i mewn. Mae'r bloc dweud eu dweud cyn Roedd gan blwch bach gwyn. Nid oes gennym y blwch gwyn yn awr. Ond pan alwaf get llinyn, yr wyf yn eisiau rhoi canlyniad yn rhywle. Felly patrwm cyffredin iawn yn C yw yn galw swyddogaeth, fel get llinyn yma, ac yna'i storio ei werth dychwelyd. Mae'n y canlyniad ei ymdrech yn rhywbeth. A beth yw'r adeiladu mewn rhaglenni, boed yn Scratch neu awr C, ein bod yn yn gallu defnyddio i mewn gwirionedd storio rhywbeth? Alw yn newidiol, dde? Ac yn Scratch, nid ydym yn ei wneud mewn gwirionedd gofal yr hyn oedd yn mynd mewn newidynnau. Ond yn yr achos hwn, rydym yn ei wneud mewn gwirionedd. Rydw i'n mynd i ddweud llinyn. Ac yna gallwn i alw unrhyw beth hwn rwyf eisiau. Rydw i'n mynd i alw enw, yn cael cael llinyn. Ac yn awr hyd yn oed os ydych chi'n ychydig o newydd i hyn, yn sylwi fy mod yn ddiffygiol rhai manylion. Im 'anghofio hanner colon. Mae angen i mi orffen meddwl hwn. Felly, yr wyf i'n mynd i symud fy cyrchwr, a tharo hanner colon yno. A beth ydw i jyst wneud? Yn y llinell hon o god, rhif 5 ar hyn o bryd, Rwy'n galw get llinyn heb unrhyw fewnbynnau. Felly does dim gwyn bach blwch fel y bloc Save wedi. Im 'jyst yn dweud, hey, cyfrifiadur, mynd i mi llinyn. Nid yw'r hafalnod yw 'n sylweddol arwydd gyfartal, fel y cyfryw. Mae'n y aseiniad gweithredydd, sy'n golygu, hey, cyfrifiadur, symud y gwerth o'r dde dros y chwith. Ac yn y chwith, mae gennyf y canlynol. Hey, cyfrifiadur, yn rhoi i mi string-- dilyniant o gymeriadau. A galw y llinyn Enw. A pheidiwch hyd yn oed yn rhaid i mi ei alw'n Enw. gallai wyf yn ei alw, yn gonfensiynol, rhywbeth fel S, yn debyg iawn i ni ei ddefnyddio i fi ffoniwch y newidyn i. Ond yn awr mae angen i mi wneud rhywbeth ag ef. Byddai'n eithaf gwirion i'w ceisiwch gasglu'r cod hwn, yn rhedeg rhaglen hon, er bod Im 'yn cael llinyn, am ei fod yn dal i fod yn unig mynd i ddweud helo byd. Ond beth os wyf am newid hyn. Pam nad ydw i'n gwneud hyn? Canran s, atalnod s. Ac mae hyn yn ychydig yn cryptig o hyd. Felly gadewch i mi wneud fy newidynnau yn fwy clir. Gadewch i mi enwi'r hwn Enw amrywiol. A gadewch i ni weld os na allwn tynnu coes ar wahân beth sy'n digwydd yma. Felly, ar linell bump, Im 'yn cael llinyn. A dwi'n storio y llinyn, beth bynnag yw'r defnyddiwr wedi teipio mewn yn ôl ei bysellfwrdd, mewn newidyn a elwir Enw. Ac mae'n troi allan y printf yn nid dim ond cymryd un ddadl yn ddwbl dyfyniadau, un mewnbwn mewn dyfynodau dwbl. Gall gymryd dau, neu dri, neu fwy, megis bod yr ail, neu'r trydydd, neu'r pedwerydd, i gyd yn enwau newidynnau, neu werthoedd yn benodol, eich bod am dopio i mewn, ddeinamig, y llinyn mewn dyfynodau. Mewn geiriau eraill, yr hyn byddai'n o'i le ar hyn? Os wyf newydd ei ddweud helo enw, slaes n, arbed fy ffeil, a luniwyd fy cod, ac yn rhedeg hyn, beth fyddai'n digwydd? 'I' jyst yn mynd i ddweud, helo enw, yn llythrennol N-A-M-E, sydd yn fath o dwp oherwydd mae'n wahanol i byd. Felly unrhyw beth mewn dyfynodau yn beth llythrennol yn cael ei argraffu. Felly os wyf am gael yn placeholder yno, Fi 'n weithredol angen i chi ddefnyddio rhywfaint o gystrawen arbennig. Ac mae'n troi allan os ydych yn darllen y dogfennau ar gyfer y swyddogaeth printf, bydd yn dweud eich bod yn os ydych yn defnyddio y cant s, gallwch amnewid gwerth fel a ganlyn. Ar ôl coma ar ôl hynny dyfynnwch dwbl, byddwch yn syml ysgrifennwch enw'r newidyn yr ydych am i blygio mewn i fformat sy'n cod, neu fformat rhagnodwr, y cant ar gyfer llinynnau. Ac yn awr os ydw i wedi achub fy ffeil, Yr wyf yn mynd yn ôl i lawr at fy terfynol. Ac yr wyf yn teipio Gwneud Llinynnol, oherwydd, unwaith eto, enw'r hwn ffeil sy'n Dewisais blaen yn string.c. Felly, yr wyf i'n mynd i ddweud Wneud Llinynnol, rhowch. O fy daioni, edrych ar yr holl camgymeriadau a rydym wedi ei wneud yn barod. Ac mae hyn yw-- beth, mae hyn yn wir fel, saith rhaglen chwe llinell? Felly, dyma lle iawn o fewn ei allu yn gyflym cael llethol. Mae'r ffenestr terfynell yn awr yn unig regurgitated nifer fawr o negeseuon gwall. Siawns, nid wyf yn cael mwy gwall negeseuon na mi linellau o god. Felly beth sy'n mynd ymlaen? Wel, mae'r strategaeth orau i wneud unrhyw adeg rydych yn dod ar draws yn llethol rhestr o wallau fel 'na, yn sgrolio yn ôl, yn edrych am y gorchymyn 'ch jyst yn rhedeg, a oedd yn fy achos yw gwneud llinyn. Edrychwch ar yr hyn yn gwneud y gwnaeth, a dyna sy'n hir chlang gorchymyn, dim llawer mawr yno. Ond mae'r coch yn ddrwg. Gwyrdd yn ceisio bod yn addfwyn ac yn ddefnyddiol. Ond mae'n dal i fod yn ddrwg, yn yr achos hwn. Ond ble mae'n ddrwg? String.c, llinell pump, cymeriad pump. Felly, mae hyn yn unig yw confensiwn cyffredin. rhywbeth colon Rhywbeth yn golygu rhif llinell a rhif chymeriad. Gwall, defnyddio heb eu datgan llinyn dynodwr. A oeddech yn meddwl safonol mewn? Felly, yn anffodus, chlang yn ceisio bod o gymorth. Ond ei fod yn anghywir, yn yr achos hwn. Na, chlang, doeddwn i ddim yn ei olygu IO safonol. Yr wyf yn golygu bod ar-lein un, ie. Ond mae llinell bump yn yr un yma fan hyn. Ac nid chlang yn deall S-T-R-I-N-G. Mae'n dynodwr heb ei ddatgan, a gair 'i jyst erioed wedi ei weld o'r blaen. A dyna oherwydd bod C, yr iaith rydym yn ysgrifennu cod yn iawn yn awr, Nid oes newidynnau a elwir llinynnau. Nid yw, yn ddiofyn, cefnogaeth rywbeth o'r enw llinyn. Dyna ddarn CS50 o jargon, ond gonfensiynol iawn. Ond gallaf atgyweiria hon fel a ganlyn. Os byddaf yn ychwanegu un llinell o god i ben y rhaglen hon, cynnwys CS50.h, sef ffeil arall rhywle y tu mewn o CS50 IDE, rhywle ar y disg caled, fel petai, y system weithredu Ubuntu fy mod yn rhedeg, bod yw'r ffeil sy'n mynd i ddysgu'r gweithredu system beth llinyn yw, dim ond fel io.h safonol yw y ffeil yn y system weithredu sy'n mynd i ddysgu ei beth printf yw. Yn wir, byddem wedi gotten neges debyg iawn os IO wedi cyfaddef safonol IO.h a ceisio defnyddio printf. Felly, yr wyf i'n mynd i fynd yn ei flaen a dim ond cymryd Rheoli L i glirio fy sgrin. Neu gallwch deipio glir ac y bydd yn dim ond clirio'r ffenestr terfynell. Ond gallwch dal i sgrolio yn ôl mewn amser. Ac yr wyf i'n mynd i ailgynnal Gwneud Llinynnol. Croeswch fy mysedd y tro hwn, Enter. O fy Nuw, roedd yn gweithio. ei fod yn dangos i mi gorchymyn cryptig hir dyna beth Gwnewch gynhyrchir drwy chlang, ond dim negeseuon gwall. Felly sylweddoli, er bod efallai y byddwch yn ei gael yn gyfan gwbl llethu gyda nifer o negeseuon gwall, mae'n bosibl y bydd yn fod hwn rhaeadru blino effaith, lle nad chlang ddim yn deall un peth, sy'n golygu ei fod wedyn ddim yn deall y gair nesaf, neu y llinell nesaf. Ac felly 'i jyst yn tagu ar eich cod. Ond efallai y atgyweiria fod yn syml. Ac felly bob amser yn canolbwyntio ar y llinell gyntaf iawn o allbwn. Ac os nad ydych yn ei wneud ei ddeall, dim ond yn edrych am eiriau allweddol a allai fod yn cliwiau, a rhif y llinell, a chymeriad, lle a allai fod camgymeriad fod. Nawr, gadewch i mi fynd yn ei flaen a theipiwch dot slaes, llinyn, rhowch. Hm, nid yw'n dweud helo unrhyw beth. Pam? Wel, galw i gof, ble mae'n rhedeg? Mae'n debyg ei sownd ar hyn o bryd mewn cylch, os mynnwch, ar-lein chwech, oherwydd Get Llinynnol trwy ddylunio, ysgrifennwyd gan staff y CS50, a olygir yn llythrennol i ddim ond eistedd yna aros, ac yn aros, ac yn aros am linyn. Yr unig beth rydym yn ei olygu wrth linyn yw mewnbwn dynol. Felly, rydych yn gwybod beth? Gadewch i mi fynd yn ei flaen. A dim ond ar fympwy, gadewch i mi teipio fy enw, David, nodwch. Nawr mae gen i raglen fwy deinamig. Dywedodd, helo David. Os byddaf yn mynd yn ei flaen ac yn rhedeg hyn eto, gadewch i mi roi cynnig dweud enw Zamila, rhowch. Ac yn awr mae gennym raglen ddeinamig. Nid wyf wedi codio byd caled. Nid wyf wedi codio galed enw, neu David, neu Zamila. Nawr mae'n llawer fwy fel y rhaglenni rydym yn gwybod, ble os yw'n cymryd mewnbwn, mae'n cynhyrchu allbwn ychydig yn wahanol. Yn awr, nid yw hyn yn y gorau profiad y defnyddiwr, neu UX. Rwy'n rhedeg y rhaglen. Nid wyf yn gwybod beth rwy'n fod i'w wneud, oni bai fy mod mewn gwirionedd yn edrych ar neu cofiwch y cod ffynhonnell. Felly gadewch i ni wneud y defnyddiwr profi ychydig yn well gyda'r symlaf o bethau. Gadewch i mi fynd yn ôl i mewn i hyn rhaglen, ac yn syml yn dweud printf. A gadewch i mi fynd yn ei flaen ac yn dweud enw, colon, a gofod, ac yna hanner colon. A dim ond ar gyfer cychwyn, dim adlach n. Ac mae hynny'n fwriadol, oherwydd nid wyf am yr prydlon i symud at y llinell nesaf. Rwyf am, yn lle hynny, yn gwneud hyn, yn gwneud llinyn i ail-grynhoi fy cod i mewn i beiriant newydd Cod dot slaes llinyn. Ah, mae hyn yn llawer prettier. Nawr rwy'n mewn gwirionedd yn gwybod beth y cyfrifiadur am i mi ei wneud, rhoi enw iddo. Felly, yr wyf i'n mynd i fynd yn ei flaen a theipiwch yn Rob, fynd i mewn, a helo, Rob. Felly, yn sylweddoli, mae hyn yn dal i fod, ar y diwedd y dydd, dim ond rhaglen naw llinell. Ond rydym wedi cymryd camau bach hyn. Ysgrifennom un llinell ag ef ni yn gyfarwydd, printf, helo byd. Yna rydym wedi dad ychydig o hynny. Ac rydym yn defnyddio mewn gwirionedd yn cael llinyn. Ac rydym yn taflu gwerth hwnnw mewn newidyn. Ac yna rydym yn mynd yn ei flaen a gwell ymhellach gyda thrydydd llinell. Ac mae proses ailadroddol hon o ysgrifennu meddalwedd yn wirioneddol allweddol. Yn CS50, ac mewn bywyd yn gyffredinol, Yn gyffredinol, ni ddylech eistedd i lawr, cael rhaglen mewn golwg, a rhoi cynnig ar ysgrifennu y peth damn cyfan i gyd ar unwaith. Bydd yn, yn anochel, yn arwain at ffordd mwy gamgymeriadau nag yr ydym ni ein hunain yn gweld yma. Hyd yn oed i mi, hyd y dydd hwn, yn gyson gwneud camgymeriadau dwp eraill, camgymeriadau mewn gwirionedd yn fwy anodd sy'n anos eu chyfrif i maes. Ond byddwch yn gwneud mwy o gamgymeriadau y mwyaf linellau o god byddwch yn ysgrifennu i gyd ar unwaith. Ac felly yr arfer hwn o, ysgrifennu ychydig o god eich bod yn gyfforddus gyda, llunio ei, rhedeg, ei brofi yn fwy cyffredinol, yna symud on-- felly yn union fel rydym yn cadw haenu a haenu yr wythnos diwethaf, adeiladu o rywbeth iawn syml i rywbeth mwy cymhleth, wneud yr un peth yma. Peidiwch ag eistedd i lawr, ac yn ceisio ysgrifennu broblem gyfan. Mewn gwirionedd yn cymryd camau bach hyn. Nawr, nid llinynnau i gyd hynny ddefnyddiol iddynt eu hunain. Byddem mewn gwirionedd, yn ddelfrydol, fel i cael rhywbeth arall yn ein pecyn cymorth. Felly gadewch i ni mewn gwirionedd yn gwneud yn union hynny. Gadewch i mi fynd yn ei flaen yn awr a chwip i fyny rhaglen ychydig yn wahanol. A byddwn yn galw int.c hwn, er cyfanrif. Rydw i'n mynd i, yn yr un modd, cynnwys CS550.h. Rydw i'n mynd i gynnwys IO safonol. Ac mae hynny'n mynd i fod yn eithaf cyffredin yn yr ychydig ddyddiau cyntaf y dosbarth. Ac yr wyf i'n mynd i yn barod fy hun gyda phrif swyddogaeth. Ac yn awr yn hytrach na chael llinyn, gadewch i ni fynd yn ei flaen a chael int. Gadewch i ni alw i, a galw yn cael int, parens agos, hanner colon. Ac yn awr gadewch i ni wneud rhywbeth ag ef, printf. Gadewch i ni ddweud rhywbeth fel helo, slaes n, coma i. Felly rwy'n ddynwared 'n bert lawer beth wnes ychydig funudau'n ôl. Mae gen i dalfan yma. Rwyf wedi coma fi yma, oherwydd yr wyf am i dopio i mewn i'r dalfan. Felly gadewch i ni fynd yn ei flaen a rhoi cynnig llunio rhaglen hon. gelwir y ffeil int.c. Felly, yr wyf i'n mynd i ddweud, yn gwneud int, rhowch. O fy Nuw, ond dim llawer mawr, dde? Mae 'na gamgymeriad. Mae 'na gamgymeriad cystrawennol yma y fath nad oedd y rhaglen yn gallu yn cael ei llunio y tu mewn int.c, llinell saith, cymeriad 27, fformat gwall yn pennu torgoch math seren, beth bynnag yw hynny. Ond mae'r math ddadl yw int. Felly yma, hefyd, rydym yn ddim yn mynd i'r canlynol-- er bod heddiw yn llawer o ddeunydd, rydym yn mynd i gorlethu chi gyda hollol pob nodwedd o C, a rhaglennu yn fwy cyffredinol, mewn dim ond yr ychydig wythnosau cyntaf. Felly mae 'aml yn mynd i fod jargon nad ydych yn gyfarwydd ag ef. Ac, mewn gwirionedd, seren torgoch yn rhywbeth rydym yn mynd i ddod yn ôl i mewn wythnos neu ddwy amser yn. Ond am nawr, gadewch i ni weld os gallwn gramadegu geiriau sy'n gyfarwydd. Formats-- felly clywsom fformat rhagnodwr, fformat cod blaen. Dyna cyfarwydd. Type-- ond mae gan y ddadl int math. Arhoswch funud, fi yn int. Efallai y cant s mewn gwirionedd Mae rhywfaint o ystyr a ddiffiniwyd. Ac, yn wir, y mae'n ei wneud. Yn gyfanrif, os ydych am printf yn lle hynny, mewn gwirionedd yn rhaid i chi ddefnyddio fformat gwahanol rhagnodwr. A fyddech chi ddim yn gwybod hyn oni bai fod rhywun yn dweud wrthych chi, neu os ydych wedi gwneud hyn o'r blaen. Ond y cant i yw'r hyn gellir ei ddefnyddio yn gyffredin yn printf am plygio mewn cyfanrif. Gallwch hefyd ddefnyddio cant d ar gyfer cyfanrif degol. Ond fi yn neis ac yn syml yma. Felly, byddwn yn mynd â hynny. Nawr, gadewch i mi fynd yn ei flaen ac ailgynnal gwneud int, Enter. Mae hynny'n dda, dim camgymeriadau. Dot slaes OK int--, profiad y defnyddiwr gwael, oherwydd nid wyf wedi dweud fy hun beth i'w wneud. Ond mae hynny'n iawn. Im 'yn dal ymlaen yn gyflym. Ac yn awr gad i mi fynd yn ei flaen a deipio David, OK, Zamila, Rob. Iawn, felly mae hyn yn beth da. Y tro hwn, Im 'yn arfer swyddogaeth, darn pos, a elwir yn get int. Ac mae'n troi out-- ac rydym annhymerus ' gweler yn ddiweddarach hwn yn y term-- mae'r staff CS50 wedi gweithredu cael llinyn yn y fath fodd ei fod yn unig yn gorfforol bydd cael llinyn i chi. Mae wedi gweithredu get int mewn y fath fodd fel mai dim ond bydd yn cael yn gyfanrif i chi. Ac os ydych chi, y dynol, peidiwch cydweithredu, mae'n llythrennol jyst yn mynd i dweud ailgeisio, ailgeisio, ailgeisio, llythrennol eistedd yno dolennu, nes yr ydych yn gorfodi gyda rhywfaint rhif hudol, fel 50, a helo 50. Neu os rydym yn rhedeg hyn eto a math mewn 42, helo 42. Ac felly y swyddogaeth get int tu mewn y darn pos yn ddigon rhesymeg, digon o feddwl, at chyfrif i maes, beth yn air? A beth yw rhif? Dim ond yn derbyn, yn y pen draw, rhifau. Felly, mae'n troi allan bod hyn Nid yw'r cyfan sydd mynegiannol. hyd yn hyn. Felly, yay, tro diwethaf i ni Aeth yn weddol gyflym i mewn i weithredu gemau, ac animeiddio, a gweithiau artistig yn Scratch. Ac yma, rydym yn cael eu cynnwys gyda byd helo, ac helo 50. Nid yw popeth ysbrydoledig hynny. Ac, yn wir, y rhain yn gyntaf ychydig Bydd enghreifftiau yn cymryd peth amser i ramp i fyny yn y cyffro. Ond mae gennym gymaint mwy rheoli erbyn hyn, mewn gwirionedd. Ac rydym yn mynd i iawn yn gyflym yn dechrau haenu ar ben y primitives sylfaenol hyn. Ond yn gyntaf, gadewch i ni ddeall yr hyn y mae'r cyfyngiadau yn cael eu. Yn wir, un o'r pethau Nid yw Scratch yn hawdd gadewch i ni wneud yn wirioneddol edrych o dan y cwfl, ac yn deall beth yw cyfrifiadur yn, yr hyn y gall ei wneud, a beth yw ei gyfyngiadau yn cael eu. Ac, yn wir, fod diffyg dealltwriaeth, o bosibl, yn y tymor hir Gall arwain at ein ysgrifennu mistakes-- hunain bugs, ysgrifennu meddalwedd ansicr sy'n cael hacio mewn rhyw ffordd. Felly, gadewch i gymryd rhai camau tuag at deall ychydig yn well hyn drwy ffordd o, dyweder, yr enghraifft ganlynol. Rydw i'n mynd i fynd yn ei flaen a gweithredu go gyflym rhaglen o'r enw Gwiber. Fel, gadewch i ni ychwanegu rhai rhifau at ei gilydd. Ac yr wyf i'n mynd i cod rhai corneli yma, a dim ond copïo a gludo lle'r oeddwn o'r blaen, dim ond er mwyn i ni gael mynd yn gynt. Felly nawr mae gen y dechreuadau sylfaenol o raglen o'r enw Gwiber. A gadewch i ni fynd yn ei flaen ac yn gwneud hyn. Rydw i'n mynd i fynd yn ei flaen a dyweder, intx cael cael int. A ydych yn gwybod beth? Gadewch i ni wneud gwell profiad i'r defnyddiwr. Felly, gadewch i 'jyst dweud x yw, ac yn effeithiol annog y defnyddiwr i roi x inni. Ac yna gadewch i mi fynd yn ei flaen a dweud, printf beth am y yn, y tro hwn gan ddisgwyl dau werth gan y defnyddiwr. Ac yna gadewch i jyst mynd yn ei flaen a dyweder, printf, mae'r swm o x ac y mae. Ac yn awr nid wyf ddim eisiau gwneud y cant s. Rwyf am wneud y cant i, slaes n, ac yna plwg yn werth swm. Felly sut y gallaf fynd ati i wneud hyn? Ti'n gwybod beth? Yr wyf yn gwybod sut i ddefnyddio newidynnau. Gadewch i mi ddatgan un newydd, int z. Ac yr wyf i'n mynd i gymryd dyfalu yma. Os oes arwyddion cyfartal yn hyn iaith, efallai y gallaf jyst gwneud x plws y, cyn belled gan fy mod yn dod i ben fy meddwl gyda hanner colon? Nawr gallaf fynd yn ôl i lawr yma, plwg yn z, gorffen meddwl hwn gyda hanner colon. A gadewch i ni weld nawr, os yw'r rhain dilyniannau o x lines-- yw cael int. Y yn cael int. Ychwanegwch x ac y, storio gwerth yn z-- felly, unwaith eto, cofiwch y hafalnod Nid yn gyfartal. Mae'n aseiniad o'r dde i'r chwith. A gadewch i ni argraffu'r bod y swm x ac y nid yn llythrennol z, ond yr hyn sydd y tu mewn o z. Felly gadewch i ni wneud Gwiber - 'n glws, unrhyw gamgymeriadau y tro hwn. Dot slaes Gwiber, rhowch, x yn mynd i fod 1. Y yn mynd i fod 2. A'r swm x ac y yn 3. Felly dyna i gyd iawn ac yn dda. Felly byddech yn dychmygu y cwestiwn Dylai weithio mewn rhaglen fel hon. Ond eich bod yn gwybod beth? Yn amrywio hon, llinell 12, hyd yn oed yn angenrheidiol? Nid oes angen i chi fynd i mewn i'r arfer o ychydig storio pethau mewn newidynnau dim ond oherwydd gallwch. Ac, yn wir, mae'n gyffredinol dylunio gwael ystyriol os ydych yn creu newidyn, a elwir yn z yn yr achos hwn, storio rhywbeth ynddo, ac yna yn syth ei ddefnyddio, ond byth eto. Pam rhoi enw rywbeth fel z os ydych yn llythrennol mynd i ddefnyddio'r beth unwaith yn unig, ac yn y blaen procsimol i ble rydych yn ei greu yn y lle cyntaf, mor agos o ran linellau o god? Felly, rydych yn gwybod beth? Mae'n ymddangos bod C yn eithaf hyblyg. Os ydw i mewn gwirionedd yn eisiau plug-in gwerthoedd yma, Nid oes angen imi ddatgan newidyn newydd. Gallai Fi jyst plug-in x plws y, gan fod C yn deall rhifyddeg, a gweithredwyr mathemategol. Felly gallaf ddweud yn syml, yn gwneud mathemateg hwn, x ynghyd y, beth bynnag gwerthoedd hynny yw, plwg y deillio cyfanrif i mewn i'r llinyn. Felly, gallai hyn fod, er dim ond un llinell byrrach, dyluniad gwell, rhaglen yn well, oherwydd mae llai o cod, felly llai i mi ddeall. Ac mae hefyd dim ond glanach, i'r graddau nad ydym yn cyflwyno geiriau newydd, symbolau newydd, fel z, er nad ydynt yn ei wneud mewn gwirionedd gwasanaethu llawer o bwrpas. Yn anffodus, nid yw mathemateg yn cyfan sydd weithiau'n dibynadwy. Gadewch i ni fynd yn ei flaen ac yn gwneud hyn. Rydw i'n mynd i fynd yn ei flaen yn awr ac yn gwneud y canlynol. Gadewch i ni wneud printf, cant i, ynghyd cant i, fydd cant i, slaes n. Ac yr wyf i'n mynd i wneud this-- xyx plws y. Felly Im 'jyst yn mynd i ailysgrifennu mae hyn ychydig yn wahanol yma. Gadewch i mi wneud gwiriad pwyll gyflym. Unwaith eto, gadewch i ni fynd o flaen ein hunain. Gwneud wiber, dot wiber slaes. x yw 1, y yn 2, 1 a 2 yw 3. Felly dyna dda. Ond gadewch i gymhlethu hyn nawr ychydig, ac yn creu ffeil newydd. Rydw i'n mynd i alw yr un yma, dweud, ints, lluosog i gyfanrifau. Gadewch i mi ddechrau lle'r oeddwn yn eiliad yn ôl. Ond yn awr gadewch i ni wneud ychydig o linellau eraill. Gadewch i mi fynd yn ei flaen ac yn gwneud y canlynol, printf, cant i, minws y cant i, yw y cant i, coma x, coma yx minws y. Felly, yr wyf i'n gwneud ychydig mathemateg gwahanol yno. Gadewch i ni wneud un arall. Felly y cant i amseroedd y cant ff yn y cant i, slaes n. Gadewch i ni plug-in x, ac y, ac amseroedd x y. Byddwn yn defnyddio'r seren ar eich cyfrifiadur ar gyfer amseroedd. nad ydych yn defnyddio x. x yn enw newidyn yma. Byddwch yn defnyddio'r seren ar gyfer lluosi. Gadewch i ni wneud un yn fwy. cant Rwyf printf, wedi'i rannu trwy y cant i, yw y cant i, n slaes. xy wedi'i rannu gan y-- felly byddwch yn defnyddio'r slaes yn C i wneud is-adran. A gadewch i ni wneud un arall. Gweddill y cant i, wedi'i rannu trwy y cant i, yw y cant i. xy-- ac yn awr gweddill yn fwy na beth sydd ar ôl. Pan fyddwch yn ceisio rhannu yn Enwadur i mewn i rhifiadur, faint dros ei adael bod nad oeddech yn gallu rhannu'r allan? Felly nid oes mewn gwirionedd, o reidrwydd, yn symbol rydym wedi defnyddio yn yr ysgol radd ar gyfer hyn. Ond mae yn C. Gallwch dweud x modwlo y, lle yr arwydd y cant yn context-- hwn ddryslyd pan fyddwch yn y tu mewn o'r dyfynodau dwbl, tu mewn printf, y cant yn cael ei ddefnyddio fel y fformat rhagnodwr. Pan fyddwch yn defnyddio y cant y tu allan hynny mewn mynegiant mathemategol, 'i' y gweithredwr modwlo gyfer modiwlaidd arithmetic-- at ein dibenion yma, dim ond yn golygu, beth yw'r gweddill y x rannu gan y? Felly x rannu gan y yn x slaes y. Beth yw gweddill x rannu gan y? Mae'n x y mod, gan y byddai rhaglennydd ddweud. Felly os wyf yn gwneud unrhyw gamgymeriadau yma, gadewch i mi mynd yn ei flaen ac yn gwneud ints, lluosog, neis, a ints slaes dot. A gadewch i ni fynd yn ei flaen a ei wneud, gadewch i ni ddweud, 1, 10. Mae pob hawl, 1 a 10 yw 11, siec. 1 minws 10 yn negyddol 9, gwirio. 1 o weithiau 10 yw 10, siec. 1 rannu gan 10 yw-- OK, byddwn yn hepgor y un. Gweddill y 1 rannu gan 10 yw 1. Mae hynny'n gywir. Ond mae nam yn fan hyn. Felly mae'r un yr wyf yn rhoi fy law dros, nid gywir. Yr wyf yn golygu, mae'n agos i 0. 1 rannu gan 10, chi'n gwybod, os ydym yn dorri rhai corneli, yn sicr, mae'n sero. Ond dylai fod mewn gwirionedd fod yn 1/10, 0.1, neu 0.10, 0.1000, neu yn y blaen. Ni ddylai fod mewn gwirionedd fod yn sero. Wel, mae'n ymddangos bod y cyfrifiadur yn gwneud yn llythrennol yr hyn yr ydym yn dweud iddo ei wneud. Yr ydym yn gwneud mathemateg fel x rannu gan y. Ac mae'r ddau x ac y, fesul y llinellau o cod yn gynharach, yn gyfanrifau. Ar ben hynny, ar linell 15, yr ydym yn dweud printf, hey, printf plug-in yn gyfanrif, plug-in cyfanrif, plug-mewn integer-- penodol x, ac yna y, ac yna x wedi'i rannu gan y. x ac y yn ints. Rydym yn dda yno. Ond beth yw x rannu â x? x wedi'i rannu â dylai y fod, fathemategol, 1/10, neu 0.1, sydd yn nifer go iawn, mae nifer go iawn gael, o bosibl, mae pwynt degol. Nid yw'n yn gyfanrif. Ond beth yw'r agosaf cyfanrif i 1/10, neu 0.1? Yeah, mae'n fath o yn sero. 0.1 Mae fel cymaint â hyn. Ac mae 1 yn hyn yn llawer. Felly 1/10 yn agosach at 0 nag yw hi i un. Ac felly yr hyn y C yn ei wneud i us-- math o oherwydd ein bod yn dweud ei fod yn canlynol-- yn truncating y cyfanrif. Mae'n cymryd y gwerth, sydd eto'n dybiedig i fod rhywbeth fel 0.1000, 0 ac yn y blaen. Ac mae'n truncating popeth ar ôl y pwynt degol fel bod yr holl o hyn pethau, oherwydd nid yw'n gwneud ffitio yn y syniad o cyfanrif, a oedd yn yn unig yw nifer fel negatif 1, 0, 1, i fyny ac i lawr, mae'n taflu popeth ar ôl y pwynt degol oherwydd eich Ni all ffitio pwynt degol mewn cyfanrif trwy ddiffiniad. Felly yr ateb yma yw sero. Felly sut rydym yn atgyweiria hon? Mae arnom angen ateb arall i gyd gyda'i gilydd. A gallwn wneud hyn, fel a ganlyn. Gadewch i mi fynd yn ei flaen a chreu newydd ffeil, mae hyn yn un o'r enw floats.c. A'i gadw yma yn y un cyfeiriadur, float.c. A gadewch i mi fynd yn ei flaen a chopïo rhai o'r cod hwnnw o gynharach. Ond yn hytrach na chael yn int, gadewch i ni wneud hyn. Rhowch gwerth pwynt arnawf mi Gelwir x. lle mae pwynt arnawf gwerth yn unig yn llythrennol rhywbeth gyda pwynt arnawf. Gall symud i'r chwith, i'r dde. Mae'n rhif real. A gadewch nid fy ffonio cael int, ond yn cael arnofio, sydd hefyd ymhlith y ddewislen o opsiynau yn y llyfrgell C250. Gadewch i ni newid y i fflôt. Felly, mae hyn yn dod yn cael arnofio. Ac yn awr, nid ydym am i plwg yn ints. Mae'n troi allan rhaid i ni ddefnyddio y cant f ar gyfer arnofio, cant f i arnofio, ac yn awr gadw. Ac yn awr, croesi bysedd, yn gwneud fflotiau, neis, fflotiau slaes dot. x yn mynd i fod yn un 1. y Yn mynd i fod yn 10 eto. Ac, neis, OK fy ychwanegiad yn gywir. Yr oeddwn yn gobeithio am fwy, ond anghofiais i ysgrifennu iddo. Felly, gadewch i ni fynd a atgyweiria hon gwall rhesymegol. Gadewch i ni fynd yn ei flaen ac yn mynnu y canlynol. Byddwn yn jyst yn gwneud ychydig copi a gludo. Ac yr wyf i'n mynd i ddweud minws. Ac yr wyf i'n mynd i amserau ddweud. Ac yr wyf i'n mynd i ddweud eu rhannu. Ac nid wyf i'n mynd i wneud modwlo, nad yw mor germane yma, rhannu gan f, ac amseroedd plus-- OK, gadewch i ni wneud hyn eto. Gwneud fflotiau, fflotiau slaes dot, a 1, 10, ac-- 'n glws, na, OK. Felly rwy'n idiot. Felly, mae hyn yn gyffredin iawn mewn gwyddoniaeth gyfrifiadurol i wneud camgymeriadau dwp fel hyn. At ddibenion addysgol, beth Fi 'n sylweddol eisiau ei wneud Roedd newid y wyddoniaeth yma i plws, i minws, i amserau, ac i rannu, wrth i chi, gobeithio, sylwi ystod yr ymarfer hwn. Felly nawr gadewch i ail-lunio hwn rhaglen, yn gwneud fflotiau slaes dot. Ac am y trydydd tro, gadewch i ni weld a yw'n cwrdd fy nisgwyliadau. 1, 10, fynd i mewn, ie, OK, 1.000, wedi'i rannu gan 10.000, yw 0.100000. Ac mae'n troi allan, gallwn reoli faint o niferoedd yn ôl pwyntiau degol hynny. Rydym mewn gwirionedd yn. Byddwn yn dod yn ôl at hynny. Ond yn awr, mewn gwirionedd, y math yn gywir. Felly, unwaith eto, beth yw'r prydau parod yma? Mae'n troi allan bod yn C, mae yna nid yn unig yn unig strings-- ac, mewn gwirionedd, nid oes mewn gwirionedd, oherwydd ein ychwanegwch y rhai sydd â'r llyfrgell CS50. Ond nid oes dim ond ints. Mae yna hefyd arnofio. Ac mae'n troi allan criw o ddata arall mathau hefyd, y byddwn yn eu defnyddio cyn hir. Troi allan os ydych am un cymeriad, nid cyfres o gymeriadau, gallwch ddefnyddio dim ond torgoch. Troi allan, os ydych am i bool, gwerth Boole, gwir neu gau yn unig, diolch i'r llyfrgell CS50, mae gennym ychwanegu at C y math data bool yn ogystal. Ond mae hefyd yn cyflwyno mewn llawer o ieithoedd eraill yn ogystal. Ac mae'n ymddangos bod weithiau i chi Mae angen rhifau mwy, yna dewch yn ddiofyn gyda ints a fflotiau. Ac, mewn gwirionedd, yn ddwbl yn rhif sy'n defnyddio Nid yw 32 darnau, ond 64 ddarnau. A hir hir yn nifer y defnyddio Nid yw 32, darnau ond 64 darnau, yn y drefn honno, ar gyfer pwynt arnawf gwerthoedd a cyfanrifau, yn y drefn honno. Felly gadewch i ni mewn gwirionedd yn awr gweld hyn ar waith. Rydw i'n mynd i fynd yn ei flaen yma a chwip i fyny un rhaglen arall. Yma, yr wyf i'n mynd i fynd yn ei flaen ac yn cynnwys CS50.h. A gadewch i mi fynd, yn cynnwys IO.h. safonol A byddwch yn sylwi rhywbeth ffynci sy'n digwydd yma. Dyw hi ddim yn lliwio codio pethau mewn yr un ffordd ag y gwnaeth o'r blaen. Ac mae'n troi allan, mae hynny oherwydd fy mod Nid wedi rhoi'r enw ffeil y peth. Rydw i'n mynd i alw yr un yma sizeof.c, a tharo Save. A sylwi ar yr hyn sy'n digwydd i fy iawn cod gwyn yn erbyn y cefndir du. Yn awr, o leiaf mae 'na rhai porffor i mewn 'na. Ac mae'n tynnu sylw at cystrawen. Mae hyn oherwydd, yn syml iawn, dwi wedi dweud wrth y DRhA pa fath o ffeil mae'n drwy roi ei enw, ac yn benodol estyniad ffeil. Nawr, gadewch i ni fynd yn ei flaen ac yn gwneud hyn. Rydw i'n mynd i fynd yn ei flaen ac yn iawn yn syml argraffwch y bool canlynol-- yw y cant LU. Byddwn yn dod yn ôl at bod mewn dim ond hyn o bryd. Ac yna dwi'n mynd i Maint y print o bool. Ac yn awr, dim ond i arbed fy hun beth amser, rwy'n mynd i wneud yn ei gyfanrwydd criw o hyn ar unwaith. Ac, yn benodol, yr wyf i'n mynd i newid hyn i torgoch a torgoch. Mae hyn yn un, dw i'n mynd i newid i dwbl a dwbl. Mae hyn yn un, dw i'n mynd i newid i fflôt a fflôt. Mae hyn yn un, yr wyf i'n mynd i newid i int ac int. Ac mae hyn yn un, dwi'n mynd i newid i hir hir. Ac mae'n dal i gymryd amser hir, hir o amser. Ac yna, yn olaf, rhoddais fy hun un yn ormod, llinyn. Mae'n troi allan bod yn C, does y gweithredydd arbennig o'r enw maint dyna llythrennol mynd i, pan rhedeg, yn dweud wrthym faint o pob un o'r newidynnau hyn. Ac mae hyn yn ffordd, yn awr, gallwn gysylltu ôl i drafod yr wythnos ddiwethaf o ddata a chynrychiolaeth. Gadewch i mi fynd yn ei flaen ac yn llunio maint y maint slaes dot o. A gadewch i ni weld. Mae'n troi allan bod yn C, benodol ar CS50 IDE, benodol ar y system weithredu Ubuntu, sydd yn gweithredu 64-bit system yn yr achos hwn, mae bool yn mynd i defnyddio un beit o ofod. Dyna sut maint yn cael ei fesur, nid mewn darnau, ond mewn bytes. A dwyn i gof bod un beit yw wyth did. Felly mae bool, er eich bod yn dechnegol ond angen 0 neu 1, mae'n ychydig yn wastraffus sut rydym wedi rhoi ar waith iddo. Mae'n mewn gwirionedd yn mynd i ddefnyddio ei gyfanrwydd byte-- felly pob seroau, yn efallai holl rai, neu rywbeth fel 'na, neu dim ond un 1 ymhlith wyth did. Mae torgoch, yn y cyfamser, a ddefnyddir ar gyfer cymeriad fel cymeriad ASCII yr wythnos diwethaf, yn mynd i fod yn un cymeriad. A bod synchs i fyny gyda ein syniad o ei fod yn ddim mwy na 256 bits-- yn hytrach, synchs i fyny ag ef oedd dim hwy nag 8 did, a oedd yn yn rhoi cymaint â 256 werthoedd ni. Mae ddwbl yn mynd i fod yn 8 bytes neu 64 ddarnau. Mae fflôt yw 4. Mae int yw 4. A hir, hir yw 8. Ac linyn yw 8. Ond peidiwch â phoeni am hynny. Rydym yn mynd i plicio yn ôl y haen. Mae'n troi allan, gall llinynnau fod yn hwy nag 8 bytes. Ac, yn wir, rydym wedi ysgrifennu llinynnau eisoes, helo byd, hwy nag 8 bytes. Ond byddwn yn dod yn ôl at bod mewn dim ond hyn o bryd. Ond mae'r cymryd i ffwrdd dyma yw'r canlynol. Dim ond Mae gan unrhyw gyfrifiadur yn gyfyngedig faint o gof a gofod. Gallwch ond storio cymaint o ffeiliau ar eich Mac neu PC. Gallwch ond storio cymaint o raglenni mewn RAM yn rhedeg ar unwaith, o angenrheidrwydd, hyd yn oed gyda'r cof rhith, oherwydd mae gennych swm cyfyngedig o RAM. A dim ond i picture-- os nad ydych erioed wedi agor gliniadur neu archebu gof ychwanegol ar gyfer cyfrifiadur, rydych yn Efallai na yn gwybod bod tu mewn eich cyfrifiadur yn rhywbeth sy'n edrych ychydig fel hyn. Felly, mae hyn yn unig yw gwmni cyffredin a enwir Croch sy'n gwneud RAM ar gyfer cyfrifiaduron. A RAM yw lle mae rhaglenni byw tra byddant yn rhedeg. Felly, ar bob Mac neu PC, pan fyddwch yn dyblu cliciwch ar un o'r rhaglen, a fydd yn agor i fyny, ac mae'n agor ryw ddogfen Word neu rywbeth fel 'na, mae'n storio dros dro mewn iddo RAM, oherwydd RAM yn gyflymach na eich disg galed, neu eich disg cyflwr solet. Felly dim ond lle mae rhaglenni yn mynd i fyw pan fyddant yn rhedeg, neu pan fydd y ffeiliau yn cael eu defnyddio. Felly, mae gennych bethau sy'n edrych yn fel tu hon o'ch gliniadur, neu bethau ychydig yn fwy tu mewn eich bwrdd gwaith. Ond dim ond yn cael y allweddol yr ydych yn nifer cyfyngedig o'r pethau hyn. Ac mae yna dim ond swm cyfyngedig o caledwedd yn eistedd ar ddesg hawl hon fan hyn. Felly, yn sicr, ni allwn storio rhifau anfeidrol hir. Ac, eto, os ydych yn meddwl yn ôl i ysgol radd, sawl digidau gall gennych ar y dde o'r pwynt degol? O ran hynny, faint o digidau gall gennych i'r chwith pwynt degol? Really, anfeidrol lawer. Yn awr, dim ond efallai ni bodau dynol yn gwybod sut i ynganu miliwn, a biliwn, triliwn, a quadrillion, a quintillion. A dwi'n gwthio terfynau fy understanding-- neu my-- Deallaf rhifau, ond mae fy ynganiad o rifau. Ond gallant gael anfeidrol fawr gyda ganmil llawer digidau ar y chwith neu ar y dde o'r pwynt degol. Ond dim ond gyfrifiaduron yn swm cyfyngedig o gof, nifer cyfyngedig o transistors, mae nifer cyfyngedig o fylbiau golau y tu mewn. Felly beth sy'n digwydd pan byddwch yn rhedeg allan o le? Mewn geiriau eraill, os ydych yn meddwl yn ôl at yr wythnos diwethaf pan buom yn siarad am rifau eu hunain yn cael eu cynrychioli mewn deuaidd, Mae'n debyg bod gennym 8-bit hwn werth yma. Ac mae gennym saith 1 ac un 0. Ac mae'n debyg ein bod am i ychwanegu 1 i'r gwerth hwn. Mae hwn yn rhif mawr iawn ar hyn o bryd. Mae hwn yn 254, os cofiaf y math o wythnos dde diwethaf. Ond beth os byddaf yn newid bod rightmost 0 i 1? Mae'r rhif cyfan, o gwrs, yn dod wyth 1 yn. Felly, rydym yn dal i fod yn dda. Ac mae hynny yn ôl pob tebyg yn cynrychioli 255, er bod yn dibynnu ar gyd-destun gallai fod mewn gwirionedd yn cynrychioli rhif negatif. Ond mwy am hynny rywbryd arall. Mae hyn yn teimlo fel ei fod yn ymwneud mor uchel ag y gallaf gyfrif. Nawr, dim ond 8 did. A fy Mac, yn sicr, mae gan ffordd mwy nag 8 darnau o gof. Ond oes ganddo gyfyngedig. Felly mae'r un ddadl yn berthnasol, hyd yn oed os ydym yn cael mwy o rai hyn ar y sgrin. Ond beth sy'n digwydd os ydych chi'n storio rhif hwn, 255, ac rydych am i gyfrif 1 ychydig yn uwch? Rydych chi eisiau mynd 255-256. Y broblem, wrth gwrs, yw os ydych yn yn dechrau cyfrif ar sero fel yr wythnos diwethaf, nad ydych yn gallu cyfrif fel uchel fel 256, heb sôn am 257, heb sôn am 258, m oherwydd yr hyn sy'n digwydd pan fyddwch yn ychwanegu 1? Os byddwch yn gwneud yr hen ysgol radd dull, byddwch yn rhoi o 1 yma, ac yna 1 ac 1 yw 2, ond mae hynny'n mewn gwirionedd yn sero, byddwch yn cario'r 1, gario'r 1, cario'r 1. Mae pob un o'r pethau hyn, 1 hyn, ewch i sero. A chi ddirwyn i ben, ie, fel rhywun sylw at y ffaith, mae 1 ar yr ochr chwith. Ond popeth y gallwch mewn gwirionedd yn gweld ac yn addas yn y cof yn unig yw wyth 0, sef dweud ar ryw bwynt os ydych chi, cyfrifiadur, rhoi cynnig ar gyfrif yn ddigon uchel i fyny, rydych yn mynd i lapio o gwmpas, mae'n ymddangos, i sero, neu efallai hyd yn oed yn negyddol rhifau, sydd hyd yn oed yn is na sero. A gallwn fath o weld hyn. Gadewch i mi fynd yn ei flaen ac ysgrifennu rhaglen gyflym go iawn yma. Gadewch i mi fynd yn ei flaen ac ysgrifennu rhaglen o'r enw Gorlifo. Dylech gynnwys CS50.h, yn cynnwys safon IO.h-- oh, Fi 'n sylweddol colli fy amlygu cystrawen. Felly gadewch i arbed hyn fel overflow.c. Ac yn brif void-- awr int a chyn hir, rydym annhymerus ' dod yn ôl i egluro pam byddwn yn cadw ysgrifennu prif ddi-rym int. Ond am nawr, gadewch i ni dim ond gwneud iddo, gan gymryd yn ganiataol. Gadewch i ni roi int fy hun, ac ymgychwyn i 0. Gadewch i ni wedyn yn ei wneud ar gyfer int i gael zero-- mewn gwirionedd, gadewch i ni wneud yn dolen ddiddiwedd a gweld beth sy'n digwydd. Er bod wir, yna gadewch i ni argraffu n yw y cant i, slaes n, plug-in n. Ond, yn awr, gadewch i ni wneud n cael n plws 1. Felly, mewn geiriau eraill, ar bob un ailadrodd y dolen ddiddiwedd, gadewch i ni gymryd gwerth n, yn ac ychwanegu 1 iddo, ac yna storio y canlyniad yn ôl yn n ar y chwith. Ac, mewn gwirionedd, yr ydym wedi gweld chystrawen ychydig fel hyn, yn fyr. Mae tric oer yw yn lle hynny o ysgrifennu hyn i gyd allan, alli 'n weithredol ddweud yn n plws yn dychwelyd 1. Neu os ydych wir eisiau bod yn ffansi, allwch ddweud n plws plws hanner colon. Ond mae'r rhain ddau olaf yn unig beth byddem yn galw siwgr cystrawennol am y peth cyntaf. Y peth cyntaf yn fwy eglur, hollol iawn, yn hollol gywir. Ond mae hyn yn fwy cyffredin, byddaf yn dweud. Felly byddwn yn gwneud hyn am ychydig funudau'n. Gadewch i ni yn awr yn gwneud gorlif, sy'n swnio yn hytrach ominous, gorlif slaes dot. Gadewch i ni weld, n mynd yn eithaf mawr. Ond gadewch i ni feddwl, pa mor fawr y gall n ei gael? n yn int. Gwelsom funud yn ôl gyda maint enghraifft bod int yw pedwar bytes. Rydym yn gwybod o wythnos diwethaf, pedwar bytes yn 32 darnau, gan fod 8 gwaith 4, dyna 32. Mae hynny'n mynd i fod yn 4 biliwn a. Ac rydym yn hyd at 800,000. Mae hyn yn mynd i gymryd am byth i cyfrif fel uchel ag y gallaf. Felly, yr wyf i'n mynd i fynd yn ei flaen, wrth i chi efallai cyn bo hir, a tharo Rheoli C-- dweud y gwir, Rheoli C, llawer, lle Rheoli C gyffredinol fodd canslo. Yn anffodus, gan fod hyn yn rhedeg yn y cwmwl, weithiau y cwmwl yn poeri allan cymaint stwff, cymaint o allbwn, mae'n mynd i cymryd ychydig o amser ar gyfer fy mewnbwn i gyrraedd y cwmwl. Felly hyd yn oed er fy mod yn taro Rheoli C ychydig eiliadau yn ôl, mae hyn yn bendant yr ochr effaith dolen ddiddiwedd. Ac felly mewn achosion o'r fath, rydym yn mynd i adael hynny fod. Ac rydym yn mynd i ychwanegu un arall ffenestr terfynell dros yma gyda'r plws, nad wrth gwrs yn gwneud fel 'na, gan ei fod yn dal i feddwl. A gadewch i ni fynd yn ei flaen a bod yn ychydig yn fwy rhesymol. Rydw i'n mynd i fynd yn ei flaen ac yn gwneud hyn ond finitely lawer gwaith. Gadewch i ni yn defnyddio ar gyfer dolen, yr wyf yn cyfeirio at gynharach. Gadewch i ni wneud hyn. Rhowch int newidyn arall i cael 0 mi. ff yn llai na, gadewch i ni ddweud, 64 ff ++. Ac yn awr gad i mi fynd yn ei flaen ac argraffu allan n yn y cant i, coma n. Ac yna n-- hyn yn dal mynd i gymryd am byth. Gadewch i ni wneud hyn. n cael n amserau 2. Neu gallem fod yn ffansi ac yn gwneud amseroedd yn dychwelyd 2. Ond gadewch i 'jyst dweud n hafal hun, amseroedd 2. Mewn geiriau eraill, yn hyn fersiwn newydd o'r rhaglen, Nid wyf am i chi aros am byth o hoffi 800,000 i 4 biliwn. Gadewch i ni ei gael dros hwn gyda. Gadewch i ni mewn gwirionedd yn dyblu n bob tro. Pa rai, galw i gof, dyblu yw'r gyferbyn gael, wrth gwrs. A chan fod yr wythnos ddiwethaf rydym wedi rhywbeth eto, ac eto, ac unwaith eto, gyflym super, dyblu fydd yn sicr cael ni o 1 i'r mwyaf posibl gwerth y gallwn ddibynnu i gyda int. Felly gadewch i ni wneud yn union hynny. A byddwn yn dod yn ôl at hyn cyn hir. Ond mae hyn, unwaith eto, yn union fel y bloc ailadrodd yn Scratch. A byddwch yn defnyddio hyn cyn hir. Mae hyn yn unig yn golygu cyfrif o sero hyd at, ond nid yn gyfartal, i 64. Ac ar bob fersiwn o hyn dolen, jyst cadw incrementing i. Felly, fi ++ - a lluniad cyffredinol hwn ar-lein 7 yn unig yw ffordd super gyffredin o ailadrodd rhai llinellau cod, mae rhai nifer o weithiau. Pa linellau o god? Mae'r rhain braces cyrliog, fel y fod wedi lloffa o hyn, golygu, yn gwneud y canlynol. Mae yn Scratch fel, pan mae wedi y blociau melyn a lliwiau eraill y math hwnnw o cofleidio neu hug flociau eraill. Dyna beth cyrliog rhai bresys yn ei wneud yma. Felly, os cefais fy cystrawen right-- chi Gellir gweld y symbol moron yn fodd C dyna faint o weithiau roeddwn yn geisio datrys y broblem hon. Felly gadewch i ni gael gwared ar y un yn gyfan gwbl, a chau y ffenestr. A byddwn yn defnyddio'r un newydd. Gwneud gorlif, slaes dot gorlif, Mewnbynnu, iawn, mae'n edrych yn wael ar y dechrau. Ond gadewch i sgrolio yn ôl mewn amser, oherwydd yr wyf yn gwneud hyn 64 o weithiau. Ac yn sylwi ar y tro cyntaf, n yw 1. Ail waith, n yw 2, Yna 4, yna 8, yna 16. Ac mae'n ymddangos bod cyn gynted ag y Rwy'n cael i tua 1 biliwn, os byddaf yn dyblu eto, mae hynny'n Dylai roi i mi 2 biliwn. Ond mae'n troi allan, mae'n i'r dde ar y ffin. Ac felly y mae mewn gwirionedd gorlifo mae int o 1 biliwn o i fras negyddol 2 biliwn, gan fod cyfanrif, yn wahanol i niferoedd yr ydym yn yn tybio yr wythnos diwethaf, Gall fod yn gadarnhaol ac yn negyddol mewn gwirionedd ac mewn cyfrifiadur. Ac felly o leiaf un o'r rheini darnau ei ddwyn yn effeithiol. Felly, rydym mewn gwirionedd dim ond 31 o ddarnau, neu 2 biliwn o werthoedd posibl. Ond am y tro, mae'r prydau parod yn eithaf yn syml, beth bynnag y niferoedd hyn yn a beth bynnag yw'r math yw, rhywbeth drwg yn digwydd yn y pen draw, oherwydd yn y pen draw yr ydych yn ceisio permute y darnau un gormod o weithiau. A ydych yn effeithiol yn mynd o bob 1 i efallai pob un 0, neu'n efallai dim ond rhai batrwm arall ei fod yn yn amlwg, yn dibynnu ar y cyd-destun, gellir eu dehongli fel rhif negyddol. Ac felly byddai'n ymddangos y wyf uchaf gallu cyfrif yn y rhaglen benodol hon Dim ond fras 1 biliwn. Ond mae 'na ateb rhannol yma. Ti'n gwybod beth? Gadewch i mi newid o int i hir hir. A gadewch i mi fynd yn ei flaen yma ac say-- Rydw i'n mynd i gael i newid hyn i heb eu llofnodi hir. Neu, gadewch i ni weld erioed, yr wyf yn cofio fy hun. Gadewch i ni fynd yn ei flaen ac yn gwneud gorlifo. Na, nid dyna'r peth, LLD, diolch i chi. Felly weithiau gall chlang fod yn ddefnyddiol. Doeddwn i ddim yn cofio beth y fformat rhagnodwr oedd am hir hir. Ond, yn wir, dywedodd chlang mi. Green yw rhyw fath o dda, yn dal i olygu eich bod wedi gwneud camgymeriad. Mae'n dyfalu fy mod yn golygu LLD. Felly, gadewch i mi gymryd ei fod yn gyngor, yn hir rhif degol hir, ac eithrio bod. A gadewch i mi ailgynnal iddo, dot slaes gorlif, Enter. Ac yn awr beth cŵl yw hwn. Os byddaf yn sgrolio yn ôl mewn amser, rydym yn dal yn dechrau cyfrif ar yr un place-- 1, 2, 4, 8, 16. Rhybudd, rydym yn cael yr holl ffordd i fyny at 1 biliwn. Ond yna rydym yn ddiogel mynd at 2 biliwn. Yna rydym yn cael i 4 biliwn, Yna 8 biliwn, 17 o biliwn. Ac rydym yn mynd yn uwch, ac uwch, ac yn uwch. Yn y pen draw, mae hyn, hefyd, egwyliau. Yn y pen draw, gyda hir hir, sef y gwerth 64-bit, nid gwerth 32-bit, os ydych yn cyfrif rhy uchel, byddwch yn cofleidiol 0. Ac yn yr achos hwn, rydym yn digwydd i yn y pen draw gyda nifer negyddol. Felly, mae hyn yn broblem. Ac mae'n troi allan bod hyn Nid problem yw pob arcane hynny. Hyd yn oed er fy mod i wedi fwriadol achosir i ag camgymeriadau hyn, mae'n troi allan rydym yn gweld ei fod yn fath o gyd ni, neu o leiaf rai ohonom o gwmpas yn ei wneud. Felly, yn Star Wars Lego, os chi erioed wedi chwarae y gêm, mae'n troi allan y gallwch chi fynd o gwmpas torri pethau i fyny yn y byd LEGO, a chasglu darnau arian, yn y bôn. Ac os ydych chi wedi chwarae erioed y gêm hon ffordd gormod o amser, gan fod hyn yn unigolyn di-enw yma wnaeth, cyfanswm nifer o ddarnau arian y gallwch ei gasglu yw, byddai'n ymddangos, 4 biliwn. Yn awr, gyda 'i' talgrynnu mewn gwirionedd. Felly LEGO yn ceisio cadw defnyddiwr pethau'n gyfeillgar. Doedden nhw ddim yn gwneud hynny yn union 2 i 32 pŵer, yr wythnos diwethaf. Ond 4 biliwn a yn rheswm. Mae'n ymddangos, yn seiliedig ar y wybodaeth hon, hynny LEGO, a'r cwmni sy'n gwneud meddalwedd gwirioneddol hyn, penderfynodd bod y nifer mwyaf o ddarnau arian gall y defnyddiwr gronni yw, yn wir, 4 biliwn, oherwydd eu bod wedi dewis yn eu cod i ddefnyddio nid yn hir hir, mae'n debyg, ond dim ond yn gyfanrif, mae heb eu llofnodi cyfanrif, dim ond cyfanrif positif, y mae ei fras max gwerth yn hynny. Wel, dyma un ddoniol arall. Felly, yn y gêm Civilization, a oedd yn efallai y bydd rhai ohonoch yn gyfarwydd, gyda mae'n troi allan bod flynyddoedd yn ôl yno Roedd nam yn y gêm hon, lle os ydych yn chwarae rôl o Gandhi yn y gêm, yn ei le yn heddychwr iawn, yn lle hynny yn hynod, hynod ymosodol, mewn rhai amgylchiadau. Yn benodol, y ffordd y Civilization gweithfeydd yw os ydych yn, y chwaraewr, fabwysiadu democratiaeth, eich sgôr ymosodol yn cael ostwng o ddau, felly minws minws, ac yna minws minws. Felly rydych tynnu 2 o eich ailadrodd gwirioneddol. Yn anffodus, os yw eich ailadrodd yn i ddechrau 1, ac yn eich tynnu 2 ohono ar ôl mabwysiadu'r democratiaeth fel Gandhi yma gallai wedi ei wneud, oherwydd ei fod yn passive-- iawn 1 ar y raddfa o aggressiveness. Ond os bydd yn mabwysiadu democratiaeth, yna mae'n mynd o 1 i negyddol 1. Yn anffodus, roeddent yn ddefnyddio rhifau heb eu harwyddo, sy'n golygu eu trin yn hyd yn oed yn negyddol rhifau fel pe baent yn gadarnhaol. Ac mae'n ymddangos bod y sy'n cyfateb cadarnhaol o negyddol 1, mewn rhaglenni cyfrifiadurol nodweddiadol, yw 255. Felly os Gandhi yn mabwysiadu democratiaeth, ac felly mae gostwng ei sgôr ymosodol, mewn gwirionedd mae'n rholiau o gwmpas i 255 ac yn ei wneud yn y rhan fwyaf o cymeriad ymosodol yn y gêm. Felly gallwch Google i fyny ar hyn. Ac yr oedd, yn wir, mae bug rhaglennu damweiniol, ond mae hynny wedi mynd yn eithaf y llên byth ers hynny. Dyna i gyd yn hwyl ac yn cute. Yn fwy brawychus yw pan gwirioneddol dyfeisiau byd go iawn, ac nid gemau, cael yr un bugs hyn. Yn wir, dim ond blwyddyn yn ôl daeth erthygl gwybod am y Boeing 787 Dreamliner. Ac mae'r erthygl ar y dechrau Cipolwg yn darllen ychydig o arcane. Ond mae'n dweud hyn, mae meddalwedd yn agored i niwed yn Boeing newydd 787 Dreamliner jet wedi â'r potensial i achosi cynlluniau peilot i golli rheolaeth yr awyren, o bosibl yng nghanol hedfan, mae'r swyddogion FAA cwmnïau hedfan rhybuddio ddiweddar. Hwn oedd y penderfyniad bod model 787 awyren sydd wedi ei bweru barhaus am 248 o ddiwrnodau Gall colli pob eiledol cyfredol, AC, pŵer trydanol oherwydd y generadur unedau rheoli, GCUs, ar yr un pryd mynd i fethu modd diogel. Mae'n fath o golli mi. Ond dywedodd y memo, OK, yn awr yr wyf got hynny, y cyflwr ei achosi gan feddalwedd wrthweithio mewnol i rheoli generadur unedau a fydd yn gorlifo ar ôl 248 diwrnod o bŵer parhaus. Rydym yn cyhoeddi'r hyn sylwi i atal colli o'r holl AC trydanol pŵer, a allai arwain yn colli rheolaeth ar yr awyren. Felly, yn llythrennol, mae rhywfaint o gyfanrif, neu ryw fath o ddata cyfatebol, cael eu defnyddio mewn meddalwedd mewn awyren go iawn os byddwch yn cadw eich awyren ar ddigon hir, a oedd yn ôl pob golwg Gall fod yn wir os ydych ond yn rhedeg hwy yn gyson a byth thynnu plygiau eich awyren, mae'n ymddangos, neu osod ei batris yn marw, yn y pen draw yn cyfrif i fyny, ac i fyny, ac i fyny, ac i fyny, ac i fyny, ac i fyny. Ac, wrth natur, yn swm cyfyngedig o gof Bydd gorlifo, rholio yn ôl i sero neu ryw werth negyddol, sgîl-effaith o sef y realiti ddychrynllyd go iawn y gallai fod angen yr awyren i gael eu hailgychwyn, yn effeithiol, neu a allai ddisgyn, yn waeth, wrth iddo hedfan. Felly mathau hyn o faterion yn dal i fod gyda ni, even-- roedd hon yn erthygl 2015, oed yn fwy brawychus pan nad ydych yn ei wneud o reidrwydd deall, gwerthfawrogi, neu ragweld mathau hynny o wallau. Felly, mae'n troi allan yna un arall beth drwg am gynrychiolaeth data. Mae'n ymddangos bod hyd yn oed yn arnofion yn fath o ddiffygiol, oherwydd fflotiau, hefyd, Gynigiais yn 32 ddarnau, neu efallai 64 os ydych yn defnyddio dwbl. Ond mae hynny'n dal i fod cyfyngedig. Ac mae'r dal yw bod os gallwch rhoi nifer anfeidrol o rifau ar ôl y pwynt degol, nid oes unrhyw ffordd i chi Gall gynrychioli'r holl posibl rhifau ein bod yn dysgu yn radd gall ysgol bodoli yn y byd. Mae cyfrifiadur, yn y bôn, yn gorfod dewis is-set o'r niferoedd hynny i gynrychioli gywir. Yn awr, gall y cyfrifiadur crwn efallai ychydig bach, a gallwch ganiatáu i fras siop unrhyw rif efallai y byddwch o bosibl yn dymuno. Ond dim ond yn reddfol, os ydych yn gennym nifer cyfyngedig o ddarnau, gallwch ond eu permute mewn cymaint o ffyrdd cyfyngedig. Felly, ni allwch o bosibl defnyddio nifer gyfyngedig o permutation o ddarnau, patrymau zeros a rhai, i gynrychioli anfeidrol nifer o rifau, sy'n awgrymu bod gallai cyfrifiaduron yn dda iawn yn gorwedd i ni weithiau. Yn wir, gadewch i ni wneud hyn. Gadewch i mi fynd yn ôl i mewn i IDE CS50. Gadewch i mi fynd yn ei flaen ac creu ychydig o raglen Gelwir Imprecision, i ddangos bod cyfrifiaduron yn, yn wir, yn amhenodol. A gadewch i mi fynd yn ei flaen ac yn dechrau gyda rhai o'r cod hwnnw o o'r blaen, ac yn awr yn unig yn gwneud y canlynol. Gadewch i mi fynd yn ei flaen ac yn gwneud printf, y cant f, n slaes, 1 rannu gan 10. Mewn geiriau eraill, gadewch i ni plymio yn ddyfnach i 1/10, fel 1 a rannu gan 10. Yn sicr, gall cyfrifiadur gynrychioli 1/10. Felly gadewch i ni fynd yn ei flaen ac yn gwneud imprecision. Gawn ni weld. Fformat nodi deipio dwbl. Ond mae'r ddadl wedi int fath. Beth sy'n Digwydd? O, diddorol, felly mae'n Dysgodd wers oddi blaen. I ddim yn dweud, hey, sioe cyfrifiadur mi fflôt gyda cant f. Ond dw i'n rhoi 2 ints. Felly, mae'n troi allan, gallaf atgyweiria hwn mewn cwpl o ffyrdd. Gallai Fi jyst troi un yn 1.0, a 10 i 10.0, a fyddai, yn wir, cael yr effaith o drosi nhw i floats-- dal gobeithio yr un nifer. Neu mae'n troi allan bod rhywbeth byddwn yn gweld eto cyn hir. Gallech fwrw y rhifau. Gallwch, gan ddefnyddio cromfachau hwn mynegiant, gallwch ddweud, hey, cyfrifiadur, yn cymryd hyn 10, a gwn yn int. Ond yn ei drin, os gwelwch yn dda, fel pe ei fod yn arnofio. Ond mae hyn yn teimlo'n ddiangen o gymhleth. At ein dibenion heddiw, gadewch i ni dim ond yn llythrennol gwneud iddynt fel y bo'r angen gwerthoedd pwynt gyda phwynt degol, fel hyn. Gadewch i mi fynd yn ei flaen ac ailgynnal, yn gwneud imprecision, da, slaes dot imprecision, rhowch. OK, rydym yn edrych yn dda. 1 rannu gan 10, yn ôl fy Mac yma, yw, yn wir, 0.100000. Yn awr, yr wyf yn ei dysgu yn yr ysgol radd yno Dylai fod nifer anfeidrol o 0 yn. Felly gadewch i ni o leiaf yn ceisio i weld rhai o'r rheini. Mae'n ymddangos bod printf yn ychydig dal i fod yn ffansi nag yr ydym wedi bod yn defnyddio. Mae'n troi allan nid oes rhaid i chi nodi jyst cant f, neu dim ond y cant i. alli 'n weithredol bennu rhai opsiynau rheoli yma. Yn benodol, yr wyf i'n mynd i ddweud, hey, printf, mewn gwirionedd yn dangos i mi 10 pwynt degol. Felly mae'n edrych ychydig yn od. Ond rydych yn ei ddweud y cant, dot, faint o rifau ydych chi eisiau gweld ar ôl y pwynt degol, ac yna f ar gyfer fflat, dim ond oherwydd dyna yr hyn y mae'r ddogfennaeth yn ei ddweud. Gadewch i mi fynd yn ei flaen ac arbed hynny. Ac yn sylwi hefyd, Im 'yn cael wedi blino o aildeipio pethau. Felly Im 'jyst yn gosod y fyny ac i saeth i lawr ar fy allweddi yma. Ac os wyf yn cadw taro i fyny, i chi Gellir gweld pob un o'r gorchmynion a wneuthum, neu eu gwneud yn anghywir. Ac yr wyf i'n mynd i fynd yn ei flaen yn awr ac Nid yw defnyddio mewn gwirionedd hynny, mae'n debyg. Gwneud imprecision, dot slaes imprecision-- felly hyn yr oeddwn yn dysgu yn ysgol radd gwiriadau allan. Hyd yn oed os ydw i'n argraffu i 10 degol yn ei osod, yn wir, yw 0.10000. Ond eich bod yn gwybod beth? Gadewch i ni gael ychydig farus. Dewch i ddweud, fel, yn dangos i mi 55 pwyntiau ar ôl y pwynt degol. Gadewch i 'n sylweddol yn cymryd hyn rhaglennu allan am sbin. Gadewch i mi ail-wneud gyda gwneud imprecision, dot slaes, imprecision. A dyma ni yn mynd. Eich plentyndod oedd yn gelwydd. Mae'n debyg, 1 rannu gan 10 yn wir 0.100000000000000005551115123-- Beth sy'n mynd ymlaen? Wel, mae'n troi allan, os ydych yn fath o edrych yn ddigon pell yn yr gwaelodol cynrychiolaeth o hyn Rhif, mae'n mewn gwirionedd Nid yw union 1/10, neu 0.1 a nifer anfeidrol o sero. Yn awr, pam hynny? Wel, er bod hyn yn syml rhif i ni bodau dynol, 1 rannu gan 10, mae'n dal i fod yn un o ganmil llawer niferoedd y gallem feddwl i fyny. Ond gall cyfrifiadur yn unig yn cynrychioli finitely llawer o rifau hynny. Ac felly, yn effeithiol, yr hyn y mae'r cyfrifiadur yn dangos i ni yw ei agosaf brasamcan i'r rhif rydym am i gredu yn 1/10, neu yn wir 0.10000 ad infinitum. Yn hytrach, fodd bynnag, mae hyn yn mor agos ag y gall wneud. Ac, yn wir, os edrychwch o dan y cwfl, gan ein bod yma drwy edrych 55 digid ar ôl y degol, rydym mewn gwirionedd yn gweld y realiti hwnnw. Nawr wrth fynd heibio, os ydych chi wedi gweld erioed yr movie-- y rhan fwyaf ohonoch yn ôl pob tebyg haven't-- ond Superman 3 rai blynyddoedd yn ôl, Richard Pryor leveraged hwn yn ei hanfod realiti yn ei gwmni i ddwyn llawer o ffracsiynau a ffracsiynau o geiniogau, oherwydd bod y company-- fel yr wyf yn cofio, mae wedi bod yn while-- yn ei hanfod taflu i ffwrdd unrhyw beth nad oedd yn cyd-fynd i mewn i'r syniad o cents. Ond os ydych yn ychwanegu at hyn i gyd bach, bach, rhifau bach eto, ac unwaith eto, ac unwaith eto, gallwch, fel yn ei achos, yn gwneud swm da o arian. Yr un syniad yn twyllo gan yn fwy diweddar, ond yn dal yn awr yn hŷn ffilm, o'r enw Space Office, lle mae'r guys yn y ffilm, gwneud yr un peth, gwyneb i fyny yn gyfan gwbl, a ddaeth i ben i fyny gyda ffordd gormod arian yn eu cyfrif banc. Roedd y cyfan yn amheus iawn. Ond ar ddiwedd y dydd, imprecision o'n cwmpas. A dyna, hefyd, yn gallu bod yn ddychrynllyd yr achos. Mae'n ymddangos bod Superman 3 a Gofod Swyddfa neilltu, yna Gall fod rhywfaint go iawn oblygiadau byd o realiti amhenodol cynrychiolaeth o ddata bod hyd yn oed i ni bodau dynol i y diwrnod hwn yn ei wneud nid o reidrwydd deall yn ogystal ag y dylem, neu gofio mor aml ag y dylem. Ac, yn wir, mae'r clip canlynol o edrych ar rai byd real iawn goblygiadau beth sy'n digwydd os ydych yn peidiwch â gwerthfawrogi'r imprecision sy'n Gall ddigwydd mewn cynrychiolaeth rhifau. [VIDEO Playback] -Computers, Rydym ni i gyd wedi dod i dderbyn y problemau yn aml yn rhwystredig fynd gyda them-- bugs, firysau, a glitches meddalwedd, am brisiau bach i'w dalu er hwylustod. Ond mewn uwch-dechnoleg a cyflymder uchel ceisiadau milwrol a rhaglen ofod, gall y broblem lleiaf yn cael ei chwyddo i mewn i drychineb. Ar Fehefin y 4ydd o, 1996, gwyddonwyr a baratowyd i lansio di-griw Ariane 5 roced. Roedd yn cario gwyddonol lloerennau a gynlluniwyd i sefydlu union sut mae'r rhyngweithio maes magnetig y ddaear yn gyda gwyntoedd solar. Roedd y roced ei adeiladu ar gyfer Asiantaeth Gofod Ewrop, ac codi oddi ar ei gyfleuster ar arfordir Giana Ffrengig. -ar Tua 37 eiliad i mewn yr awyren, yn gyntaf rhywbeth a sylwi yn mynd o'i le. Mae'r nozzles yn swiveling mewn ffordd y maent yn ddim wir dylai. Mae tua 40 eiliad i mewn i'r awyren, yn amlwg, y cerbyd oedd mewn trafferth. A dyna pan fyddant yn gwneud penderfyniad i ddinistrio. Mae'r swyddog diogelwch amrediad, gyda perfedd aruthrol, gwasgu y botwm, chwythu i fyny y roced, cyn y gallai yn dod yn berygl i ddiogelwch y cyhoedd. -Mae Hyn oedd y forwyn mordaith y Ariane 5. Ac yn ei dinistrio gymerodd gosod oherwydd nam gwreiddio mewn meddalwedd y roced yn. -Y Broblem ar y Ariane oedd fod yna nifer sy'n ofynnol i 64 ddarnau i fynegi. Ac roedden nhw am i drosi ag ef i rhif 16-bit. Maent yn cymryd yn ganiataol bod y byth rhif yn mynd i fod yn fawr iawn, bod y rhan fwyaf o'r rhai a digidau mewn rhif 64-bit yn sero. Eu bod yn anghywir. -y Anallu un rhaglen feddalwedd i dderbyn y math o rif a gynhyrchir gan Roedd un arall wrth wraidd y methiant. Datblygu meddalwedd wedi dod yn rhan gostus iawn o dechnoleg newydd. Mae'r roced Ariane wedi bod yn iawn llwyddiannus, felly mae llawer o'r meddalwedd creu ar gyfer yr oedd hefyd a ddefnyddir yn y Ariane 5. -Y Broblem sylfaenol oedd bod y Ariane 5 oedd yn gyflymach, cyflymu gyflymach. Ac nid y feddalwedd oedd yn cyfrif am hynny. -y Dinistr y roced oedd yn drychineb ariannol enfawr, pob oherwydd gwall meddalwedd munud. Ond nid hwn oedd y cyntaf problemau trosi data amser wedi plagued dechnoleg roced fodern. -Yn 1991, â dechrau y Rhyfel y Gwlff cyntaf, y Patriot Taflegrau profi rhyw fath tebyg o broblem trosi rhif. Ac o ganlyniad, mae 28 o bobl, 28 o filwyr Americanaidd, eu lladd, ac am 100 arall hanafu, pan fydd y Gwladgarwr, a oedd i fod i amddiffyn yn erbyn scuds sy'n dod i mewn, Methodd i danio taflegryn. -Pan Irac ymosododd Kuwait, ac America Lansiwyd Desert Storm yn gynnar yn 1991, batris Patriot Taflegrau Lleolwyd i amddiffyn Saudi Arabia ac Israel rhag ymosodiadau taflegryn Scud Irac. Mae'r Gwladgarwr yn gyfrwng-range Unol Daleithiau wyneb i system aer, a weithgynhyrchir gan y cwmni Raytheon. -y Maint y ataliwr Patriot ei hun yn 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 o bunnoedd. Ac mae'r warhead ei hun yn yn ffrwydrol uchel, sy'n Mae darnau o'i gwmpas. Mae'r casin y warhead yw cynllunio i weithredu fel fwled. -Y Taflegrau yn cael eu cynnal pedwar y cynhwysydd, ac yn cael eu cludo gan lled ôl-gerbyd. -Y System Gwladgarwr gwrth-taflegryn mynd yn ôl o leiaf 20 mlynedd bellach. Fe'i cynlluniwyd yn wreiddiol fel taflegryn amddiffyn awyr i saethu i lawr awyrennau gelyn. Yn y Rhyfel y Gwlff cyntaf, pan ddaeth y rhyfel draw, y Fyddin am ei ddefnyddio i saethu i lawr scuds, nid awyrennau. Roedd y Llu Awyr Irac nid yn gymaint o broblem. Ond mae'r Fyddin yn poeni am scuds. Ac felly maent yn ceisio uwchraddio'r Gwladgarwr. -Intercepting Gelyn taflegryn teithio ar mach 5 yn mynd i fod yn ddigon heriol. Ond pan fydd y Gwladgarwr ei rhuthro i mewn i wasanaeth, Nid oedd y Fyddin yn ymwybodol o addasiad Irac a wnaeth eu scuds bron yn amhosibl i daro. -Beth Ddigwyddodd yw'r scuds sy'n yn dod i mewn yn ansefydlog. Roeddent yn wobbling. Y rheswm am hyn oedd y Irac, er mwyn i gael 600 cilomedr allan o 300 cilometr ystod taflegryn, cymerodd pwysau allan o'r warhead flaen. Gwnaethant y warhead ysgafnach. Felly, yn awr y Gwladgarwr yn ceisio dod yn y Scud. Ac yn y rhan fwyaf o'r amser, mae'r mwyafrif llethol o'r amser, byddai'n jyst yn hedfan gan y Scud. Unwaith y bydd y gweithredwyr system Gwladgarwr sylweddolodd y Gwladgarwr colli ei darged, maent yn tanio warhead y Gwladgarwr yn er mwyn osgoi anafiadau posibl os bydd yn caniatawyd i ddisgyn i'r llawr. -bod Oedd yr hyn a welodd y rhan fwyaf o bobl, fireballs mawr hynny yn yr awyr, ac camddeall fel intercepts o arfbennau Scud. -Although Yn y nos awyr, ymddangosodd wladgarwyr i fod yn llwyddiannus dinistrio Scuds, yn Dhahran, Gallai fod unrhyw gamgymeriad am ei berfformiad. Yno, system radar y Gwladgarwr yn colli trac o Scud sy'n dod i mewn, a byth ei lansio sy'n ddyledus i nam meddalwedd. Hwn oedd y Israeliaid sydd ddarganfuwyd gyntaf bod y system yn hwy oedd ar, y mwyaf yw'r amser anghysondeb Daeth, o ganlyniad i cloc hymgorffori yn cyfrifiadurol y system. -About Bythefnos cyn y drychineb yn Dhahran, adroddodd y Israeliaid i yr Adran Defense bod y system yn colli amser. Ar ôl tua wyth awr neu redeg, maent yn sylwi bod y system yn dod yn amlwg yn llai cywir. Ymatebodd yr Adran Defense gan dweud wrth yr holl fatris Patriot i beidio gadael y systemau ymlaen am amser hir. Maent byth yn dweud beth amser hir was-- wyth awr, 10 awr, 1,000 o oriau. Does neb yn gwybod. -y Batri Patriot lleoli yn y barics yn Dhahran a'i ddiffygiol mewnol cloc wedi bod ar dros 100 awr ar y noson Chwefror yn 25 oed. -Mae'n Olrhain amser i gywirdeb o tua un rhan o ddeg o eiliad. Yn awr, un rhan o ddeg o eiliad yn rif diddorol, oherwydd na ellir ei mynegi mewn deuaidd yn union, a oedd yn golygu ni ellir ei mynegi yn union mewn unrhyw gyfrifiadur digidol modern. Mae'n anodd credu. Ond defnyddio hyn fel enghraifft. Gadewch i ni gymryd y rhif un traean. Ni all un traean fod mynegi mewn degol yn union. Traean yn 0.333 mynd ymlaen am anfeidredd. Nid oes unrhyw ffordd i wneud hynny gyda cywirdeb absoliwt mewn degol. Dyna'n union y math o broblem a ddigwyddodd yn y Gwladgarwr. Rhedodd yr hiraf y system, mae'r waeth daeth y gwall amser. -Ar Ôl 100 awr o weithredu, mae'r gwall mewn amser oedd dim ond tua un rhan o dair o eiliad. Ond o ran targedu taflegryn teithio ar mach 5, mae'n arwain at olrhain gwallau o dros 600 metr. Byddai'n gwall angheuol ar gyfer y milwyr ar yr hyn Digwyddodd yn lansiad Scud oedd canfod gan loerennau Rhybudd cynnar ac maent yn gwybod bod y Scud oedd yn dod yn eu cyfeiriad cyffredinol. nad oeddent yn gwybod lle cafodd ei dod. -Mae'n Bellach i fyny at y radar elfen o'r system Gwladgarwr amddiffyn Dhahran i leoli a chadw golwg ar y taflegryn gelyn dod i mewn. -Y Radar yn smart iawn. Byddai'n mewn gwirionedd yn olrhain lleoliad y Scud, ac yna rhagweld ble y mae'n fwy na thebyg fyddai'r tro nesaf anfonodd y radar a pwls allan. Cafodd hynny ei alw'n giât ystod. -Then, Unwaith y bydd y Gwladgarwr penderfynu digon o amser wedi drosglwyddo i fynd yn ôl a gwirio'r nesaf lleoliad ar gyfer y gwrthrych ganfod, mae'n mynd yn ôl. Felly pan aeth yn ôl at y anghywir lle, wedyn yn gweld unrhyw wrthrych. Ac mae'n penderfynu nad oedd unrhyw gwrthrych, yr oedd yn canfod ffug, ac yn disgyn y trac. Diflannodd -y Scud sy'n dod i mewn o'r sgrin radar. Ac eiliadau yn ddiweddarach, mae'n Condemniwyd i mewn i'r barics. Mae'r Scud lladd 28, a oedd yr olaf un tanio yn ystod y Rhyfel y Gwlff cyntaf. Yn drasig, y feddalwedd ei diweddaru cyrraedd Dhahran y diwrnod canlynol. Roedd gan y nam meddalwedd bod yn sefydlog, cau un pennod yn y cythryblus hanes y taflegryn Gwladgarwr. [VIDEO Playback] DAVID J. Malan: Felly mae hyn yn gyd i yn dweud bod y materion hyn o gorlif a imprecision i gyd yn rhy real. Felly sut daethom i'r fan hon? Rydym yn dechrau gyda dim ond siarad am printf. Unwaith eto, y swyddogaeth hon sy'n printiau rhywbeth at y sgrîn, ac rydym yn cyflwyno ar ôl hynny ychydig o swyddogaethau eraill oddi wrth yr hyn a elwir llyfrgell CS50 yn. A byddwn yn parhau i gweld y rhain mewn da bryd. Ac yr ydym, yn arbennig, a ddefnyddir get llinyn, a chael int, ac yn awr hefyd yn cael arnofio, ac eto mae eraill yn dal y byddwn yn dod ar eu traws ac yn defnyddio ein hunain cyn hir. Ond ar adegau, wedi rydym eisoes wedi gweld bod angen i storio pa swyddogaethau hynny llaw yn ôl? Maent yn llaw â ni yn ôl llinyn, neu int, neu fflôt. Ac weithiau mae angen i ni roi hynny llinyn, neu int, neu arnofio, yn rhywle. Ac i storio pethau hynny, yn dwyn i gof yn unig fel yn Scratch, mae gennym newidynnau. Ond yn wahanol yn Scratch, yn C rydym wedi mathau gwirioneddol o ddata variables-- math, mwy generally-- yn eu plith, llinyn, mae int, mae arnofio, ac eraill hyn yn dal i. Ac felly pan fyddwn yn datgan newidynnau yn C, bydd yn rhaid i ddatgan ein fathau o ddata. Nid yw hyn yn rhywbeth yr ydym annhymerus ' rhaid iddynt ei wneud yn ddiweddarach yn y semester wrth i ni newid i ieithoedd eraill. Ond am nawr, mae angen i ni at a priori o flaen llaw, esbonio i'r cyfrifiadur pa fath o amrywiol yr ydym am iddo roi i ni. Yn awr, yn y cyfamser, i argraffu mathau hynny o mathau data, mae'n rhaid i ni ddweud printf beth i'w ddisgwyl. A gwelsom y cant ar gyfer llinynnau, ac y cant ff i gyfanrifau, a rhai eraill yn barod. A'r rhai yn syml gofynion am y cyflwyniad gweledol o'r wybodaeth honno. A gall pob un o'r rhain mewn gwirionedd fod yn parametrized neu tweaked mewn rhyw ffordd, os ydych am i reoli ymhellach y math o allbwn yr ydych yn ei gael. Ac, yn wir, mae'n troi allan sydd nid yn unig a oes n slaes am linell newydd. Mae rhywbeth o'r enw arall slaes r i ddychwelyd cerbyd, a oedd yn yn debycach i hen deipiadur ysgol, a hefyd Windows ddefnyddio ers blynyddoedd lawer. Mae t slaes ar gyfer tabiau. Troi allan, os ydych chi eisiau dyfyniad dwbl tu mewn llinyn, dwyn i gof yr ydym wedi defnyddio dyfyniad ddwbl dwbl dyfyniad ar y chwith a'r hawl yn dod i ben o'n llinynnau hyd yma. Byddai hynny'n ymddangos i ddrysu pethau. Os ydych chi am roi dyfynbris dwbl mewn nghanol string-- ac, yn wir, mae'n ddryslyd i weld. Ac felly mae'n rhaid i chi ddianc, felly i siarad, dyfyniad ddwbl gyda rhywbeth fel, yn llythrennol, slaes dyfyniad dwbl. Ac mae rhai eraill yn dal. A byddwn yn gweld mwy o'r rheiny defnyddio go iawn cyn hir. Felly gadewch i ni yn awr yn trosglwyddo o data, a chynrychiolaeth, a gweithredwyr rhifyddeg, pob ohonynt yn rhoi i ni rhywfaint o adeiladu blociau gyda lle i chwarae. Ond yn awr gadewch i ni mewn gwirionedd yn rhoi i ni y gweddill o'r eirfa ein bod eisoes wedi cael yr wythnos diwethaf gyda Scratch drwy edrych ar rai eraill cysyniadau ym C-- nid yw pob un ohonynt. Ond mae'r syniadau rydym yn am ei weld mewn gwirionedd dim ond i bwysleisio y cyfieithiad o un iaith, Scratch, i un arall, C. A thros amser, byddwn yn codi mwy o offer ar gyfer ein pecyn cymorth, fel petai, syntactically. Ac, yn wir, byddwch yn gweld bod y syniadau yn awr yn hytrach cyfarwydd o'r wythnos diwethaf. Felly gadewch i ni wneud hyn. Gadewch i ni fynd yn ei flaen ac yn chwip i fyny rhaglen sydd mewn gwirionedd yn defnyddio rhai ymadroddion, mynegiant Boole. Gadewch i mi fynd yn ei flaen yma ac yn creu ffeil newydd. 'N annhymerus' yn galw condition.c hwn. Gadewch i mi fynd yn ei flaen ac yn cynnwys y llyfrgell CS50. A gadewch i mi fynd yn ei flaen ac yn cynnwys safon IO.h ar gyfer ein swyddogaethau, a printf, ac yn fwy yn y drefn honno. Gadewch i mi roi y boilerplate ohonof fy hun prif ddi-rym int, y mae ei esboniad ni chi helpu dod yn ôl ato yn y dyfodol. Nawr, gadewch i mi fynd yn ei flaen ac yn rhoi fy hun yn int trwy get int. Yna gadewch i mi fynd yn ei flaen ac yn gwneud hyn. Rwyf am ei ddweud os i yw less-- gadewch i ni gwahaniaethu rhwng cadarnhaol, negyddol, neu sero gwerthoedd. Felly os i yn llai na sero, gadewch i mi dim ond cael y rhaglen hon yn syml yn dweud, negyddol, slaes n, arall ai fi yn fwy na sero. Nawr rwy'n, wrth gwrs, yn mynd i ddweud printf bositif, slaes n. Ac yna arall Os-- gallwn i wneud hyn. Gallwn i wneud os i dychwelyd 0. Ond byddwn i'n fod yn gwneud yn o leiaf un camgymeriad yn barod. Dwyn i gof bod y hafalnod yw ' Nid gyfartal, fel yr ydym yn gwybod ei fod bodau dynol. Ond mae'n y gweithredwr aseiniad. Ac nid ydym am gymryd 0 ar y gywir a'i roi yn fi ar y chwith. Felly, er mwyn osgoi dryswch hwn, neu camddefnyddio hafal efallai llofnodi, Penderfynodd bodau dynol rai blynyddoedd yn ôl bod mewn llawer o ieithoedd rhaglennu pan fyddwch eisiau i wirio am gydraddoldeb rhwng y chwith a'r dde, chi mewn gwirionedd yn defnyddio hafal hafal. Felly, rydych yn cyrraedd y arwydd hafal ddwywaith. Pan fyddwch am i neilltuo o'r dde i'r chwith, byddwch yn defnyddio hafalnod sengl. Felly gallem ei wneud this-- arall ai fi hafal hafal sero. Gallwn wedyn yn mynd a agor fy braces cyrliog, ac yn dweud, printf 0, slaes n, wneud. Ond cofiwch sut mae'r rhain Gall ffyrc yn y ffordd yn gweithio. Ac, mewn gwirionedd, dim ond meddwl am y rhesymeg. ff yn rhif. Mae'n yn gyfanrif, yn benodol. Ac mae hynny'n golygu ei fod yn mynd i fod yn llai na 0, neu'n fwy na 0, neu 0. Felly mae math o hyn achos diofyn ymhlyg. Ac felly y gallem, yn union fel Scratch, hepgor y arall os, a dim ond dweud arall. Yn rhesymegol, os ydych yn y rhaglennydd yn gwybod bod yn unig tri bwcedi i mewn i lle mae Gall senario fall-- y cyntaf, yr ail, neu'r trydydd yn achos-- hyn beidio gwneud trafferthu ychwanegu'r manylder ychwanegol ac mae'r rhesymeg ychwanegol yno. Dim ond yn bwrw ymlaen â'r achos diofyn yma o arall. Nawr, gadewch i ni fynd yn ei flaen ar ôl arbed hyn, yn gwneud amodau dot slaes conditions-- Nid yw rhyngwyneb defnyddiwr mawr, oherwydd nid i ddim yn annog y defnyddiwr, fel y soniais yn gynharach. Ond mae hynny'n iawn. Byddwn yn cadw pethau'n syml. Gadewch i ni roi cynnig ar y rhif 42. Ac mae hynny'n gadarnhaol. Gadewch i ni roi cynnig ar y rhif negyddol 42, negyddol. Gadewch i ni geisio werth 0. Ac, yn wir, y mae'n gweithio. Yn awr, byddwch yn gweld gyda phroblemau cyn hir, profi pethau dair gwaith, yn ôl pob tebyg nid yn ddigonol. Mae'n debyg y byddwch am brofi rhai rhifau mwy, mae rhai llai o faint rhifau, rhai achosion cornel, fel y byddwn yn dod i'w disgrifio. Ond am nawr, mae hwn yn rhaglen eithaf syml. A dwi'n eithaf siwr, yn rhesymegol, ei fod yn dod i mewn tri achos. Ac, yn wir, er ein bod yn unig canolbwyntio ar y anfanteision posibl o imprecision a gorlif, yn realiti lle mae llawer o broblemau CS50, a Nid ydym yn mynd i boeni am, drwy'r amser, materion hynny o gorlif a imprecision, oherwydd, mewn gwirionedd, yn C, nid yw'n mewn gwirionedd bob un sy'n hawdd i osgoi pethau hynny. Os ydych am i gyfrif hyd yn fwy, ac yn fwy, ac yn fwy, mae'n troi allan mae yna dechnegau chi gallu defnyddio, yn aml yn cynnwys pethau a elwir yn llyfrgelloedd, casgliadau o god, bod Ysgrifennodd bobl eraill y gallwch ei ddefnyddio, ac ieithoedd eraill fel Java ac eraill, mewn gwirionedd gwneud yn llawer haws i gyfrif hyd yn oed yn uwch. Felly y mae mewn gwirionedd rhai o'r peryglon hyn swyddogaeth yr iaith a ddefnyddiwch. Ac yn yr wythnosau nesaf, rydym annhymerus ' gweler C pa mor beryglus mewn gwirionedd gall fod os nad ydych yn ei ddefnyddio'n gywir. Ond oddi yno, a chyda Python, a JavaScript, bydd rydym yn haen ar rai amddiffyniadau ychwanegol, ac yn rhedeg llai o risgiau hynny. Felly gadewch i ni wneud ychydig yn fwy rhesymeg diddorol yn ein rhaglen. Felly, gadewch i mi fynd yn ei flaen ac yn creu rhaglen o'r enw Rhesymegol dim ond er mwyn i mi chwarae gyda rhai rhesymeg gwirioneddol, logical.c. 'n annhymerus' jyst adysgrifia a bastio rhai Cod oddi gynharach felly rwy'n mynd yn ôl at y pwynt hwn cychwyn 'n glws. Gadewch i mi y tro hwn yn gwneud C. char rwy'n mynd i roi ei enw o C dim ond oherwydd ei fod yn gonfensiynol, cael cymeriad o'r defnyddiwr. A gadewch i esgus fel Im 'yn gweithredu rhan y rhaglen Yst, mae'r dynnu rhaglen cyn a ysgogodd y defnyddiwr i gael gwared ar ffeil. Sut allem ni wneud hyn? Rwyf am ei ddweud, os C hafal yn hafal i, dyfynnwch unquote, y, yna dwi'n mynd i gymryd yn ganiataol bod y defnyddiwr wedi dewis ie. Im 'jyst yn mynd i argraffu ie. Pe bai'n ysgrifennu mewn gwirionedd y rhaglen symud, gallem gael gwared ar y ffeil gyda mwy o linellau o god. Ond byddwn yn cadw pethau'n syml. Arall os c hafal hafal n-- ac yn awr fan hyn, dw i'n mynd i ddweud, Mae'n rhaid i'r defnyddiwr wedi golygu dim. Ac yna arall, eich bod yn gwybod beth? Nid wyf yn gwybod beth arall y defnyddiwr yn mynd i deipio. Felly Im 'jyst yn mynd i ddweud bod hynny yw gwall, beth bynnag ef neu hi wedi'i deipio mewn gwirionedd. Felly beth sy'n mynd ymlaen fan hyn? Mae gwahaniaeth sylfaenol erbyn hyn yr wyf wedi ei wneud yn y gorffennol. dyfynodau dwbl, dyfynodau dwbl, dwbl dyfyniadau, ac, eto, dyfynodau sengl, dyfynodau sengl. Mae'n troi allan yn C, pan ydych am ysgrifennu llinyn, byddwch yn defnyddio dyfynodau dwbl, yn union fel rydym wedi bod yn defnyddio'r holl amser hwn gyda printf. Ond os ydych am i ddelio gyda dim ond cymeriad unigol, mae torgoch fel y'i gelwir, yna rydych yn ei ddefnyddio dyfynodau sengl. Mae'r rhai ohonoch sydd wedi rhaglennu o'r blaen, ni allai fod gennych roedd yn rhaid i chi boeni am hyn rhagoriaeth mewn rhai ieithoedd. Yn C, mae'n ei wneud mater. Ac felly pan fyddaf yn cael torgoch ac rwyf am i gymharu y torgoch defnyddio hafal yn hafal i ryw llythyr fel y neu n, yr wyf yn ei wneud, yn wir, mae angen i gael y dyfynodau sengl. Nawr, gadewch i ni fynd yn ei flaen ac yn gwneud hyn. Gadewch i ni fynd yn ei flaen ac yn gwneud dot rhesymegol slaes rhesymegol. Ac yn awr yr wyf i'n cael fy ysgogi. Felly, yn ôl pob tebyg, yn brofiad gwell defnyddiwr Byddai mewn gwirionedd yn dweud wrthyf beth i'w wneud yma. Ond dw i'n mynd i jyst 'n ddall dweud y am oes, OK, 'n glws. Gadewch i ni redeg eto, n am ddim, 'n glws. Gadewch i ni dybio fel pobl penodol yr wyf yn gwybod, fy caps lock allweddol yw ar yn rhy aml. Felly, yr wyf yn gwneud cyfalaf Y, fynd i mewn, gwall. OK, nid yw'n union beth dwi'n ei ddisgwyl. Yn wir, y cyfrifiadur yn ei wneud yn llythrennol beth Yr wyf yn dweud hi i do-- wirio am llythrennau bach y a llythrennau bach n. Nid yw hyn yn teimlo fel da profiad y defnyddiwr, er. Gadewch i mi ofyn am a derbyn naill achos neu'r llall is neu priflythrennau. Felly, mae'n troi allan, efallai y byddwch am i ddweud rhywbeth fel yn Scratch, fel llythrennol neu C yn hafal yn hafal cyfalaf unigol y ddyfynnir. Troi allan, nid oes gan C hwn allweddair llythrennol neu. Ond mae ganddo dau far fertigol. Mae'n rhaid i chi ddal Shift fel arfer, os ydych yn defnyddio bysellfwrdd Unol Daleithiau, a tharo y bar fertigol allweddol uchod eich allwedd dychwelyd. Ond mae hyn yn bar fertigol bar fertigol yn golygu neu. Os, ar y llaw, roeddem eisiau i'w ddweud a, fel yn Scratch, gallem ei wneud ampersand ampersand. Mae hynny'n gwneud synnwyr rhesymegol yma, oherwydd nad yw pobl allai o bosibl wedi teipio ddau llythrennau bach y y a a chyfalaf Y gan fod yr un cymeriad. Felly neu'n hyn y bwriadwn yma. Felly os wyf yn gwneud hyn yn y ddau le, neu c hafal Equals cyfalaf N, ailgynnal yn awr, gwneud rhesymegol, ailgynnal rhesymegol. Yn awr, gallaf deipio y. A gallaf ei wneud eto gyda prifddinas Y, neu N. cyfalaf A gallwn ychwanegu yn ychwanegol cyfuniadau o hyd. Felly mae hwn yn rhesymegol rhaglen i'r graddau fel yn awr Im 'yn gwirio rhesymegol ar gyfer gwerth hwn neu'r gwerth hwn. Ac nid oes gennyf i, o reidrwydd, dod o hyd i ddau IFS fwy neu arall petai. Gall Fi 'n weithredol cyfuno rhai o'r rhesymeg gysylltiedig at ei gilydd yn y ffordd hon. Felly byddai hyn yn well Cynlluniwyd na dim ond gan ddywedyd, os C hafal is achos y, argraffu ie, arall os c hafal cyfalaf Y, argraffu ie, arall os c hafal lower-- mewn geiriau eraill, Nid oes rhaid i chi gael mwy a mwy o ganghennau. gallwch gyfuno rhai o'r gyfwerth canghennau yn rhesymegol, gan fod yn y modd hwn. Felly, gadewch i ni edrych ar ddim ond un cynhwysyn terfynol, un lluniad terfynol, hynny C yn caniatáu. A byddwn yn dod yn ôl yn y dyfodol i bobl eraill yn dal. Ac yna byddwn yn dod i'r casgliad drwy edrych yn peidio cywirdeb code-- cael cod i work-- ond y dyluniad o god, a phlannu hadau rhai yn gynnar. Felly, gadewch i mi fynd yn ei flaen ac agor ffeil newydd yma. Ti'n gwybod beth? Rydw i'n mynd i ail-weithredu yr un rhaglen, ond gan ddefnyddio lluniad gwahanol. Felly, gadewch i mi yn gyflym yn rhoi fy hun mynediad i gynnwys CS50.h ar gyfer y llyfrgell CS50, Io.h safonol ar gyfer printf. Rhowch fy mhrif ddi-rym int mi. Ac yna dros yma, gadewch mi fynd yn ei flaen ac yn gwneud hyn. Torgoch c yn cael cael torgoch, yn union fel o'r blaen. Ac yr wyf i'n mynd i ddefnyddio lluniad newydd now-- newid, ar ba gymeriad? Felly switsh yn fath o fel newid yn traciau trên. Neu, mewn gwirionedd, mae'n fath o bydd os arall, os arall os, ond ysgrifennu braidd yn wahanol. Mae switsh yn edrych fel hyn. Mae gennych switsh, ac yna beth cymeriad neu rif yr ydych am edrych ar, yna mae rhai braces cyrliog yn hoffi mewn Scratch, dywedwch gwneud pethau hyn. Ac yna mae gennych achosion gwahanol. nad ydych yn defnyddio os a arall. Rydych yn llythrennol yn defnyddio'r achos geiriau. A fyddech yn dweud rhywbeth fel hyn. Felly, yn achos llythrennau bach y, neu yn achos cyfalaf Y, mynd yn ei flaen ac argraffu ie. Ac yna dorri allan o'r switsh. Dyna ni. Rydym yn ei wneud. Else os, fel petai, n llythrennau bychain, neu gyfalaf N, Yna mynd yn ei flaen ac argraffu allan dim, ac yna torri. Else-- ac y math hwn o yw'r achos diofyn indeed-- printf error-- a dim ond ar gyfer mesur da, er rhesymegol nid yw toriad hwn yn angenrheidiol oherwydd ein bod ar y diwedd y switsh beth bynnag, Rwyf nawr yn torri allan o'r switsh. Felly, mae hyn yn edrych ychydig yn wahanol. Ond, yn rhesymegol, mae'n cyfwerth mewn gwirionedd. A pham byddech yn eu defnyddio un dros y llall? Weithiau, hoffter personol yn unig, weithiau estheteg, os wyf cipolwg ar hyn Erbyn hyn, mae rhywbeth i'w ddweud dros y darllenadwyedd y cod hwn. Yr wyf yn golygu, heb sôn am y ffaith bod y cod yn newydd i lawer ohonom yn yr ystafell. Ond mae'n unig fath o yn eithaf. Byddwch yn gweld llythrennau bach y, cyfalaf Y, n llythrennau bychain, cyfalaf N diofyn, 'i jyst fath o neidiau allan ar chi mewn ffordd hynny, gellid dadlau, efallai yr enghraifft flaenorol gyda'r IFS, a'r bariau fertigol, a'r arall IFS, efallai na fydd yn rhaid. Felly, mae hyn yn wir yn fater o personol dewis, mewn gwirionedd, neu ddarllen, o'r cod. Ond o ran ymarferoldeb, gadewch i mi mynd yn ei flaen ac yn gwneud swits, slaes dot newid, ac yn awr deipio i mewn y llythrennau bach, prifddinas Y, n llythrennau bach, cyfalaf N, Dafydd, ailgeisio oherwydd dyna Nid yw un cymeriad. Gadewch i ni wneud x, gwall, yn ôl y disgwyl. Ac, logically-- ac mae hyn yn rhywbeth Byddwn yn annog yn general-- hyd yn oed er ein bod ni'n unig yn crafu'r wyneb o rai o'r nodweddion hyn. Ac efallai na fydd yn amlwg pan fyddwch yn eich hun yn eistedd i lawr ar y bysellfwrdd, sut mae hyn yn gweithio? Beth fyddai hyn yn ei wneud? Y peth hyfryd am gael gliniadur, neu n ben-desg, neu fynediad i gyfrifiadur gyda crynhoydd, ac gyda golygydd cod fel hyn, yn gallwch chi bron bob amser yn ateb y rhain cwestiynau i chi eich hun yn unig drwy roi cynnig. Er enghraifft, os yw'r rhethregol cwestiwn wrth law oedd, beth sy'n digwydd os byddwch yn anghofio eich datganiadau egwyl? Sydd mewn gwirionedd yn beth cyffredin iawn i'w wneud, oherwydd nad yw'n edrych fel chi wir eu hangen. Nid ydynt yn wir yn cwblhau eich yn meddwl fel cromfachau neu cyrliog Brace yn ei wneud. Gadewch i ni fynd yn ei flaen ac ail-grynhoi y cod a gweld. Felly gwnewch yn newid, dot switsh slaes. Gadewch i deipio mewn llythrennau bach y, yr achos uchaf, Enter. Felly, yr wyf teipio y. Dywedodd y rhaglen ie, na, gwall, fel petai wedi'i newid ei meddwl. Ond mae'n fath o oedd, oherwydd mae'r hyn sy'n digwydd gyda switsh yn yr achos cyntaf y gêm yn ei hanfod yn golygu, hey cyfrifiadur, gweithredu pob un o'r Cod oddi tano. Ac os nad ydych yn dweud egwyl, neu peidiwch â dweud egwyl, neu nad ydynt yn dweud egwyl, y cyfrifiadur yn mynd i chwythu drwy bob un o'r llinellau hynny a gweithredu pob un ohonynt nes mae'n mynd i fod Brace cyrliog. Felly, y brêcs yn cael eu, yn wir, yn angenrheidiol. Ond tecawê yma yw, pan amheuaeth, rhowch gynnig ar rywbeth. Efallai arbed eich cod yn gyntaf, neu ei gadw mewn ffeil ychwanegol os ydych yn wir yn poeni am chwarae o hyd a gorfod adennill y gwaith yr ydych yn gwybod yn gweithio. Ond rhoi cynnig ar bethau. Ac peidiwch â bod mor ofnus, efallai, o'r hyn y gallai'r cyfrifiadur yn ei wneud, neu y gallech dorri rhywbeth. Gallwch chi bob amser yn newid yn ôl i ryw fersiwn cynharach. Felly gadewch i ben drwy edrych yn y dyluniad o god. Yr ydym wedi gallu hwn yn awr i ysgrifennu amodau, a dolenni ysgrifennu, a newidynnau, a swyddogaethau alwad. Felly, dweud y gwir, rydym yn fath o yn ôl yn lle'r oeddem wythnos yn ôl gyda Scratch, er gyda testunol llai grymus amgylchedd na Scratch yn caniatáu. Ond yn sylwi pa mor gyflym rydym wedi caffael hynny geirfa, hyd yn oed os yw'n mynd i gymryd ychydig o amser i suddo i mewn, fel y gallwn yn awr yn defnyddio geirfa hwn i ysgrifennu rhaglenni yn fwy diddorol. A gadewch i ni gymryd cam baban tuag at hynny, fel a ganlyn. Gadewch i mi fynd yn ei flaen ac creu ffeil newydd yma. Rydw i'n mynd i alw hyn prototype.c, a chyflwyno am y tro cyntaf, y gallu i wneud eich swyddogaethau ei hun. Efallai y bydd rhai ohonoch gwneud hyn gyda Scratch, lle gallwch greu eich blociau hun arfer yn Scratch, ac yna eu llusgo i'w lle lle bynnag yr hoffech yn C. Ac yn y rhan fwyaf rhaglennu ieithoedd, gallwch chi ei wneud yn union that-- wneud eich swyddogaethau ei hun, os nad ydynt yn bodoli yn barod. Felly, er enghraifft, gadewch i mi fynd yn ei flaen ac maent yn cynnwys CS50.h, ac maent yn cynnwys safon IO.h, prif ddi-rym int. Ac yn awr mae gennym placeholder barod i fynd. Rwy'n cadw pethau'n argraffu fel enwau pobl heddiw. A bod yn teimlo like-- Ni fyddai'n braf pe bai Roedd swyddogaeth o'r enw enw argraffu? Nid oes rhaid i mi ddefnyddio printf. Nid oes rhaid i mi gofio yr holl godau fformat. Pam nad wyf, neu pam Nid oedd rhywun ger fy mron, creu print swyddogaeth o'r enw enw, bod rhoi rhywfaint o enw, yn syml yn argraffu allan? Mewn geiriau eraill, os wyf yn dweud, hey, cyfrifiadur, yn rhoi i mi llinyn drwy ofyn i'r defnyddiwr ar gyfer y cyfryw, drwy swyddogaeth get llinyn CS50 yn. Hey, cyfrifiaduron, rhoi hynny llinyn yn y newidyn yn yr ochr chwith, a galw mae'n s. Ac yna, hey cyfrifiadur, mynd yn ei flaen ac print that enw person, wneud. Yn awr, byddai'n braf, oherwydd rhaglen hon, enw addas, yn dweud wrthyf beth mae'n fod i'w wneud drwy gyfrwng enwau hynny swyddogaeth yn. Gadewch i mi fynd a gwneud prototeip, Enter. Ac, yn anffodus, Nid yw hyn yn mynd i hedfan. Prototype.c, llinell 7, cymeriad 5, gwall, datganiad ymhlyg enw print swyddogaeth yn annilys yn C99, C99 sy'n golygu fersiwn o C a ddaeth allan yn 1999. Dyna i gyd. Felly, nid wyf yn gwybod beth i gyd mae hyn yn golygu hyd yn hyn. Ond yr wyf yn cydnabod camgymeriadau mewn coch. Mae hynny'n eithaf amlwg. Ac mae'n ymddangos bod â cymeriad gwyrdd yma, y broblem yw gyda enw print, ar agor paren s, paren agos, hanner colon. Ond datganiad ymhlyg o swyddogaeth a wnaethom yn gweld yn fyr yn gynharach. Mae hyn yn golygu, yn syml, bod chlang nid yw'n gwybod beth wyf yn ei olygu. Rwyf wedi defnyddio gair geirfa ei fod yn erioed wedi gweld neu wedi cael eu haddysgu o'r blaen. Ac felly mae angen i mi ei ddysgu pa swyddogaeth hon yn ei olygu. Felly, yr wyf i'n mynd i fynd yn ei flaen ac yn gwneud hynny. Rydw i'n mynd i fynd yn ei flaen a gweithredu fy swyddogaeth hun o'r enw Argraffu Enw. Ac yr wyf i'n mynd i ddweud, fel a ganlyn, hynny mae'n gwneud hyn, printf, helo, y cant s, slaes n, enw, hanner colon. Felly beth wnes i jyst yn ei wneud? Felly, mae'n troi allan, i weithredu eich swyddogaeth ei hun, rydym yn fath o fenthyg rhai o'r yr un strwythur ag brif ein bod ni newydd wedi bod cymryd yn ganiataol, ac yr wyf yn gwybod yn union copïo a gludo 'n bert lawer beth Rydw i wedi bod yn ysgrifennu yn y gorffennol. Ond yn sylwi ar y patrwm yma. Int, Main, Void, fe wnawn ni tynnu coes ar wahân cyn bo hir beth y mae hynny'n ei olygu. Ond ar gyfer heddiw, dim ond sylwi ar y parallelism. Void, printiwch yr enw, enw llinyn, felly does gair allweddol porffor, a oedd yn rydym yn mynd i ddechrau yn galw math dychwelyd, enw'r y swyddogaeth, ac yna y mewnbwn. Felly, mewn gwirionedd, gallwn distill y math hwn o fel yr wythnos diwethaf fel, dyma'r enw neu'r algorithm y cod rydym yn mynd i write-- y algorithm gwaelodol y cod rydyn ni'n mynd i ysgrifennu. Mae hyn yn ei fewnbwn. Mae hyn yn ei allbwn. Mae'r swyddogaeth hon, enw print, yw gynllunio i gymryd llinyn o'r enw enw, neu beth bynnag, fel mewnbwn, ac yna ddi-rym. Nid yw'n dychwelyd unrhyw beth, hoffi cael llinyn neu gael int yn ei wneud. Felly, mae'n mynd i law rhywbeth yn ôl i mi. 'I' jyst yn mynd i gael effaith ochr, fel petai, argraffu enw person. Felly sylwi, llinell 7, yr wyf yn gallu galw enw'r print. Llinell 10, gallaf ddiffinio neu weithredu printiwch yr enw. Ond, yn anffodus, nid yw hynny'n ddigon. Gadewch i mi fynd yn ei flaen ac ail-grynhoi hyn ar ôl arbed. Whoa, yn awr, yr wyf wedi ei gwneud yn waeth, byddai'n ymddangos. datganiad Felly ymhlyg o enw print swyddogaeth yn annilys. Ac, unwaith eto, mae mwy o gamgymeriadau. Ond wrth i mi rhybuddio yn gynharach, hyd yn oed os ydych yn cael llethu gyda, neu ychydig yn drist i weld cymaint o camgymeriadau, yn canolbwyntio yn unig ar y cyntaf i ddechrau, oherwydd ei fod yn bosibl y bydd yn wedi cael effaith rhaeadru. Felly C, neu chlang yn fwy penodol, yn dal yn cydnabod enw print. A dyna oherwydd chlang, trwy ddyluniad, yn fath o fud. Dim ond yn gwneud yr hyn yr ydych yn dweud iddo wneud. A dim ond yn gwneud hynny yn y drefn yr ydych yn dweud iddo wneud. Felly yr wyf wedi diffinio prif ar linell pedwar, fel yr ydym wedi bod yn ei wneud yn eithaf aml. Rwyf wedi ddiffinnir enw print ar llinell 10. Ond dw i'n ceisio ei ddefnyddio printiwch yr enw ar linell saith. Mae'n rhy fuan, nid yn bodoli eto. Felly gallwn i fod yn glyfar, ac yn cael ei hoffi, Iawn, felly gadewch i ni dim ond chwarae ar hyd, a symud printiwch yr enw i fyny yma, ac ail-lunio. Oh fy Nuw. Mae'n gweithio. Roedd mor syml â hynny. Ond mae'r rhesymeg yn union hynny. Mae'n rhaid i chi ddysgu chlang hyn y mae'n ei yw drwy ddiffinio swyddogaeth gyntaf. Yna, gallwch ei ddefnyddio. Ond, a dweud y gwir, mae hyn yn teimlo fel llethr llithrig. Felly, bob tro rwy'n rhedeg i mewn i broblem, Im 'jyst mynd i amlygu a chopi y cod Ysgrifennais, ei dorri a'i bastio i fyny yma. Ac, yn sicr, gallem contrive rhai senarios lle y gallai un swyddogaeth Mae angen i alw un arall. Ac ni allwch roi pob swyddogaeth uwchben pob arall. Felly, mae'n troi allan yno yn ateb gwell. Gallwn adael hyn fod. Ac, dweud y gwir, mae'n braf ar y cyfan, a chyfleus, a dylunio da i roi prif gyntaf, oherwydd, unwaith eto, prif yn union fel pan glicio baner werdd, hynny yw swyddogaeth y yn cael ei gyflawni yn ddiofyn. Felly, efallai y byddwch yn ei roi yn dda hynny ar ben y ffeil felly pan ydych chi neu unrhyw dynol arall yn edrych ar y ffeil eich bod yn gwybod beth sy'n digwydd dim ond drwy ddarllen prif cyntaf. Felly, mae'n troi allan, gallwn ddweud chlang rhagweithiol, hey, chlang, ar-lein pedwar, Rwy'n addo i weithredu swyddogaeth o'r enw Print Enw sy'n cymryd enw llinyn o'r enw fel mewnbwn, a ffurflenni dim byd, yn ddi-rym. A byddaf yn mynd o gwmpas i gweithredu yn nes ymlaen. Yma, yn dod Main. Prif nawr ar lein Gall 9 ddefnyddio Print Enw'r oherwydd chlang yn ymddiried hynny, yn y pen draw, bydd yn dod ar draws y diffiniad o o Argraffu Enw waith. Felly, ar ôl arbed fy ffeil, gadewch mi fynd yn ei flaen ac yn gwneud prototeip, edrych yn dda y tro hwn. Dot slaes, prototeip, gadewch i mi mynd yn ei flaen a theipiwch enw. Dafydd, helo Dafydd, Zamila, helo Zamila, ac, yn wir, erbyn hyn mae'n gweithio. Felly mae'r cynhwysyn yma yw bod rydym wedi gwneud swyddogaeth arfer, fel arfer bloc Scratch rydym yn galw ei. Ond yn wahanol i Scratch lle y gallwch jyst ei greu ac yn dechrau ei ddefnyddio, erbyn hyn mae'n rhaid i ni fod yn ychydig yn fwy bedantig, ac mewn gwirionedd yn hyfforddi chlang i'w defnyddio, neu yn disgwyl iddo. Yn awr, wrth fynd heibio, pam yr holl amser hwn yn cael rydym wedi bod yn unig blindly ar ffydd, gan gynnwys CS50.h, ac yn cynnwys IO.h safonol? Wel, mae'n troi allan, ymhlith ychydig o bethau eraill, pob dyna yn y rhai dot h ffeiliau, sy'n digwydd bod yn ffeiliau. Maen nhw'n header ffeiliau, fel petai. Maen nhw'n dal i ysgrifennu yn C. Ond maen nhw'n wahanol fath o ffeil. Am nawr, gallwch gymryd yn ganiataol 'n bert lawer bod popeth sy'n tu mewn CS50.h rhywfaint o un-llongau fel hyn, nid ar gyfer swyddogaethau a elwir Print Enw, ond ar gyfer Get Llinynnol, Get Float, ac ychydig o rai eraill. Ac mae prototeipiau tebyg, un leinin, y tu mewn o IO.h safonol i printf, sydd yn awr yn fy swyddogaeth Argraffu Enw hun. Felly, mewn geiriau eraill, mae hyn yn llawn amser rydym wedi newydd gael ei gopïo a chludo blindly gynnwys hyn, yn cynnwys hynny, beth sy'n digwydd? Dyna'r unig fath o gliwiau i chlang ynghylch pa swyddogaethau yn cael eu, yn wir, eu gweithredu, dim ond mewn mannau eraill yn ffeiliau gwahanol mewn mannau eraill ar y system. Felly rydym wedi rhoi ar waith enw print. Mae'n gwneud gael sgîl effaith hon o argraffu rhywbeth ar y sgrin. Ond nid yw'n mewn gwirionedd law i mi rhywbeth yn ôl. Sut ydym yn mynd ati i gweithredu rhaglen sy'n yn llaw i mi rhywbeth yn ôl? Wel, gadewch i ni geisio hyn. Gadewch i mi fynd yn ei flaen ac yn gweithredu yn return.c ffeil o'r enw fel y gallwn ddangos sut mae rhywbeth fel Get Llinynnol, neu Get Int, mewn gwirionedd yn dychwelyd rhywbeth yn ôl i'r defnyddiwr. Gadewch i ni fynd yn ei flaen ac yn diffinio prif ddi-rym int. Ac, unwaith eto, yn y dyfodol, rydym annhymerus ' esbonio beth sy'n int a bod yn ddi-rym yn ei wneud mewn gwirionedd. Ond ar gyfer heddiw, rydym annhymerus ' cymryd yn ganiataol. Rydw i'n mynd i fynd yn ei flaen ac yn printf, ar gyfer profiad y defnyddiwr da, x yw. Ac yna dwi'n mynd i aros am y defnyddiwr i roi i mi x gyda Bydd int. Ac yna dwi'n mynd i fynd yn ei flaen ac argraffu x i'r sgwâr. Felly, pan fyddwch yn unig yn cael bysellfwrdd, pobl gyffredin defnyddiwch y moron bach symbol ar y bysellfwrdd i gynrychioli at y pŵer o, neu ddehonglwr o. Felly x sgwâr yn bresennol i. Ac yn awr yr wyf i'n mynd i wneud hyn. Gallai Fi jyst do-- beth sydd x sgwario? x sgwâr yw amseroedd x x. Ac rydym yn gwneud hyn mae rhai amser yn ôl eisoes heddiw. Nid yw hyn yn teimlo fel holl bod llawer o gynnydd. Ti'n gwybod beth? Gadewch i trosoledd rhai o'r syniad hwnnw o dro olaf o dynnu. Oni fyddai'n braf pe mae 'na swyddogaeth o'r enw sgwâr sy'n gwneud yn union hynny? Mae'n dal i, ar ddiwedd y dydd, yn gwneud yr un mathemateg. Ond gadewch i ni haniaethol ymaith y syniad o gymryd un rhif wedi'i luosi â un arall, a dim ond rhoi enw iddo, fel sgwâr gwerth hwn. Ac, mewn geiriau eraill, yn C, gadewch i greu swyddogaeth Gelwir sgwâr sy'n gwneud yn union hynny. Mae'n mynd i gael ei alw sgwâr. Mae'n mynd i gymryd int. Ac annhymerus byddwn yn unig ei alw n, yn ddiofyn. Ond y gellid ei alw unrhyw beth yr ydym ei eisiau. A'r cyfan y mae'n mynd i yn ei wneud, yn llythrennol, yn dychwelyd y canlyniad amseroedd n n. Ond oherwydd ei fod yn dychwelyd rhywbeth, a oedd yn yw'r gair allweddol mewn porffor rydym wedi nas gwelwyd erioed o'r blaen, yr wyf, ar linell 11, Ni all ddweud yn ddi-rym y tro hwn. Void, yn yr enghraifft yr ydym yn jyst yn gweld yn hytrach enw print, yn unig yn golygu, gwneud rhywbeth. Ond peidiwch â llaw i mi rhywbeth yn ôl. Yn yr achos hwn, yr wyf yn dymuno i ddychwelyd n amseroedd n, neu beth bynnag hynny yw, y nifer hwnnw. Felly, ni allaf ddweud, hey, cyfrifiaduron, Dychwelaf dim byd, yn ddi-rym. Mae'n mynd i ddychwelyd, trwy natur, mae int. Ac felly dyna i gyd sy'n digwydd fan hyn. Mewnbwn i sgwâr yn mynd i fod yn int. Ac fel y gallwn ei ddefnyddio, mae'n rhaid iddo cael enw, N. Mae'n mynd i allbwn yn int lle nad oes angen enw. Gallwn adael i brif, neu bwy bynnag sy'n ddefnyddio i mi gofio gwerth hwn os byddwn yn eisiau gyda'i newidyn ei hun. Ac, unwaith eto, yr unig newydd gair allweddol yma yw Ffurflen Dreth. Ac Im 'jyst yn gwneud rhywfaint o mathemateg. Os Fi 'n sylweddol eisiau bod yn ddiangen, Gallwn ddweud cynnyrch int yn cael n amseroedd n. Ac yna gallwn i ddweud, yn dychwelyd cynnyrch. Ond, unwaith eto, at fy mhwynt cynharach hyn yn unig nad yw'n design-- da fel, pam cyflwyno enw, symbol, fel cynnyrch, dim ond er mwyn ei ddychwelyd ar unwaith? Mae'n ychydig glanach, ychydig yn dynnach, felly i siarad, dim ond i ddweud amserau dychwelyd n n, cael gwared ar y llinell hon yn gyfan gwbl. Ac mae'n ychydig yn llai cod i ddarllen, llai o gyfle i gamgymeriadau. A gadewch i ni weld os yw hyn yn mewn gwirionedd bellach yn gweithio. Nawr, dw i'n mynd i fynd ymlaen ac yn gwneud elw. Uh-oh, datganiad ymhlyg o swyddogaeth. Yr wyf yn gwneud camgymeriad hwn o'r blaen, nid oes llawer mawr. Gadewch i mi jyst deipio, neu amlygu a copïo, y swyddogaeth un union prototeip, neu lofnod, y swyddogaeth yma. Neu gallwn i symud y swyddogaeth cyfan. Ond mae hynny'n ychydig yn ddiog. Felly, ni fyddwn yn gwneud hynny. Yn awr, gadewch i mi wneud elw eto, dot dychwelyd slaes. x yn 2. x sgwâr yw 4. x yn 3. x sgwâr yw 9. Ac mae'r swyddogaeth yn ymddangos yn awr i fod yn gweithio. Felly beth yw'r gwahaniaeth yma? Mae gen i swyddogaeth sy'n cael ei alw sgwâr, yn yr achos hwn, yr wyf yn rhoi yn mewnbwn. Ac yr wyf yn mynd yn ôl allbwn. Ac eto, yn flaenorol, os Rwyf yn agor yr enghraifft arall o yn gynharach, a oedd yn Roedd enw prototype.c, Roedd gen printiwch yr enw, a oedd yn Dychwelodd ddi-rym, fel petai, Neu mae'n dychwelyd dim byd, ac yn syml wedi cael effaith ochr. Felly beth sy'n mynd ymlaen fan hyn? Wel, yn ystyried y swyddogaeth cael llinyn am ddim ond ennyd. Rydym wedi bod yn defnyddio'r swyddogaeth cael llinyn yn y modd canlynol. Rydym wedi cael swyddogaeth gael llinyn, fel cynnwys CS50.h, cynnwys safonol IO.h, int, prif, yn ddi-rym. Ac yna bob tro rwyf wedi Gelwir get llinyn hyd yn hyn, Yr wyf wedi dweud rhywbeth fel, llinyn s cael cael llinyn, gan fod Get string-- gadewch i ni yn galw hyn yn llinyn get get.c-- ei hun yn dychwelyd llinyn y gallaf wedyn defnyddio, ac yn dweud, helo, coma, cant s, slaes n, s. Felly, mae hyn yn yr un enghraifft, mewn gwirionedd, ein bod wedi gynharach. Felly ewch llinyn yn dychwelyd gwerth. Ond funud yn ôl, llinyn argraffu nid yw'n dychwelyd gwerth. Yn syml, mae gan sgîl-effaith. Felly mae hwn yn wahaniaeth sylfaenol. Rydym wedi gweld gwahanol mathau o swyddogaethau yn awr, mae rhai ohonynt wedi dychwelyd gwerthoedd, nid yw rhai ohonynt yn ei wneud. Felly efallai ei bod yn llinyn, neu int, neu fflôt. Neu efallai mai dim ond yn ddi-rym. Ac mae'r gwahaniaeth yn bod y swyddogaethau hyn sy'n cael data a dychwelyd gwerth mewn gwirionedd gan ddod â rhywbeth yn ôl at y bwrdd, felly, i siarad. Felly gadewch i ni fynd yn ei flaen ac edrych ar un set derfynol o enghreifftiau sy'n rhoi ymdeimlad, yn awr, o sut rydym yn allai, yn wir, haniaethol yn well, ac yn well, a gwell, neu fwy, a mwy, a mwy, er mwyn i ysgrifennu, yn y pen draw, cod gwell. Gadewch i ni fynd yn ei flaen, ac yn yr ysbryd o Scratch, wneud y canlynol. Gadewch i mi fynd yn ei flaen ac yn cynnwys CS50.h a IO.h. safonol Gadewch i mi fynd yn ei flaen ac yn rhoi fy hun yn int, prif, yn ddi-rym. A gadewch i mi fynd yn ei flaen, ffoniwch cough.c hwn. A gadewch i mi fynd yn ei flaen a dim ond fel Scratch, argraffu peswch / n. Ac yr wyf am wneud hyn dair gwaith. Felly dwi'n, wrth gwrs, dim ond yn mynd i gopïo a gludo dair gwaith. Rwyf nawr yn mynd i wneud peswch peswch slaes dot. Gadewch i ni roi ychydig mwy o ystafell fy hun yma, Mewnbynnu, peswch, peswch, peswch. Mae, yn amlwg, eisoes cyfle i wella. Rwyf wedi copïo a gludo ychydig o weithiau heddiw. Ond roedd hynny yn unig, felly wnes i ddim rhaid i deipio cynifer o gymeriadau. Rwy'n dal i newid beth llinellau hynny o god yn cael eu. Mae'r tair llinell yn union, sy'n teimlo'n ddiog ac yn wir yw, ac nid yn ôl pob tebyg y dull cywir. Felly, gyda pha cynhwysyn gallem wella'r cod hwn? Nid oes rhaid inni i gopïo a gludo cod. Ac, yn wir, unrhyw adeg rydych yn teimlo eich hun yn copïo a gludo, ac nid hyd yn oed yn newid cod, groes yn, mae ffordd well. Ac, yn wir, mae yna. Gadewch i mi fynd yn ei flaen ac yn gwneud i dolen, er nad yw'r gystrawen efallai dod yn naturiol eto. Gwnewch hyn dair gwaith, yn syml drwy wneud y canlynol-- ac yr wyf yn digwydd gwybod hyn rhag ymarfer. Ond mae gennym nifer o enghreifftiau yn awr. A byddwch yn gweld ar-lein mwy o gyfeiriadau o hyd. Mae hyn yn y gystrawen ar llinell 6, bod yn debyg iawn Scratch sy'n ailadrodd bloc, ailadrodd y dair gwaith canlynol. Mae'n ychydig yn hudolus am y tro. Ond bydd hyn yn cael mwy, ac yn fwy cyfarwydd. Ac mae'n mynd i ailadrodd llinell wyth dair gwaith, felly os byddaf yn ail-lunio gwneud peswch, dot slaes peswch, peswch, peswch, peswch. Mae'n dal i weithio yn yr un ffordd. Felly dyna i gyd iawn ac yn dda. Ond nid yw hynny'n dynnir iawn. Mae'n berffaith gywir. Ond mae'n teimlo fel yna Gallai fod yn gyfle, fel ym myd Scratch, i fath o gychwyn ychwanegu ychydig o semanteg yma fel y Dydw i ddim yn unig cael rhywfaint gyfer dolen, a swyddogaeth sy'n dweud peswch, neu nid peswch. Ti'n gwybod beth? Gadewch i mi geisio bod yn ychydig oerach na hynny, ac mewn gwirionedd yn ysgrifennu swyddogaeth sy'n Mae rhai sgîl-effeithiau, ei alw'n besychu. Ac mae'n cymryd unrhyw fewnbwn, ac yn dychwelyd unrhyw werth fel allbwn. Ond eich bod yn gwybod yr hyn y mae'n ei wneud? Mae'n gwneud this-- printf, dyfyniad unquote, peswch. Ac yn awr i fyny yma, dwi'n mynd i fynd yn ei flaen ac ar gyfer int, ff yn cael sero, fi llai na 3, fi yn ogystal a mwy. Rydw i'n mynd i beidio â gwneud printf, sef Gellir dadlau bod gweithredu ar lefel isel fanylder. Nid wyf yn poeni sut i beswch. Fi jyst eisiau defnyddio'r swyddogaeth peswch. Ac Im 'jyst yn mynd i alw peswch. Yn awr, yn sylwi ar y ddeuoliaeth. Pan fyddwch yn galw swyddogaeth, os nad ydych yn ei wneud eisiau rhoi iddo mewnbynnau, yn hollol iawn. Dim ond gwneud paren agored, yn agos paren, ac rydych yn ei wneud. Pan fyddwch yn diffinio swyddogaeth, neu datgan prototeip swyddogaeth, yn os ydych yn gwybod ymlaen llaw nad yw'n mynd i gymryd unrhyw ddadleuon, dweud yn ddi-rym mewn cromfachau rheini yno. Ac mae hynny'n gwneud yn siŵr bod chi Ni fydd yn ddamweiniol gamddefnyddio. Gadewch i mi fynd yn ei flaen ac yn gwneud peswch. Ac, wrth gwrs, yr wyf wedi gwneud camgymeriad. Dammit, mae bod datganiad ymhlyg. Ond mae hynny'n iawn. Mae'n ateb hawdd. Fi jyst angen y prototeip yn uwch i fyny yn fy ffeil nag Im 'mewn gwirionedd yn ei ddefnyddio. Felly nawr gadewch i mi wneud peswch eto, 'n glws. Yn awr, mae'n gweithio. Gwneud peswch, peswch, peswch, peswch. Felly efallai y byddwch yn meddwl ein bod mewn gwirionedd ychydig dros peirianneg broblem hon. Ac, yn wir, yr ydym. Nid yw hon yn dda ymgeisydd o raglen ar hyn o bryd ar gyfer refactoring, a gwneud yr hyn sy'n Gelwir dadelfeniad hierarchaidd, lle rydych yn cymryd, mae rhai cod, ac yna chi fath o ffactor pethau allan, er priodoli mwy o semanteg iddynt, ac ailddefnyddio yn y tymor hwy yn y pen draw. Ond mae'n bloc adeiladu tuag at rhaglenni mwy soffistigedig y byddwn yn dechrau ysgrifennu cyn bo hir fod yn caniatáu i ni gael yr eirfa â hwy i ysgrifennu gwell cod. Ac, yn wir, gadewch i ni weld os byddwn yn Ni all cyffredinoli hyn ymhellach. Mae'n ymddangos yn ychydig yn gloff fy mod i, prif, Mae angen i chi boeni am darn hwn am dolen, a galw peswch eto ac eto. Pam na allaf jyst dweud peswch, os gwelwch yn dda peswch dair gwaith? Mewn geiriau eraill, ni allaf pam jyst rhoi mewnbwn i peswch ac yn gwneud hyn? Pam na allaf ddweud, yn prif peswch dair gwaith. Ac yn awr, mae hyn yn fath o hudol. Mae'n ailadroddol iawn yma. Ac mae'n, yn wir, yn gam babi. Ond dim ond y gallu i ddweud am llinell wyth, peswch dair gwaith, 'i' jyst gymaint yn fwy darllenadwy. Ac, yn ogystal, nid oes rhaid i mi ei wybod neu ofal sut peswch yn cael ei weithredu. Ac, yn wir, yn ddiweddarach yn y tymor ac ar gyfer prosiectau terfynol, os byddwch yn mynd i'r afael prosiect gyda gyd-ddisgybl neu ddau cyd-ddisgyblion, byddwch yn sylweddoli eich bod yn mynd i rhaid i, neu eisiau, rhannwch y gwaith. Ac rydych yn mynd i eisiau i benderfynu ymlaen llaw, pwy sy'n mynd i wneud beth, ac y mae darnau? Ac ni fyddai'n braf os ydych chi, er enghraifft, fod yn gyfrifol am ysgrifennu prif, wneud. Ac yn eich roommate, neu eich partner yn fwy cyffredinol, yn gofalu am weithredu peswch. Ac mae rhaniad hwn, mae'r rhain yn waliau tynnu dŵr, neu haenau o tynnu os byddwch, yn super pwerus, oherwydd yn enwedig ar gyfer mwy o faint, mwy o raglenni a systemau cymhleth, mae'n caniatáu i bobl lluosog i adeiladu pethau at ei gilydd, ac yn y pen draw pwyth eu gwaith gyda'i gilydd yn y ffordd hon. Ond, wrth gwrs, rydym yn Mae angen i nawr atgyweiria peswch. Mae angen i ni ddweud wrth peswch hynny, hey, eich bod yn gwybod beth? Rydych yn mynd i angen i gymryd input-- felly nid ddi-rym, ond int ac yn awr. Gadewch i ni fynd yn ei flaen ac yn rhoi mewn peswch y int. ff yn cael sero. ff yn llai na faint o weithiau. Dywedais dair o'r blaen. Ond nid dyna beth rwyf eisiau. Wyf am peswch i fod yn gyffredinol i cefnogi unrhyw nifer o iteriadau. Felly, yn wir, mae'n n yr wyf am, beth bynnag y defnyddiwr yn dweud wrthyf. Yn awr, gallaf fynd yn ei flaen a dweud peswch print. Ac ni waeth pa rif y defnyddiwr yn mynd i mewn, Byddaf yn ailadrodd hynny lawer gwaith. Felly, ar ddiwedd y dydd, rhaglen yn union yr un fath. Ond sylwi holl bethau hyn Gallai hyd yn oed fod mewn ffeil arall. Yn wir, nid wyf yn gwybod am y foment pa mor printf cael ei weithredu. Nid wyf yn gwybod ar hyn o bryd sut gael llinyn, neu gael int, neu gael fflôt yn cael eu gweithredu. Ac nid wyf am eu gweld ar fy sgrin. Fel y mae, rwy'n dechrau i ganolbwyntio ar fy rhaglen, nid yw swyddogaethau hynny. Ac felly, yn wir, cyn gynted ag y byddwch yn dechrau ffactoreiddio cod fel hyn allan, gallem hyd yn oed symud peswch i ffeil ar wahân? Gallai rhywun arall roi ar waith. A'ch bod chi a'ch rhaglen yn dod yn y yn hardd iawn, ac yn ddarllenadwy iawn, Gellir dadlau, mewn gwirionedd pedwar rhaglen llinell iawn yno. Felly gadewch i ni fynd yn ei flaen yn awr ac yn gwneud un newid mwy. Sylwch fod fy prototeip Mae newid i fyny top. Felly, gadewch i mi atgyweiria bod felly Dydw i ddim yn cael yelled ar. Gwneud peswch, gadewch i mi redeg peswch unwaith mwy, dal i wneud yr un peth. Ond yn awr, yn sylwi gennym cynhwysyn ar gyfer un fersiwn derfynol. Ti'n gwybod beth? Dydw i ddim eisiau i ddim ond beswch, o reidrwydd. Rwyf am gael rhywbeth mwy cyffredinol. Felly, rydych yn gwybod beth? Rwyf am wneud hyn. Yr wyf am gael, yn debyg iawn Scratch wneud, bloc dweud, ond nid dim ond dweud rhywbeth rhyw nifer o weithiau. Yr wyf am ei ddweud llinyn penodol iawn. Ac, felly, nid wyf yn ei wneud am iddo dim ond dweud peswch. Rwyf am iddo ddweud beth bynnag llinyn yn cael ei basio i mewn. Felly sylwi, dwi wedi cyffredinoli hyn fel y nawr dyweder teimlo fel enw da ar gyfer hyn, fel Scratch, yn cymryd dwy ddadl, yn wahanol Scratch. Mae un yn llinyn. Mae un yn int. A gallwn eu newid. Fi jyst fath o fel y syniad o dweud y llinyn cyntaf, ac yna faint o weithiau yn ddiweddarach. Void yn golygu ei fod yn dal i nid yw'n dychwelyd unrhyw beth. Mae'r rhain yn ochr weledol yn unig effeithiau, fel gyda [? Jordan,?] sgîl-effaith ar lafar o gweiddi. Mae'n dal i wneud amserau rhywbeth n, 0 hyd at, ond nid yn gyfartal i n. Mae hyn yn golygu cyfanswm n amser. Ac yna dim ond argraffu beth bynnag y llinyn yw. Felly dwi wedi cyffredinol 'n sylweddol llinell hon o god. Felly nawr, sut ydw i'n rhoi ar waith y swyddogaeth peswch? Gallaf ei wneud peswch ddi-rym. A oes modd i mi gymryd yn y modd y sawl gwaith rydych am ei beswch. Ond eich bod yn gwybod beth? Bellach gallaf punt i'w ddweud. Gallaf alw ddweud yn y peswch gair, gan fynd heibio yn n. Ac os wyf am i weithredu hefyd, dim ond am hwyl, swyddogaeth tisian, Gallaf tisian rhyw nifer o weithiau. A gallaf gadw ailddefnyddio n, gan fod sylwi bod m yn y cyd-destun hwn neu gwmpas ond yn bodoli o fewn y swyddogaeth hon. Ac n yn y cyd-destun hwn yn unig bodoli o fewn y swyddogaeth hon yma. Felly byddwn yn dod yn ôl at y materion hyn o gwmpas. Ac yma, Im 'jyst yn mynd i ddweud, achoo, ac yna amseroedd n, hanner colon. Ac yn awr, yr wyf yn jyst angen i fenthyg swyddogaeth hyn llofnodion i fyny yma. Felly peswch yn gywir. tisian Void yn gywir yn awr. Ac yr wyf yn dal i fod dim ond angen ei ddweud. Felly, yr wyf i'n mynd i ddweud, dyweder llinyn s, int n, hanner colon. Felly dwi wedi gor-engineered y Heck allan o'r rhaglen hon. Ac nid yw hyn yn o reidrwydd yn golygu mae hyn yn beth ddylech ei wneud wrth ysgrifennu hyd yn oed y symlaf o raglenni. Cymerwch rhywbeth sy'n amlwg yn 'n sylweddol syml, mewn gwirionedd byr, ac ail-roi ar waith gan ddefnyddio ffordd gormod cod. Ond byddwch yn gweld, ac yn amser edrych yn ôl ar yr enghreifftiau hyn, a sylweddoli, oh, y rhai yw'r camau rydym yn cymryd i gyffredinoli mewn gwirionedd, i ffactor rhywbeth allan, tan ar ddiwedd y dydd fy cod yn mewn gwirionedd yn eithaf rhesymol. Oherwydd os wyf am peswch tri Amseroedd Yna tisian dair gwaith, Im 'yn syml yn mynd i ailgynnal hyn, rhaglen yn gwneud peswch, a rhedeg peswch. Ac yr wyf wedi tri pheswch a thri thisian. Ac felly mae hyn yn sylfaenol paradeim, os mynnwch, am sut y gallem fynd ati mewn gwirionedd yn gweithredu rhaglen. Ond gadewch i ni ond yn gweld yn awr yr hyn ydyw rydym wedi bod yn gwneud yr holl amser hwn, a hyn y mae rhai o'r darnau terfynol yn tu ôl i hyn gorchymyn syml. Ar ddiwedd y dydd, mae gennym bod yn defnyddio chlang fel ein compiler. Rydym wedi bod yn ysgrifennu ffynhonnell cod, trosi ei drwy chlang i mewn i cod peiriant. Ac rydym wedi bod yn defnyddio Gwneud yn unig i hwyluso ein keystrokes felly nad oes rhaid i ni gofio incantations hynny chlang ei hun. Ond beth yw Gwneud gwirionedd yn ei wneud? Ac, yn ei dro, beth yw Chlang mewn gwirionedd yn gwneud? Mae'n troi allan, er ein bod wedi symleiddio trafodaeth heddiw drwy ddweud, byddwch yn cymryd cod ffynhonnell, ei drosglwyddo fel mewnbwn i'r casglwr, sy'n rhoi i chi allbwn o beiriant cod, yn troi allan yno yn ychydig o gamau gwahanol y tu mewn yno. Ac yn llunio digwydd i fod ymbarél dymor ar gyfer criw cyfan o gamau. Ond gadewch i ni dim ond tynnu maes hon 'n sylweddol yn gyflym. Mae'n troi allan ein bod wedi bod yn gwneud mwy o bethau bob tro rwy'n cynnal rhaglen, neu bob tro rwy'n llunio rhaglen heddiw. Felly preprocessing yn cyfeirio at this-- unrhyw beth mewn rhaglen C, fel y byddwn yn gweld eto ac eto, sy'n dechrau gyda hyn symbol hash, neu symbol hashtag yma, yn golygu mae'n gyfarwyddeb Preprocessor. Mae hynny'n golygu, yn yr achos hwn, hey cyfrifiadur, wneud rhywbeth gyda ffeil hon cyn i chi lunio fy cod hun. Yn yr achos hwn, hash cynnwys yw, yn y bôn, ffordd C o ddweud, hey cyfrifiadur, ewch cael y cynnwys o CS50.h a bastio nhw yma. Hey cyfrifiadur, mynd yn cael y cynnwys IO.h safonol, lle bynnag sydd ar y 'n anawdd cathrena, gludwch yma. Felly, y pethau hynny ddigwydd cyntaf yn ystod preprocessing. A chlang yn gwneud hyn i gyd i ni. Ac mae'n ei wneud mor darn cyflym, nid ydych hyd yn oed yn ei wneud gweld pedwar peth ar wahân digwydd. Ond dyna y cam cyntaf o'r fath. Beth yn union fydd yn digwydd nesaf? Wel, y swyddog nesaf cam yn llunio. Ac mae'n troi allan y llunio rhaglen dechnegol yn golygu mynd o cod ffynhonnell, y pethau rydym wedi bod yn ysgrifennu heddiw, i rywbeth Gelwir cod cynulliad, rhywbeth sy'n edrych ychydig yn wahanol. Ac, yn wir, gallwn weld hyn yn go gyflym. Gadewch i mi mewn gwirionedd yn mynd i mewn i fy IDE. Gadewch i mi fynd yn ei flaen a hello.c agored, sy'n yw'r rhaglen gyntaf iawn gyda yr ydym yn Dechreuodd heddiw. A gadewch i mi fynd yn ei flaen ac yn rhedeg chlang yn ychydig yn wahanol, chlang-s, hello.c, sydd mewn gwirionedd yn mynd i rhoi ffeil hello.s arall mi. Ac mae'n debyg y byddwn yn byth unwaith eto yn gweld y math hwn o god. Os byddwch yn cymryd lefel is dosbarth systemau fel CS61, byddwch yn gweld llawer mwy o'r math hwn o god. Ond mae hyn yn iaith cynulliad. Mae hyn yn x86 iaith cynulliad bod y CPU sy'n gwaelodol CS50 IDE mewn gwirionedd yn deall. Ac cryptig fel y mae'n ei wneud edrych, mae'n rhywbeth y cyfrifiadur yn deall yn eithaf da. Is q, mae hwn yn amharu arno. Mae symudiadau. Mae wedi galw swyddogaethau yma, x oring, mudiad, rhywbeth atodol, pop, dychwelyd. Felly mae rhywfaint iawn cyfarwyddiadau lefel isel bod CPUs yn deall bod Yr wyf yn cyfeirio at gynharach. Dyna beth Intel tu mewn. Mae patrymau zeros a rhai sy'n map at y rhain wedi'u geirio'n arcanely, ond braidd-enwir yn dda, cyfarwyddiadau, felly, i siarad. Dyna beth sy'n digwydd pan chi lunio eich cod. Byddwch yn cael cynulliad iaith allan ohono, a oedd yn yn golygu bod y trydydd cam yw i ymgynnull y cod cynulliad i mewn i, yn y pen draw, peiriant zeros code-- a rhai, nid yw'r destun yr ydym yn jyst yn gweld eiliad yn ôl. Felly cyn-brosesu y mae hynny'n ei chael ac yn ei le, ac ychydig o bethau eraill. Llunio yn cymryd eich ffynhonnell cod o C, cod ffynhonnell ein bod yn ysgrifennu, i ymgynnull cod yr ydym newydd bwrw golwg ar. Cydosod yn cymryd y cynulliad cod i sero a rhai bod y CPU mewn gwirionedd bydd deall ar ddiwedd y dydd. A chysylltu yw'r cam olaf sy'n digwydd i us-- eto, mor gyflym nad ydym hyd yn oed yn ei wneud notice-- sy'n dweud, hey cyfrifiadur, cymryd yr holl y zeros a rhai sy'n deillio o lunio cod Dewi, ac mae ei brif swyddogaeth yn yr achos hwn. Ac hey cyfrifiadur, ewch cael pob un o'r zeros a rhai a ysgrifennodd y staff CS50 y tu mewn i'r llyfrgell CS50. Cymysgwch y rhai gyda Dewi. Ac hey cyfrifiadur, ewch cael yr holl sero a rhai bod rhywun arall yn ysgrifennu flynyddoedd yn ôl ar gyfer printf. Ac ychwanegu rhai i mewn i'r beth cyfan, er mwyn i ni i wedi got fy zeros a rhai, mae'r zeros a rhai staff CS50, a y zeros printf a rhai, ac unrhyw beth arall rydym yn ei ddefnyddio. Maent i gyd yn cael eu cyfuno ynghyd mewn un rhaglen o'r enw, yn yr achos hwn, helo. Felly o hyn ymlaen, byddwn yn unig ddefnyddio'r gair o gasglu. A byddwn yn cymryd yn ganiataol bod pan dywedwn, llunio eich rhaglen, mae'n golygu, hey wneud y cyn-prosesu, cydosod, a chysylltu. Ond mae mewn gwirionedd rhai pethau juicy digwydd yno o dan y cwfl. Ac yn enwedig os ydych cael chwilfrydig peth amser, gallwch ddechrau procio o gwmpas ar y lefel is hwn. Ond am nawr, yn sylweddoli bod ymhlith y siopau cludfwyd ar gyfer heddiw yn eithaf syml, y gan ddechrau o broses, o gael gyfforddus gyda rhywbeth fel byd helo. Yn wir, mae'r rhan fwyaf o'r hyn a wnaethom heddiw Ni fydd yn sicr yn suddo mewn super gyflym. A bydd yn cymryd peth amser, a rhywfaint o arfer. Ac groes yn, byddwch yn didoli o awyddus i daro eich bysellfwrdd neu gweiddi ar y sgrîn. Ac mae pob un mae hynny'n iawn. Er, efallai ceisiwch beidio â yn ei wneud yn y llyfrgell cymaint. Ac yn y pen draw, wnewch chi helpu yn cael ei gallu serch hynny, i ddechrau gweld patrymau mewn cod da eich bod wedi ysgrifennu ac yn gamgymeriadau eich bod wedi gwneud. Ac yn debyg iawn i'r broses o dod yn TF neu Awdurdod Cymwys yn debyg, byddwch yn dechrau i gael gwell a well yn gweld patrymau hynny, a dim ond ddatrys eich problemau eu hunain yn y pen draw. Yn y cyfamser, bydd digon ohonom i roi benthyg cefnogaeth i chi, ac yn mynd â chi drwy hyn. Ac yn y ysgrifennu-ups ar gyfer pob un o'r problemau byddwch yn cael eich tywys drwy pob un o'r gorchmynion fy mod yn sicr yn gwybod o llawer o ymarfer erbyn hyn, ond gallai fod wedi hedfan dros un ar ben am y tro. A dyna gwbl iawn. Ond, yn y pen draw, rydych chi'n mynd i ddechrau i weld patrymau yn ymddangos. Ac ar ôl i chi gael y gorffennol yr holl Manylion twp, fel cromfachau, a bresys cyrliog, a hanner colon, ac mae'r stwff, dweud y gwir, Nid yw hynny o gwbl ddeallusol ddiddorol. Ac nid yw'n amcan o cymryd unrhyw ddosbarth rhagarweiniol. Mae'n y syniadau sydd yn mynd i mater. Mae'n y dolenni, a'r amodau, a swyddogaethau, ac yn fwy grymus y tyniad, ac mae'r ffactoreiddio o god, ac mae'r dyluniad da, ac mae'r da arddull, ac yn y pen draw, y cywirdeb o eich cod, dyna yn y pen draw mynd i pwys mwyaf. Felly yr wythnos nesaf, byddwn yn cymryd y rhain syniadau a welsom yn gyntaf yn Scratch ac yn awr wedi cyfieithu i C. A byddwn yn dechrau i gyflwyno'r cyntaf y parthau byd go iawn cwrs. Byddwn yn canolbwyntio ar y byd o ddiogelwch, a cryptograffiaeth yn fwy penodol, y grefft o sgrialu gwybodaeth. Ac ymhlith y cyntaf problemau i chi eich hun Bydd cael i ysgrifennu y tu hwnt i chwarae gyda rhai o'r gystrawen a datrys rhai rhesymegol problemau, yn y pen draw cyn bo hir, yw i sgrialu mewn gwirionedd, neu amgryptio, ac yn y pen draw dadgryptio gwybodaeth. Ac mae popeth yr ydym wedi'i wneud heddiw, bydd yn weddol isel lefel, yn unig yn mynd i ganiatáu ni gymryd un, ac un, ac un cam yn fwy uchod tuag at ysgrifennu'r cod mwyaf diddorol hyd yma. Felly mwy am hynny yr wythnos nesaf. [VIDEO Playback] -Beth A allwch ddweud wrthyf am y tro diwethaf i chi weld ef? -Beth Allaf i ei ddweud, mewn gwirionedd? Yr wyf yn golygu, yr oedd fel unrhyw un arall ymarfer cyn-gynhyrchu, heblaw bod rhywbeth dywedodd ar yr union perwyl hwnnw aros gyda mi. -Mae Hyn oedd CS50. -bod 'Na pawb torri, gwaith gwych ar ymarfer. cinio -bod yn? -Yeah, Ydych chi a minnau yn gallu fachu brechdan mewn tipyn. Gadewch i mi ôl-drafod gyda David yn gyflym iawn. Dafydd? Dafydd? [DIWEDD Playback]