[CHWARAE CERDDORIAETH] SIARADWR: Pob hawl. Felly, gadewch i ni siarad am un arall peth sy'n fath o unigryw i C, sydd yn fathau o ddata a newidynnau. Pan fyddaf yn dweud unigryw i C, Fi 'n sylweddol Dim ond yn ei olygu yng nghyd-destun, os ydych wedi bod yn rhaglennydd am amser hir iawn, Mae'n debyg eich bod wedi peidio gweithio gyda mathau data os ydych chi wedi defnyddio modern ieithoedd rhaglennu. Ieithoedd modern fel PHP a JavaScript, y byddwn yn hefyd yn gweld ychydig yn nes ymlaen yn y cwrs, Nid oes rhaid i chi nodi mewn gwirionedd y math data o newidyn pan fyddwch yn ei ddefnyddio. Rydych yn unig yn datgan ei fod ac yn dechrau ei ddefnyddio. Os yw'n yn gyfanrif, mae'n yn gwybod ei fod yn gyfanrif. Os yw'n gymeriad, 'i' yn gwybod ei fod yn gymeriad. Os yw'n gair, mae'n gwybod ei fod yn llinyn, fel y'u gelwir. Ond yn C, sydd yn iaith hŷn, mae angen i nodi'r data Math o bob newidyn ein bod yn creu'r tro cyntaf ein bod yn defnyddio y newidyn. Felly C yn dod gyda rhai adeiledig yn fathau o ddata. A gadewch i ni gael gyfarwydd gyda rhai o'r rheiny. Ac yna ar ôl hynny byddwn hefyd yn siarad â ychydig bach am rai o'r mathau data ein bod wedi ysgrifennu i chi, fel y gallwch eu defnyddio yn CS50. Y cyntaf yw int. Y math data int ei ddefnyddio ar gyfer newidynnau a fydd yn storio gwerthoedd gyfanrif. Felly 1, 2, 3, negyddol 1, 2, 3, ac yn y blaen. Cyfanrifau, sy'n rhywbeth yr ydych Dylai gadw mewn cof ar gyfer y cwis, bob amser yn cymryd i fyny pedwar bytes o gof, sef 32 o ddarnau. Mae wyth did mewn beit. Felly, mae hyn yn golygu bod yr ystod o gwerthoedd y gall yn gyfanrif storio yn cael ei gyfyngu gan yr hyn y gall ffitio o fewn 32 darnau gwerth o wybodaeth. Yn awr gan ei fod yn troi allan, yr oedd yn hir penderfynwyd yn ôl y byddem yn gwahanu yr ystod o 32 o ddarnau i mewn i gyfanrifau negatif a cyfanrifau positif, bob hanner cael yr ystod. Felly, yr ystod o werthoedd ein bod yn cynrychioli gydag ystod cyfanrif o negyddol 2 at y pŵer 31ain i 2 i y pŵer 31ain minws 1, achosi i chi hefyd angen fan a'r lle am 0. Felly, yn y bôn hanner y gwerthoedd posibl gallwch ffitio mewn int yn negyddol, a hanner yn gadarnhaol. Ac yn fras yma, mae hyn yn ymwneud negyddol 2 biliwn i tua cadarnhaol 2000000000. Rhoi neu gymryd cwpl can miliwn. Felly dyna beth y gallwch ei ffitio mewn newidyn cyfanrif. Nawr mae gennym hefyd rywbeth Gelwir yn gyfanrif heb eu llofnodi. Nawr nid yw ints heb eu llofnodi yn math gwahanol o amrywiol. Yn hytrach, heb eu llofnodi yn hyn a elwir yn rhagbrofol. Mae'n addasu y data math o cyfanrif ychydig. Ac yn yr achos hwn, beth heb eu llofnodi yw-- ac gallwch hefyd defnyddio mathau data heb ei arwyddo eraill, Nid yw cyfanrifol yw'r unig un. Beth mae'n ei wneud yn effeithiol yn dyblau yr amrediad o werthoedd cadarnhaol y gall yn gyfanrif gymryd ar o draul mwyach caniatáu i chi gymryd ar werthoedd negatif. Felly os oes gennych rifau eich bod yn gwybod Bydd cael yn uwch na 2 biliwn ond yn llai na 4 biliwn, er example-- sydd 2 i'r 32eg power-- efallai y byddwch am ddefnyddio mae int heb eu llofnodi os ydych yn byth yn gwybod y bydd eich gwerth yn negyddol. Byddwch yn achlysurol gael a ddefnyddir ar gyfer newidynnau heb eu llofnodi yn CS50, a dyna pam yr wyf yn sôn amdano yma. Ond unwaith eto, yr ystod o werthoedd sy'n eich Gall gynrychioli gyda cyfanrif heb eu llofnodi fel t cyfanrif rheolaidd, yn 0 i 2 i'r pŵer 32eg minws 1, neu tua 0-4000000000. Felly, rydych wedi dyblu yn effeithiol y ystod cadarnhaol y gallwch ei ffitio, ond eich bod wedi rhoi'r gorau i gyd gwerthoedd negatif. Nawr wrth fynd heibio, heb eu llofnodi Nid yw'r unig rhagbrofol y gallem weld dros mathau data amrywiol. Mae yna hefyd bethau a elwir yn byr a hir a Etholaeth. Const byddwn yn gweld ychydig ychydig yn ddiweddarach yn y cwrs. Byr a hir, rydym nid yn ôl pob tebyg fydd. Ond dim ond yn gwybod bod yna yn rhagbrofol eraill. Nid Unsigned yw'r unig un. Ond dyna'r unig un yr ydym ni'n mynd i siarad am ar hyn o bryd. Felly, i gyd yn iawn. Felly rydym wedi cynnwys cyfanrifau. Beth sydd nesaf? Chars. Felly chars yn cael eu defnyddio ar gyfer newidynnau a fydd yn storio cymeriadau unigol. Torgoch yn fyr ar gyfer cymeriad. Ac weithiau efallai y byddwch yn clywed pobl yn ynganu fel car. Felly cymeriadau bob amser yn cymryd i fyny un beit o gof, sydd ychydig 8 did. Felly, mae hyn yn golygu y gallant ond cyd-fynd Gwerthoedd yn yr ystod o negyddol 2 i'r seithfed pŵer, neu'n negyddol 128, i 2 i'r pŵer 7fed minws 1, neu 127. Diolch i ASCII, roedd yn maith yn ôl penderfynodd ffordd i fapio rhifau positif y rhai o 0-127 i wahanol gymeriadau bod pob un yn bodoli ar ein bysellfwrdd. Felly, fel y byddwn yn gweld yn nes ymlaen yn y cwrs, ac wnewch chi helpu yn ôl pob tebyg yn dod i gofio ar ryw bwynt, cyfalaf A, am example-- y brifddinas cymeriad A-- mapiau i'r rhif 65. A'r rheswm am hynny yw oherwydd dyna beth sydd ei fod yn cael eu neilltuo gan y safon ASCII. Llythrennau bach A yw 97. Mae cymeriad 0 ar gyfer pan fyddwch yn mewn gwirionedd deipio cymeriad, nid cynrychioli nifer sero, yw 48. Byddwch yn dysgu cwpl o'r rhain wrth i chi fynd. A byddwch yn sicr yn dod i angen nhw ychydig yn ddiweddarach yn CS50. Y math data mawr nesaf yn arnofio rhifau pwynt. Felly rhifau pwynt arnawf yn a elwir hefyd yn rhifau real. Maent yn y bôn rhifau sydd cael pwynt degol ynddynt. Fel y bo'r angen gwerthoedd pwynt fel gyfanrifau hefyd cynnwys o fewn 4 bytes o gof. Nawr does dim siart yma. Does dim llinell rif, oherwydd bod ddisgrifio'r amrywiaeth o fflôt Nid yw union glir neu 'n athrylithgar. Digon yw dweud i chi rhaid i 32 o ddarnau i weithio gyda nhw. Ac os oes gennych rif fel pi, sydd â yn gyfanrif rhan 3, ac mae fel y bo'r angen pwynt rhannol, neu ran degol 0.14159, ac yn y blaen, mae angen i chi fod yn gallu cynrychioli pob un iddo-- y rhan cyfanrif a'r rhan degol. Felly beth ydych chi'n meddwl y gallai hynny ei olygu? Un peth yw, os y degol yn rhan mynd yn hirach ac yn hirach, os oes gen i fawr iawn rhan cyfanrif, nid wyf yn gallai yn gallu bod mor fanwl gywir gyda'r rhan degol. A dyna 'n sylweddol y cyfyngiad o fflôt. Fflotiau gennych broblem manylder. Dim ond 32 o ddarnau i gweithio gyda nhw, er mwyn i ni dim ond fod mor fanwl gywir â ein rhan ni degol. Ni allwn o reidrwydd gael degol rhan union i 100 neu 200 ddigid, gan mai dim ond 32 darnau i weithio gyda. Felly dyna cyfyngiad o fflôt. Nawr yn ffodus mae arall fath o ddata o'r enw dwbl, a oedd braidd delio â'r broblem hon. Dyblau, fel fflotiau, hefyd yn cael eu defnyddio i storio rhifau real, neu pwynt arnawf gwerthoedd. Y gwahaniaeth yw bod dyblau yn cael eu cywirdeb dwbl. Gallant ffitio 64 darnau o data, neu wyth bytes. Beth yw ystyr hynny? Wel, mae'n golygu y gallwn ni fod yn llawer mwy manwl gywir gyda'r pwynt degol. Yn hytrach na chael pi i saith lleoedd efallai, gyda fflôt, gallwn efallai rhaid iddo 30 o leoedd. Os yw hynny'n bwysig, efallai y byddwch am i ddefnyddio ddwbl yn lle fflôt. Yn syml, os ydych chi'n gweithio ar unrhyw beth lle cael lle degol hir iawn ac mae llawer o gywirdeb yn bwysig, mae'n debyg y byddwch eisiau defnyddio overfloat dwbl. Nawr am y rhan fwyaf o'ch gwaith mewn CS50, dylai fflôt yn ddigon. Ond yn gwybod bod yn dyblu yn bodoli fel ffordd i braidd yn delio â'r trachywiredd broblem drwy roi i chi ychwanegol 32 darnau i weithio gyda gyfer eich rhifau. Yn awr nid yw hyn yn fath data. Mae hwn yn fath. Ac fe'i gelwir yn ddi-rym. A dwi'n siarad am y peth yma oherwydd ein bod i wedi yn ôl pob tebyg weld ychydig o weithiau sydd eisoes yn CS50. Ac efallai y byddwch yn meddwl beth mae'n ei olygu. Felly ddi-rym yn fath. Mae'n yn bodoli. Ond nid yn fath data. Ni allwn greu amrywiol o fath ddi-rym ac yn rhoi gwerth iddo. Ond swyddogaethau, er enghraifft, Gall fod â math dychwelyd yn ddi-rym. Yn syml, os ydych yn gweld swyddogaeth sydd â math dychwelyd yn ddi-rym, mae'n golygu nad yw'n dychwelyd gwerth. Allwch chi feddwl am comin swyddogaeth yr ydym wedi defnyddio hyd yn hyn yn CS50 nad yw'n dychwelyd gwerth? Printf yn un. Nid printf yn gwneud mewn gwirionedd dychwelyd unrhyw beth i chi. Mae'n printiau rhywbeth i'r sgrinio, ac yn y bôn sgîl-effaith o'r hyn y printf wneud. Ond nid yw'n rhoi gwerth yn ôl i chi. Nid ydych yn dal y canlyniad a storio mewn rhyw newidyn i'w ddefnyddio yn nes ymlaen. 'I jyst yn printiau rhywbeth i y sgrin ac rydych yn ei wneud. Felly, rydym yn dweud bod printf yn swyddogaeth ddi-rym. Mae'n dychwelyd dim byd. Mae'r rhestr perimedr Gall swyddogaeth hefyd fod yn ddi-rym. A ydych hefyd wedi gweld bod gryn dipyn yn CS50 hefyd. Prif ddi-rym Int. A yw hynny'n ffonio cloch? Yn y bôn yr hyn y mae hynny'n ei olygu yw bod Nid yw prif yn cymryd unrhyw baramedrau. Does dim dadl y cael eu pasio i mewn i brif. Nawr yn nes ymlaen byddwn yn gweld bod yna ffordd i basio dadleuon mewn i brif, ond hyd yn hyn beth rydym wedi gweld yn brif ddi-rym int. Prif nid yn unig yn cymryd unrhyw ddadleuon. Ac felly rydym yn nodi bod drwy ddweud ddi-rym. Rydym yn dim ond bod yn iawn eglur am y ffaith nad yw'n cymryd unrhyw ddadleuon. Felly am y tro, digon yw yn dweud bod yn ddi-rym yn y bôn Dylai jyst yn gwasanaethu fel placeholder i chi fel meddwl am fel dim byd. Nid yw'n wir yn gwneud unrhyw beth. Does dim gwerth dychwelyd yma. Does dim baramedrau yma. Mae'n ddi-rym. Mae'n ychydig yn fwy cymhleth na hynny. Ond dylai hyn yn ddigonol ar gyfer y rhan gorau o'r cwrs. A gobeithio erbyn hyn mae gennych ychydig ychydig mwy o syniad o beth ddi-rym yn. Felly dyna'r pum math wnewch chi helpu yn dod ar draws sy'n cael eu hadeiladu i mewn i C. Ond yn CS50 mae gennym hefyd lyfrgell. CS50.h, y gallwch gynnwys. Ac a fydd yn rhoi i chi gyda dau fath ychwanegol y byddwch yn ôl pob tebyg y byddwch yn gallu i'w ddefnyddio ar eich aseiniadau, neu dim ond yn gweithio yn gyffredinol rhaglennu. Y cyntaf o'r rhain yw bool. Felly y math data Boole, bool, yn cael ei ddefnyddio ar gyfer newidynnau a fydd yn storio gwerth Boole. Os ydych chi wedi clywed erioed y tymor hwn o'r blaen, i chi Efallai gwybod bod Boolean gwerth yn gallu yn unig cynnal dau werth ar wahân gwahanol. Gwir a gau. Yn awr mae hyn yn ymddangos yn eithaf sylfaenol, dde? Mae'n fath o syndod bod hyn nad yw'n bodoli yn C gan ei fod yn adeiledig yn. Ac mewn llawer o ieithoedd modern, wrth gwrs, Booleans yn fath data diofyn safonol. Ond yn C, maen nhw'n mewn gwirionedd yn peidio. Ond rydym wedi creu hynny ar eich rhan. Felly, os ydych chi erioed angen creu newidyn y mae ei fath yn bool, dim ond gofalwch eich bod yn #include CS50.h ar ddechrau eich rhaglen, a byddwch yn gallu creu newidynnau o'r math bool. Os byddwch yn anghofio i #include CS50.h, a byddwch yn dechrau defnyddio newidynnau Boole-math, efallai y byddwch yn dod ar draws rhai problemau pan fyddwch yn llunio eich rhaglen. Felly, dim ond fod yn wyliadwrus ar gyfer hynny. Ac efallai y gallwch chi jyst osod y problemau trwy bunt gan gynnwys CS50.h. Y math data arall o bwys i ni darparu ar eich cyfer yn y llyfrgell CS50 yn llinyn. Felly beth yw llinyn? Llinynnau yn wir yn unig eiriau. Maent yn gasgliadau o gymeriadau. Maent yn eiriau. Maen nhw'n brawddegau. Maent yn baragraffau. A allai fod yn llyfrau cyfan, hyd yn oed. Byr iawn i hir iawn cyfres o gymeriadau. Os oes angen i ddefnyddio llinynnau, er enghraifft, i storio gair, dim ond gofalwch eich bod yn cynnwys CS50.h ar ddechrau eich rhaglen fel y gallwch ddefnyddio y math llinyn. Ac yna gallwch greu newidynnau y mae ei fath o ddata yw'r llinyn. Nawr yn nes ymlaen yn y cwrs, byddwn hefyd yn gweld bod hynny'n nid oedd y stori gyfan, naill ai. Byddwn yn dod ar draws pethau Gelwir strwythurau, sy'n eich galluogi i grŵp hyn a all fod cyfanrif a llinyn yn un uned. A gallwn ddefnyddio hynny i ryw ddiben, a allai dod yn ddefnyddiol yn nes ymlaen yn y cwrs. A byddwn yn hefyd yn dysgu am fathau diffiniedig, sy'n eich galluogi i greu eich fathau o ddata eich hun. Nid oes angen inni boeni am hynny am y tro. Ond dim ond yn gwybod bod hynny'n rhywbeth ar y gorwel, fod yna llawer mwy i gyd yma Math o beth nag yr oeddwn i'n dweud 'ch jyst yn awr. Felly nawr ein bod wedi dysgu ychydig bach am y data sylfaenol fathau a mathau data CS50, gadewch i ni siarad am sut i weithio gyda newidynnau ac yn creu eu defnyddio rhain fathau o ddata yn ein rhaglenni. Os ydych chi am greu newidyn, y cyfan sydd angen i chi ei wneud yw dau beth. Yn gyntaf, mae angen i chi roi cynnig math. Yr ail beth sydd ei angen arnoch ei wneud yw rhoi enw iddo. Unwaith y byddwch wedi gwneud hynny ac yn taro yn hanner colon ar ddiwedd y llinell, eich bod wedi creu newidyn. Felly dyma ddwy enghraifft. Rhif int; Llythyr char ;. Yr hyn yr wyf wedi ei wneud yma? Rydw i wedi creu dau newidyn. Mae'r cyntaf, y newidyn yn enw i yw rhif. A rhif yn gallu dal cyfanrif deipio gwerthoedd, oherwydd bod ei fath yn int. Llythyr yn amrywio arall gallu dal cymeriadau oherwydd bod ei fath ddata yn torgoch. Pretty syml, dde? Os byddwch yn cael eich hun mewn sefyllfa lle angen i chi greu lluosog newidynnau o'r un math, Dim ond angen i chi nodi yr enw math unwaith. Yna, dim ond restru cymaint o newidynnau o'r math hwnnw ag sydd ei angen arnoch. Felly, gallwn i, er enghraifft, dyma yn y drydedd linell o god, dweud uchder int ;, llinell newydd. Int lled ;. A fyddai'n gweithio hefyd. Byddwn yn dal i gael dau newidyn a elwir yn uchder a lled, pob un ohonynt yn gyfanrif. Ond dw i'n cael, pethau i'w C cystrawen, atgyfnerthu ei mewn llinell sengl. Int uchder, lled; Mae yr un peth. Rydw i wedi creu dau newidyn, un o'r enw uchder un o'r enw led, y ddau ohonynt yn gallu daliad Gwerthoedd math cyfanrif. Yn yr un modd yma, gallaf greu tri fel y bo'r angen gwerthoedd pwynt ar unwaith. Gallaf efallai greu newidyn Gelwir ail isradd 2-- sydd yn ôl pob tebyg fydd yn y pen draw dal y point-- fel y bo'r angen fod cynrychiolaeth y sgwâr gwraidd 2-- ail isradd 3, a pi. Gallwn fod wedi gwneud hyn ar dair llinell ar wahân. Float, ail isradd 2; Arnofio ail isradd 3; arnofio pi; a fyddai'n gweithio hefyd. Ond unwaith eto, gallaf jyst atgyfnerthu mae hyn yn un llinell o god. Gwneud pethau ychydig byrrach, nid fel clunky. Bellach yn gyffredinol, mae'n dylunio da i ddim ond yn datgan newidyn pan fyddwch ei angen. A byddwn yn siarad ychydig ychydig mwy am hynny yn ddiweddarach yn y cwrs pan fyddwn yn trafod cwmpas. Felly nid oes angen i reidrwydd creu eich holl newidynnau ar ddechrau'r rhaglen, a gallai rhai pobl wedi gwneud y gorffennol, neu yn sicr yn gyffredin iawn arferion codio flynyddoedd lawer yn ôl wrth weithio gyda C. Efallai byddwch yn unig am greu hawl amrywiol pan bydd ei angen arnoch. Iawn. Felly, rydym wedi creu newidynnau. Sut rydym yn eu defnyddio? Ar ôl i ni ddatgan amrywiol, nid oes angen i ni i nodi'r math data o'r newidyn anymore. Yn wir, os ydych yn gwneud hynny, efallai y byddwch yn y pen draw gyda rhai canlyniadau 'n annaearol y byddwn yn fath o sglein dros am y tro. Ond digon yw dweud, pethau rhyfedd yn mynd i ddechrau yn digwydd os byddwch yn anfwriadol ail-ddatgan newidynnau gyda'r un enw drosodd a throsodd. Felly, yma rwyf wedi pedair llinell o god. Ac mae gen i un neu ddau o sylwadau yno yn unig sy'n dangos beth sy'n digwydd ar pob llinell yn unig i helpu cewch eich lleoli yn yr hyn sy'n digwydd. Rhif Felly int ;. Rydych yn gweld bod o'r blaen. Dyna datganiad amrywiol. Rwyf bellach wedi creu newidyn Gelwir rhif dyna gallu cynnal gwerthoedd cyfanrif-fath. Rwyf wedi datgan ei. Mae'r llinell nesaf i ddim yn aseinio mae gwerth at rif. Rhif hafal 17. Beth sy'n digwydd yno? Dw i'n rhoi'r rhif 17 tu mewn y newidyn. Felly os byddaf byth wedyn argraffu beth cynnwys y rhif yn nes ymlaen, byddant yn dweud wrthyf ei fod yn 17. Felly dwi wedi datgan newidyn, ac yna rwyf wedi neilltuo iddo. Gallwn ailadrodd y broses eto gyda llythyr torgoch ;. Dyna datganiad. Llythyr yn dychwelyd cyfalaf H. Dyna aseiniad. Pretty syml, hefyd. Nawr efallai y broses hon yn ymddangos yn fath o wirion. Pam ydym ni'n gwneud hyn mewn dwy linell o god? A oes ffordd well i wneud hynny? Yn wir, mae yna. Weithiau, efallai y byddwch yn gweld hyn a elwir yn initialization. Mae'n pan fyddwch yn datgan newidyn a rhowch werth ar yr un pryd. Mae hyn mewn gwirionedd yn eithaf beth cyffredin i wneud. Pan fyddwch yn creu newidyn, byddwch fel arfer yn am iddo gael rhywfaint o werth sylfaenol. Hyd yn oed os yw'n 0 neu rywbeth. Rydych yn unig i chi roi cynnig gwerth. Gallwch ymgychwyn newidyn. Int Rhif hafal 17 yr un fath ag y ddwy linell gyntaf o god i fyny uchod. Llythyr Torgoch hafal h yn yr un fath â'r llinellau trydydd a'r pedwerydd o'r cod uchod. Y cludfwyd mwyaf pwysig yma pan fyddwn ni'n datgan ac aseinio newidynnau yn ôl rydym wedi Datganodd ei fod, rhybudd Dydw i ddim yn defnyddio'r math data eto. Dydw i ddim yn dweud rhif int hafal 17 ar yr ail linell o god, er enghraifft. Im 'jyst yn dweud rhif yn dychwelyd 17. Unwaith eto, ail-ddatgan newidyn ar ôl ydych eisoes wedi datgan gall arwain i ryw canlyniad rhyfedd. Felly, dim ond byddwch yn ofalus o hynny. Rwy'n Doug Lloyd. Ac mae hyn yn CS50.