[MIZIK jwe] Oratè: Tout dwat. Se konsa, kite nan pale sou yon lòt bagay ki nan kalite inik nan C, ki se kalite done ak varyab. Lè m 'di inik nan C, Mwen vrèman sèlman vle di nan yon kontèks, si ou te gen yon pwogramè pou yon tan vrèman long, ou te pwobableman pa te travay ak kalite done si ou te itilize modèn pwogram lang. Lang modèn yo tankou PHP ak JavaScript, ki nou pral wè yon ti kras tou pita sou nan kou a, ou pa gen aktyèlman ou presize kalite a done nan yon varyab lè ou sèvi ak li. Ou jis deklare li epi yo kòmanse lè l sèvi avèk li. Si li nan yon nonb antye relatif, li konnen li nan yon nonb antye relatif. Si li nan yon karaktè, li nan konnen li nan yon karaktè. Si li nan yon mo, li konnen li nan yon fisèl, sa yo rele. Men, nan C, ki se yon ki pi gran lang, nou bezwen ou presize done yo di ki kalite chak varyab ke nou kreye premye fwa ke nou itilize ki varyab. Se konsa, C vini ak kèk bati-an kalite done. Li kite yo jwenn yo konnen yo ak kèk nan sa yo. Lè sa a, apre sa nou Apre sa, ap tou pale yon ti kras sou kèk nan ki kalite done ke nou te ekri pou ou, konsa ou ka sèvi ak yo nan CS50. Premye a se int. Se kalite a done int itilize pou varyab ki pral magazen valè nonb antye relatif. Se konsa, 1, 2, 3, negatif 1, 2, 3, ak sou sa. Nonm antye relatif, ki se yon bagay ou ta dwe kenbe nan tèt ou pou egzamen an, toujou pran moute kat bytes nan memwa, ki se 32 miyèt moso. Gen uit Bits nan yon multiple. Se konsa, sa vle di ke seri a nan valè ki yon nonb antye relatif ka magazen sa sèlman pa sa ki ka anfòm nan 32 Bits yon valè de enfòmasyon. Koulye a, kòm li vire soti, li te sa pibliye depi lontan deside ke nou ta fann moute ki ran de 32 Bits nan nonm antye relatif negatif ak nonm antye relatif pozitif, chak mwatye ap resevwa nan seri a. Se konsa, ranje a nan valè ke nou reprezante ak yon seri nonb antye relatif soti nan negatif 2 sou pouvwa a 31 nan 2 pouvwa a 31 mwens 1, lakòz ou ap bezwen tou yon plas pou 0. Se konsa, fondamantalman mwatye nan valè yo posib ou ka anfòm nan yon int se negatif, ak mwatye yo se pozitif. Apre sa, apeprè isit la, sa a se sou negatif 2 milya dola a sou pozitif 2 milya dola. Bay oswa pran yon koup san milyon dola. Se konsa, sa a, se sa ou ka anfòm nan yon nonb antye relatif varyab. Koulye a, nou menm tou nou gen yon bagay rele yon nonb antye relatif siye. Koulye a, ints siye se pa yon kalite apa nan varyab. Olye de sa, siye se sa k ap rele yon kalifye. Li modifye done yo di ki kalite nonb antye relatif yon ti kras. Ak nan ka sa a, ki sa siye means-- epi ou kapab tou itilize siye kalite done ak lòt, nonb antye relatif nan pa gen yon sèl la sèlman. Ki sa ki li efektivman fè se double seri a pozitif nan valè ki yon nonb antye relatif ka pran sou nan depans lan nan sa ki pèmèt pa gen okenn ankò ou pran sou valè negatif. Se konsa, si ou gen nimewo ke ou konnen pral jwenn pi wo pase 2 milya dola men mwens pase 4 milya dola, pou example-- ki se 2 a 32nd nan power-- ou ta ka vle sèvi ak yon int siye si ou konnen valè ou pa janm yo pral negatif. Ou ap detanzantan gen itilize pou siye varyab nan CS50, ki se poukisa mwen mansyone li isit la. Men, ankò, seri a nan valè ke ou ka reprezante ak yon nonb antye relatif siye tankou yo t nonb antye relatif regilye, yo se 0 a 2 sou pouvwa a 32nd mwens 1, oswa apeprè 0 a 4 milya de dola. Se konsa, ou te efektivman double nan seri pozitif ke ou ka anfòm, men ou te bay moute tout valè yo negatif. Koulye a, kòm yon sou kote, siye se pa kalifye nan sèlman ke nou ta ka wè pou kalite done varyab. Genyen tou bagay rele kout ak long ak konstitisyon. Konstitisyon nou pral wè yon ti kras ti jan pita nan kou a. Kout ak long, nou pwobableman pa pral. Men, jis konnen ke gen lòt kalifikasyon. Siye se pa yon sèl la sèlman. Men, li la yon sèl la sèlman nou ap pwal pale osijè kounye a. Se konsa, tout dwa. Se konsa, nou te kouvri nonm antye relatif. Ki sa ki nan pwochen? Charaktèr. Se konsa, charaktèr yo te itilize pou varyab ki pral magazen karaktè sèl. Char se kout pou karaktè. Epi pafwa ou ta ka tande moun ki fè konnen li kòm machin. Se konsa, karaktè toujou pran moute yon sèl multiple nan memwa, ki se jis 8 Bits. Se konsa, sa vle di ke yo kapab sèlman anfòm valè nan a ranje negatif 2 setyèm pouvwa a, oswa negatif 128, a 2 sou pouvwa a 7th mwens 1, oswa 127. Mèsi a ASCII, li te sa pibliye depi lontan deside yon fason nan kat jeyografik moun ki nimewo pozitif soti nan 0 a 127 nan karaktè divès kalite Tout moun nan egziste sou klavye nou an. Se konsa, kòm nou pral wè pita sou nan kou a, epi ou pral pwobableman vini nan memorize nan kèk pwen, kapital A, pou example-- kapital la N. A-- kat ak kantite 65. Ak rezon an pou sa a se paske se sa ki li nan la te plase nan estanda a ASCII. Miniskil A se 97. Karaktè 0 pou lè ou aktyèlman tape pèsonaj la, pa reprezante nimewo a zewo, se 48. Ou pral aprann yon koup nan sa yo jan ou ale. Men, ou pral sètènman vini nan bezwen yo yon ti jan pita nan CS50. Pwochen pi gwo kalite nan done se k ap flote nimewo pwen. Se konsa, nimewo k ap flote pwen yo ke yo rele tou nimewo reyèl. Yo ap fondamantalman nimewo ki gen yon pwen desimal nan yo. K ap flote valè pwen tankou nonm antye relatif yo tou genyen nan 4 bytes nan memwa. Koulye a, gen nan pa gen tablo isit la. Gen nan pa gen liy nimewo, paske dekri seri a nan yon flote se pa egzakteman klè oswa entwisyon. Ase li yo di ou gen 32 Bits yo travay avèk. Men, si ou gen yon nimewo tankou pi, ki te gen yon pati nonb antye relatif 3, ak yon k ap flote pwen pati, oswa yon pati desimal 0,14159, ak sou sa, ou bezwen yo dwe kapab reprezante tout nan l-- pati nan nonb antye relatif ak pati nan desimal. Se konsa, ki sa ou panse ki ta ka vle di? Youn nan bagay se ke si desimal a pati vin pi long ak pi long, si mwen gen yon gwo anpil nonb antye relatif pati, m 'pa kapab yo dwe kòm egzak ak pati nan desimal. Epi sa a, reyèlman nan limitasyon nan yon flote. Flote gen yon pwoblèm presizyon. Nou sèlman gen 32 Bits travay avèk, se konsa nou ka sèlman fèt konsa egzak ak pati desimal nou an. Nou pa ka nesesèman gen yon desimal pati egzak nan 100 oswa 200 chif, paske nou sèlman gen 32 Bits yo travay avèk. Se konsa, sa a, se yon limitasyon nan yon flote. Koulye a, erezman gen nan yon lòt kalite done yo rele doub, ki yon ti jan kontra avèk pwoblèm sa a. Double, tankou flote, yo tou itilize yo magazen nimewo reyèl, oswa k ap flote pwen valè. Diferans lan se ke double yo doub presizyon. Yo ka anfòm 64 Bits nan done, oswa uit bytes. Ki sa sa vle di? Oke, sa vle di nou ka gen yon anpil plis egzak ak pwen an desimal. Olye pou yo gen pi a sèt kote petèt, ak yon flote, nou ka petèt genyen li nan 30 kote. Si sa a, se enpòtan, ou ta ka vle yo sèvi ak yon doub olye de yon flote. Fondamantalman, si w ap ap travay sou anyen kote li te gen yon reyèlman long plas desimal ak yon anpil nan presizyon enpòtan, pwobableman ou vle sèvi ak yon overfloat doub. Koulye a, pou pi fò nan travay ou a CS50, yon flote ta dwe sifi. Men, konnen ke double egziste kòm yon fason yo yon ti jan fè fas ak presizyon an pwoblèm pa ban nou yon siplemantè 32 Bits yo travay avèk pou chif ou yo. Koulye a, sa a se pa yon kalite done. Sa a se yon kalite. Ak sa yo rele anile. Apre sa, mwen ap pale de li isit la paske nou te pwobableman wè l 'yon fwa kèk deja nan CS50. Epi ou ka mande ki sa li la tout bagay sou. Se konsa, anile se yon kalite. Li egziste. Men se pa yon kalite done. Nou pa kapab kreye yon varyab nan kalite anile epi bay yon valè nan li. Men, fonksyon, pou egzanp, ka gen yon kalite retounen anile. Fondamantalman, si ou wè yon fonksyon ki gen yon kalite retounen anile, sa vle di li pa retounen yon valè. Èske ou ka panse a yon komen fonksyon ke nou te itilize byen lwen tèlman nan CS50 ki pa retounen yon valè? Printf se youn. Printf fè sa ki pa aktyèlman retounen anyen nan ou. Li simagri yon bagay yo nan ekran, epi li fondamantalman yon efè segondè nan sa ki printf fè. Men, li pa ba ou yon valè tounen. Ou pa pran rezilta a ak magazen li nan kèk varyab yo sèvi ak li pita sou. Li jis simagri yon bagay yo ekran an ak w ap fè. Se konsa, nou di ke printf se yon fonksyon anile. Li retounen pa gen anyen. Lis la perimèt nan yon fonksyon kapab tou gen pou anile. Apre sa, ou te tou wè ki byen yon ti jan nan CS50 tou. Int anile prensipal la. Èske sa sonnen yon klòch? Fondamantalman ki sa sa vle di se ke prensipal pa pran okenn paramèt. Gen nan pa gen agiman ki debarase pase nan prensipal la. Koulye a, pita sou nou pral wè ki di ke gen yon fason yo pase agiman an prensipal yo, men byen lwen tèlman sa nou te wè se int anile prensipal la. Main jis pa pran okenn agiman. Se konsa, nou presize ke lè li di anile. Nou ap jis ke yo te trè eksplisit sou lefèt ke li pa pran okenn agiman. Se konsa, pou kounye a, sufi li vle di ke anile fondamantalman ta dwe jis yon kontneur sèvi kòm pou ou kòm panse sou kòm pa gen anyen. Li nan pa reyèlman fè anyen. Gen nan pa gen valè retounen isit la. Gen nan pa gen paramèt isit la. Li nan anile. Li se yon ti kras pi konplike pase sa. Men, sa a ta dwe sifi pou pati nan pi bon nan kou a. Ak èspere ke kounye a ou gen yon ti kras ti jan pi plis nan yon konsèp nan sa ki anile se. Se konsa, sa yo se senk kalite yo ou pral rankontre ke yo bati-an nan C. Men, nan CS50 nou gen tou yon bibliyotèk. CS50.h, ki ou ka gen ladan yo. Epi ki ap ofri ou ak de kalite adisyonèl ke ou ap pwobableman kapab yo sèvi ak sou devwa ou, oswa jis k ap travay jeneralman pwogramasyon. Premye a nan sa yo se bouleen. Se konsa, kalite nan done Boolean, bouleen, ki itilize pou varyab ki pral magazen se yon valè Boolean. Si ou te janm tande tèm sa a anvan, ou ta ka konnen ke yon Boolean valè ki kapab sèlman kenbe de diferan valè diferan. Vrè ak fo. Koulye a, sa a sanble bèl fondamantal, dwa? Li nan kalite yon sipriz ke sa a pa egziste nan C kòm li a bati-an. Ak nan plizyè lang modèn, nan kou, Booleans se yon kalite estanda done default. Men, nan C, yo ap aktyèlman pa. Men, nou te kreye li pou ou. Se konsa, si ou te janm bezwen yo kreye yon varyab ki gen di ki kalite se bouleen, jis asire w ke ou # enkli CS50.h nan kòmansman an nan pwogram ou an, epi ou pral kapab kreye varyab nan kalite la bouleen. Si ou bliye fè # enkli CS50.h, ak ou kòmanse lè l sèvi avèk varyab Boolean-kalite, ou ta ka rankontre kèk pwoblèm lè w ap konpile pwogram ou an. Se konsa, jis pou vijilan a pou sa. E petèt ou ka jis ranje a pwoblèm pa liv ki gen ladan cs50.h. Lòt gwo kalite nan done ke nou bay pou ou nan bibliyotèk la CS50 se fisèl. Se konsa, sa se yon fisèl? Fisèl yo se reyèlman jis mo yo. Yo ap koleksyon nan karaktè. Yo ap mo yo. Yo ap fraz. Yo ap paragraf yo. Ta ka liv antye, menm. Trè kout nan trè long seri de karaktè. Si ou bezwen sèvi ak strings, pou egzanp, nan magazen yon mo, jis asire w ke ou gen ladan CS50.h nan kòmansman an nan pwogram ou an se konsa ou ka sèvi ak kalite a fisèl. Lè sa a, ou kapab kreye varyab ki gen kalite done se fisèl. Koulye a, pita sou nan kou a, nou pral wè tou ke sa a, se pa istwa a tout antye, swa. Nou pral rankontre bagay rele estrikti, ki pèmèt ou nan gwoup sa ki ka konsidere yon nonb antye relatif ak yon fisèl nan yon sèl inite. Apre sa, nou ka sèvi ak sa pou kèk objektif, ki ta ka vini an sou la men pita sou nan kou a. Epitou, n ap aprann tou sou defini kalite, ki pèmèt ou kreye kalite pwòp done ou. Nou pa bezwen enkyete sou sa pou kounye a. Men, jis konnen ke sa a, se yon bagay sou orizon an, ke gen nan yon anpil plis nan tout sa a bagay di ki pase mwen di ou jis kounye a. Se konsa, kounye a ke nou te aprann yon ti kras sou done yo debaz kalite ak kalite yo done CS50, se pou yo pale sou fason yo travay avèk varyab ak kreye lè l sèvi avèk sa yo yo kalite done nan pwogram nou yo. Si ou vle kreye yon varyab, tout sa ou bezwen fè se de bagay sa yo. Premyèman, ou bezwen bay li yon kalite. Bagay la dezyèm ou bezwen fè se bay li yon non. Yon fwa ou te fè sa ak jifle yon virgules nan fen ke liy, ou te kreye yon varyab. Se konsa, isit la nan de egzanp. Nimewo Int; Char lèt ;. -Kisa M 'fè isit la? Mwen te kreye de varyab. Premye a, nan la varyab non se kantite. Ak nimewo se kapab nan kenbe nonb antye relatif tape valè, paske kalite li yo se int. Lèt se yon lòt varyab ki kapab kenbe karaktè paske kalite done li yo se Char. Trè dwat, dwa? Si ou jwenn tèt ou nan yon sitiyasyon kote ou bezwen yo kreye miltip varyab nan kalite la menm, ou sèlman bezwen presize non nan kalite yon fwa. Lè sa a, jis lis kòm anpil varyab nan ki di ki jan ou bezwen. Se konsa, mwen te kapab pou egzanp, isit la nan liy sa a twa moun ki sou kòd, di wotè int ;, nouvo liy. Int lajè ;. Epi sa ta travay tou. Mwen ta toujou jwenn de varyab rele wotè ak lajè, chak nan yo ki se yon nonb antye relatif. Men, mwen pèmèt yo, bagay sa yo nan C sentaks, konsolide l 'nan yon sèl liy. Int wotè, lajè; Li nan menm bagay la. Mwen te kreye de varyab, yon sèl rele wotè yon sèl rele lajè, tou de kote yo kapab nan kenbe valè kalite nonb antye relatif. Menm jan an tou isit la, mwen kapab kreye twa valè pwen k ap flote nan yon fwa. Mwen kapab petèt kreye yon varyab rele rasin kare nan 2-- ki prezimableman pral evantyèlman kenbe point-- la k ap flote ki reprezantasyon nan kare a rasin nan 2-- rasin kare nan 3, ak pi. Mwen te kapab te fè sa a sou twa liy ki apa a. Flote, rasin kare 2; Flote rasin kare 3; flote pi; e ke ta travay tou. Men, ankò, mwen ka jis konsolide sa a nan yon sèl liy nan kòd. Fè bagay sa yo yon ti jan pi kout, pa tankou clunky. Koulye a, an jeneral, li nan bon konsepsyon sèlman deklare yon varyab lè ou bezwen li. Epitou, n ap pale yon ti kras ti jan pi plis sou sa pita sou nan kou a lè nou diskite sou sijè ki abòde. Se konsa, pa nesesèman bezwen kreye tout nan varyab ou nan kòmansman an nan pwogram nan, ki gen kèk moun ki ta ka te fè tan lontan an, oswa te sètènman yon trè komen kodaj pratik anpil ane de sa lè w ap travay ak C. ou ta ka jis vle kreye yon dwa varyab lè ou bezwen li. Tout dwa. Se konsa, nou te kreye varyab. Ki jan nou sèvi ak yo? Apre nou deklare yon varyab, nou pa bezwen ou presize kalite a done nan ki varyab ankò. An reyalite, si ou fè sa, ou ta ka fini ak kèk konsekans etranj ke nou pral kalite enteprete sou pou kounye a. Men, sufi li vle di, bagay etranj yo ale yo kòmanse ap pase si ou inadvèrtans re-deklare varyab ak non an menm sou yo ak sou. Se konsa, isit la mwen gen kat liy nan kòd. Apre sa, mwen gen yon koup nan kòmantè gen jis ki endike sa k ap pase sou chak liy jis ede ou jwenn sitiye nan nan sa k ap pase sou. Se konsa, int nimewo ;. Ou te wè ki te deja. Sa se yon deklarasyon varyab. Mwen te kounye a kreye yon varyab rele nimewo sa a, se ki kapab kenbe valè nonb antye relatif-kalite. Mwen te deklare li. Liy nan pwochen mwen plase se yon valè ak kantite. Nimewo egal 17. Ki sa ki pase la? M 'ap mete nimewo a 17 andedan nan ki varyab. Se konsa, si mwen janm Lè sa a, enprime konnen ki sa ki sa ki nan nimewo yo pita sou, yo pral di m 'li an 17. Se konsa, mwen te deklare yon varyab, ak Lè sa a mwen te asiyen li. Nou ka repete pwosesis la ankò ak lèt ​​Char ;. Sa se yon deklarasyon. Lèt egal kapital H. Sa a yon devwa. Trè dwat, tou. Koulye a, sa a ta ka pwosesis sanble kalite dwòl. Poukisa nou fè sa nan de liy nan kòd? Èske gen yon pi bon fason yo fè sa? An reyalite, gen. Pafwa ou ta ka wè sa a yo rele inisyalizasyon. Li nan lè ou deklare yon varyab epi bay yon valè nan menm tan an. Sa a se aktyèlman yon trè bagay komen nan fè. Lè ou kreye yon varyab, ou anjeneral vle li nan gen kèk valè de baz yo. Menm si li nan 0 oswa yon bagay. Ou jis ou bay li yon valè. Ou ka inisyalize yon varyab. Int nimewo egal 17 se menm jan ak de premye liy ki nan kòd moute pi wo a. Char lèt egal h se menm bagay la kòm nan liy twazyèm ak katriyèm nan kòd pi wo a. Takeaway ki pi enpòtan isit la lè nou ap deklare ak plase varyab se apre nou te deklare li, avi Mwen pa lè l sèvi avèk kalite nan done ankò. Mwen pa di nimewo int egal 17 sou liy nan dezyèm nan kòd, pou egzanp. Mwen jis di nimewo egal 17. Yon fwa ankò, re-deklare yon varyab apre ou te deja deklare li kapab mennen nan kèk konsekans etranj. Se konsa, jis dwe fè atansyon nan sa. Mwen se Doug Lloyd. Lè sa a se CS50.