>> [Jwe mizik]
DAVID J. Malan: Tout dwa.
Sa a se CS50, ak sa a se kòmansman an nan semèn de.
Se konsa, kite nou kòmanse jodi a ak yon ensèk.
Yon ensèk, nan kou, se yon erè nan yon pwogram,
epi ou ap jwenn anpil abitye avèk konsèp sa a
si ou pa janm te pwograme anvan. pset0 e kounye a, pset1.
Men, kite a konsidere yon bagay yon ti kras senp nan premye.
Pwogram sa a isit la ke mwen jete ansanm nan avanse,
ak mwen reklamasyon ke sa a ta dwe enprime 10 zetwal sou ekran an lè l sèvi avèk printf,
men li la aparamman buggy nan kèk fason.
>> Etandone ke spesifikasyon ki li ta dwe ekri ak lèt ​​detache 10 zetwal,
men li fè sa pa aparamman, sa ki ou ta reklame se pinèz la?
Yeah?
Se konsa, li nan yon koupe pa yon sèl erè, ak sa ou vle di pa sa?
OK.
Ekselan.
Se konsa, nou te espesifye yon kòmanse valè de zewo pou mwen,
e nou te espesifye yon valè n nan 10, men nou te itilize mwens pase oswa egal a.
Ak rezon an ke sa a se de karaktè epi li pa jis yon sèl senbòl,
tankou nan yon liv matematik, se ke ou pa gen
yon fason pou eksprime la yon karaktè ekivalan.
>> Se konsa, sa vle di mwens pase, men si w kòmanse konte nan zewo,
men ou konte tout wout la moute nan ak egal a 10,
w ap nan kou ale nan konte 11 bagay sa yo nan manm.
Se konsa, w ap ale nan enprime 11 zetwal yo.
Se konsa, sa ki ta ka yon ranje pou sa a?
Yeah?
>> Se konsa, jis ajiste mwens la pase oswa egal a jis dwe mwens pase,
ak gen nan, mwen reklame, petèt yon lòt solisyon, tou.
Ki sa ki ta lòt bagay ou fè?
Yeah?
>> Se konsa, kòmanse egal li nan 1, ak kite mwens la pase oswa egal a.
Ak franchman mwen ta fè reklamasyon ki, pou yon moun tipik,
sa a se pwobableman plis dwat.
Kòmanse konte nan 1 ak konte moute nan 10.
Esansyèlman fè sa ou vle di.
>> Men, reyalite a se nan pwogramasyon, menm jan nou te wè,
syantis konpitè ak pwogramasyon jeneralman kòmanse konte nan zewo.
Se konsa, ki nan amann yon fwa ou jwenn itilize li.
Kondisyon w ap jeneralman dwe yon bagay tankou mwens pase.
Se konsa, tou senpleman yon lojik erè ki nou te kapab kounye a
ranje ak finalman compile sa a epi pou yo jwenn jis 10.
>> Oke ki jan sou ensèk sa a isit la?
Isit la, ankò, mwen reklame ke mwen gen yon objektif nan enprime 10 stars--
youn pou chak liy tan sa a, men li pa fè sa.
Anvan nou pwopoze sa ki ranje a se, ki sa ki sa a
enprime vizyèlman si m 'te konpile ak kouri pwogram sa a ou panse?
Yeah?
>> Star.
Se konsa, tout zetwal yo sou la menm liy se sa m 'tande,
ak Lè sa a nouvo pèsonaj la liy.
Se konsa, kite a eseye sa.
Se konsa, fè buggy-1, antre nan, ak mwen wè yo lòd, ki rezone
ke nou te pale osijè de dènye fwa.
./buggy-1, ak tout bon Mwen wè tout 10 zetwal sou liy lan menm menm si mwen reklame
nan spesifikasyon mwen jis yon kòmantè anlè Kòd la ke mwen gen entansyon fè yon sèl pou chak
liy.
Men, sa a sanble dwat.
>> Koulye a, liy 15 li sanble mwen se enprime yon etwal, ak Lè sa a liy 16
li sanble mwen se enprime yon karaktè nouvo liy,
epi yo ap tou de utilize konsa Mwen se andedan nan bouk la byen klè.
Se konsa, pa ta dwe mwen dwe ap fè zetwal, nouvo liy, etwal, nouvo liy, zetwal, nouvo liy?
Wi?
>> Yeah, kontrèman ak yon lang tankou Piton, si w ap abitye,
dekoupaj pa fè sa gen pwoblèm nan òdinatè a.
Li sèlman zafè imen an.
Se konsa, liy Lè nou konsidere ke isit la mwen te envante 15 ak 16-- ki sanble bèl,
men òdinatè a pa pran swen.
Òdinatè a gen sousi pou aktyèlman gen aparèy òtopedik Curly
alantou liy sa yo nan Kòd.
>> Se konsa, ke li nan clear-- jis tankou nan Scratch-- ke moun de liy nan kòd
yo ta dwe egzekite.
Menm jan ak youn nan moun ki devinèt grafouyen jòn moso ankò e ankò e ankò.
>> Se konsa, kounye a si mwen re-kouri sa a program-- ./buggy-2-- Hm.
Mwen gen yon erè kounye a.
Ki sa mwen bliye fè?
Yeah, se konsa mwen pa t 'konpile li.
Se konsa, fè buggy-2.
Pa gen tankou dosye paske mwen pa t ' aktyèlman konpile vèsyon, dezyèm lan.
Se konsa, kounye enteresan sekrè variable-- pa 2.
Nou ap fè 1.
Fè buggy-1-- ./buggy-1-- e kounye a, chak nan yo se sou liy la menm.
>> Koulye a, gen yon eksepsyon nan sa a reklamasyon sipoze m '
ke ou bezwen sa yo aparèy òtopedik Curly.
Lè se li aktyèlman OK-- si ou te remake nan seksyon oswa textbooks--
oblije aparèy òtopedik yo Curly?
Yeah?
>> Egzakteman.
Lè gen nan yon sèl sèlman liy nan kòd ke ou
vle yo dwe asosye ak nan bouk tankou nan premye egzanp nou an.
Li se parfe lejitim oblije aparèy òtopedik yo Curly
menm jan sòt de yon konvenyans soti nan du a ba ou.
Yeah?
Bon kesyon.
Li ta dwe konsidere kòm yon erè style?
Nou ta promote-- tankou nan CS50 gid style, URL la pou ki
se nan pset1-- ki toujou sèvi ak aparèy òtopedik yo Curly.
Sètènman, si ou nouvo nan pwogramasyon.
Reyalite a se nou pa ale nan entèdi ou
soti nan fè konfor sa yo.
Men, si w ap jis ap resevwa nan balanse nan de bagay sa yo,
absoliman jis toujou sèvi ak Curly la aparèy òtopedik jiskaske w jwenn pann an nan li.
Bon kesyon.
>> Tout dwa.
Se konsa, ki Lè sa a, se te yon ensèk.
Omwen nan yon bagay san patipri ki senp.
Men, ou ta ka panse ke sa a se jistis estanda, dwa?
Sa a se sòt nan premye semèn nan nan gade nan lang lan
tankou, gade pinèz ou ladan l '.
Men, reyalite a sa yo, se aktyèlman reprezantan
nan kèk pwoblèm trè pè ki ka leve nan mond lan reyèl.
>> Se konsa, kèk nan ou ta ka sonje si w swiv teknoloji nouvèl,
oswa petèt menm kenbe van nan sa a nan mwa fevriye
nan sa a ane ki sot pase ke Apple te gen te fè yon ti jan nan yon erè nan tou de iOS,
sistèm nan fonksyone sou telefòn yo, epi tou li
Mac OS, sistèm nan fonksyone sou Bureau yo ak laptops.
Epi ou wè tit tankou sa a.
Epi apre sa, Apple te pwomèt yo ranje ensèk sa a,
ak trè byen vit te fè fikse li nan iOS, men Lè sa a finalman fiks l 'nan Mac OS
kòm byen.
>> Koulye a, Pa gen yonn nan tit sa yo pou kont li vrèman revele sa pwoblèm nan kache te,
men li te pinèz la finalman redwi a yon ensèk nan SSL, sipò an sekirite kouch.
Ak istwa long kout, sa a se lojisyèl an
ki navigatè nou yo ak lòt lojisyèl itilize yo fè ki sa?
>> Si mwen te di ke SSL se patisipe, nenpòt lè ou
vizite yon URL ki kòmanse ak t, sa Lè sa a, ta ka SSL ki gen rapò ak?
Chifreman.
Se konsa, nou pral pale sou sa a nan jou k'ap vini yo.
Chifreman, atizay la nan eskalade enfòmasyon.
>> Men, istwa long kout, Apple nenpòt moman de sa te fè yon erè
nan aplikasyon yo nan SSL a, lojisyèl ki finalman aplike
URL tankou t oswa max koneksyon gen tou.
Rezilta a nan ki se ke ou koneksyon te kapab potansyèlman
dwe entèsepte yo.
Ak koneksyon ou yo te pa nesesèman chiffres
si ou te gen kèk nèg move nan ant ou ak sou sit entènèt nan destinasyon ki
te konnen ki jan yo pran avantaj de sa a.
>> Koulye a, Apple finalman afiche yon ranje pou sa a finalman,
ak deskripsyon an nan ranje yo te sa a.
Tache transpò echwe pou pou valide otantisite a nan koneksyon an.
Pwoblèm nan te adrese pa restore manke etap validation.
>> Se konsa, sa a se yon eksplikasyon tranble men trè pou tou senpleman di ke nou vise yo.
Gen literalman yon sèl liy nan kòd ki te buggy
nan aplikasyon yo nan SSL, ak si ou ale sou entènèt ak rechèch pou sa a
ou ka aktyèlman jwenn kòd la sous orijinal la.
Pou egzanp, sa a se yon piki ekran an jis yon pòsyon nan yon jistis gwo dosye,
men sa a se yon fonksyon aparamman rele SSL verifye sèvè siy kle echanj.
Epi li pran yon pakèt moun sou agiman ak entrain.
Epi nou pa ap ale nan konsantre twòp sou ti detay la a,
men si ou konsantre sou kòd la anndan nan ki topmost function-- kite nan
rale nan sou sa.
Ou ta ka deja sispèk sa erè a ta ka
gen menm si ou pa gen okenn lide finalman ki sa ou ap chèche a.
Genyen kalite yon anomali isit la, ki se ki sa?
>> Yeah, mwen pa reyèlman renmen gade nan nan de Goto echwe.
Franchman, mwen pa vrèman konnen ki sa Goto fail vle di, men li te gen de nan disip yo
tounen nan tounen.
Sa jis kalite fwote m ' entelektyèlman wout la sa ki mal,
ak tout bon si nou rale nan sou jis liy sa yo, sa a se C.
>> Se konsa, yon anpil nan kòd Apple la se tèt li ekri nan C,
ak sa a aparamman se reyèlman equivalent--
pa ak sa yo ki dekoupaj trè vèsyon, men si ou rekonèt lefèt
ki gen nan pa gen aparèy òtopedik Curly, sa ki Apple reyèlman te ekri te kòd ki sanble
tankou sa a.
Se konsa, mwen te agrandi soti ak mwen jis fiks dekoupaj an nan sans
ke si gen nan pa gen aparèy òtopedik Curly, ki Goto dezyèm fail sa a, se nan jòn
ki pral egzekite pa gen pwoblèm sa.
Li pa nan ki asosye ak si kondisyon an pi wo a li.
>> Se konsa, menm ankò, se pa si ou fè byen konprann ki sa sa a te kapab pètèt
ap fè, konnen ke chak nan sa yo conditions-- chak nan liy sa yo
se yon etap ki enpòtan anpil nan pwosesis pou yo tcheke
si done ou se an reyalite chiffres.
Se konsa, si w rate youn nan sa yo etap, pa lide a pi byen.
>> Men, paske nou gen sa a dezyèm Goto fail nan jòn,
epi paske yon fwa nou sòt de estetik
deplase li nan bò gòch la kote li lojikman se nan moman sa a, ki sa
sa vle di pou liy la nan kòd anba a ki dezyèm Goto
fail ou ta panse?
Li nan toujou yo pral sote.
Se konsa, gotos yo jeneralman dezaprouve sou pou rezon nou pa pral reyèlman ale nan,
ak tout bon nan CS50 nou pa gen tandans yo anseye deklarasyon sa a Goto,
men ou ka panse a Goto fail kòm siyifikasyon ale so
nan kèk lòt pati nan kòd la.
>> Nan lòt mo sote sou liy sa a pase a nèt,
ak Se konsa, rezilta a nan sa a estipid erè senp sa ki te jis
yon rezilta nan pwobableman yon moun w kopye e kole youn twò
anpil fwa te ke tout la sekirite nan iOS ak Mac OS
te vilnerab a entèrsèpsyon pa nèg move pou kèk tan.
Jiska Apple finalman fiks sa a.
>> Koulye a, si kèk nan nou yo aktyèlman kouri vèsyon fin vye granmoun nan iOS oswa Mac OS,
ou ka ale nan gotofail.com ki se yon sit entènèt ke yon moun mete kanpe
esansyèlman detèmine programe
si òdinatè w lan se toujou vilnerab.
Ak franchman, si li se, li la pwobableman yon bon lide
yo mete ajou telefòn ou oswa Mac ou nan pwen sa.
Men, gen, jis kontra Bondye a jis ki jan yon apresyasyon nan sa yo pi ba nivo
detay epi san patipri lide ki senp ka vrèman
tradwi nan desizyon ak pwoblèm ki
affected-- nan case-- sa a dè milyon de moun.
>> Koulye a, yon mo sou administrasyon an.
Seksyon ap kòmanse sa a ap vini Dimanch.
Ou pral resevwa yon imèl pa nan fen semèn sou seksyon, nan ki pwen
pwosesis la resectioning ap kòmanse si ou te
reyalize ou kounye a gen kèk nouvo konfli.
Se konsa, sa k ap pase chak ane, epi nou pral akomode nan jou yo ap vini yo.
>> Biwo hours-- fè kenbe yon je sou orè sa a isit la.
Chanjman yon ti jan semèn sa a, patikilyèman lè yo kòmanse
ak kote an, se konsa konsilte ke anvan tit nan lè biwo
nenpòt nan kat nwit kap vini yo.
Epi, koulye a yon mo sou evalyasyon, patikilyèman jan ou plonje nan pwoblèm
kouche youn ak apre.
>> Se konsa, pou chak spesifikasyon la, sa yo, se jeneralman
aks yo ansanm ki nou evalye travay ou.
Dimansyon refere a sa ki limit egzekite kòd ou a
karakteristik yo ki egzije pa spesifikasyon nou an.
Nan lòt mo, ki jan anpil nan yon moso seri ou te mòde koupe.
Èske ou te fè yon tyè nan li, yon mwatye nan li, 100% nan li.
Menm si li pa kòrèk, konbyen lajan ou t 'eseye?
Se konsa, ki kaptire nivo a nan efò ak kantite lajan an
yo ki ou mòde koupe nan pwoblèm seri pwoblèm nan.
>> Correct sa a yon sèl, ki nivo, se kòd ou
ki konsistan avèk nou an espesifikasyon ak gratis nan pinèz.
Se konsa, li travay kòrèkteman?
Si nou ba li kèk D ', fè li ban nou pwodiksyon an ke nou atann?
Design-- kounye a sa a se premye a nan yo menm ki patikilyèman kalitatif,
oswa sa yo ki mande pou jijman imen.
Ak tout bon, sa a se rezon sa a genyen yon anplwaye nan zanmi ansèyman anpil ak kou
asistan.
Nan ki nivo se ou Kòd ekri byen?
>> Epi ankò sa a se yon trè evalyasyon qualitative
ki pral travay avèk ou sou bi-dirèksyonelman nan semèn kap vini yo.
Se konsa, ki lè ou jwenn pa sèlman nimerik nòt, men tou,
yon nòt ekri, oswa tape fidbak, fidbak oswa ekri nan mo angle.
Sa a ki sa nou pral sèvi ak nan kondwi ou nan direksyon aktyèlman ekri pi bon Kòd.
Ak nan konferans ak seksyon, nou pral eseye nan pwen out-- osi souvan sa nou can--
ki sa ki fè yon pwogram pa sèlman kòrèk epi yo fonksyonèl bon,
men tou, byen fèt.
Pi efikas la li te kapab fè, oswa menm ki pi bèl nan li kapab.
>> Ki mennen nou nan style.
Style finalman se yon jijman ayestetik.
Eske ou te chwazi bon non pou varyab ou a?
Eske ou utilize Kòd ou byen?
li gade byen, ak Se poutèt sa, se li fasil pou yon lòt moun yo te
li respektif ou nan Correct li yo.
>> Kounye a jeneralman pou chak progranm a, nou ta fè nòt Asebyen bagay sa yo sou yon echèl senk pwen.
Ak kite m 'mato lakay pwen an ke yon twa se vre bon.
Trè byen vit fè jan kòmanse fè aritmetik.
Lè yo jwenn yon soti twa nan senk sou Correct pou kèk pset
e yo panse modi, mwen pral 60% ki se esansyèlman yon D oswa yon E.
>> Sa a pa fason nou panse a nimewo sa yo.
Yon twa se vre bon, ak ki sa nou jeneralman atann nan kòmansman an
nan tèm nan se ke si w ap vin yon pakèt moun sou three's-- petèt yon koup
nan fwa, yon koup nan fours-- oswa yon Dezan koup, yon koup la fours--
sa a, se yon bon plas yo kòmanse.
Se konsa, lontan ke nou wè yon anwo trajectoire sou tan,
w ap nan yon patikilyèman bon plas.
>> Fòmil la nou itilize yo bagay sa yo pwa se esansyèlman
sa a pou chak progranm la, ki jis vle di ke nou
bay plis pwa nan Correct.
Paske li nan trè souvan Correct ki pran tan ki pi.
Trust m 'kounye a.
Ou pral find-- omwen nan yon sèl pset-- ke ou
depanse 90% nan tan ou ap travay sou 10% nan pwoblèm nan.
>> Ak tout bagay sòt de travay eksepte pou yon sèl oswa de pinèz,
ak sa yo se bug yo ki kenbe ou moute anreta nan mitan lannwit.
Moun sa yo se sa yo ki sòt de chape ou.
Men apre, lè dòmi sou li, oswa ale nan lè biwo
oswa poze kesyon sou entènèt, se lè ou rive nan objektif sa a 100%,
e ke sa a poukisa nou pwa Correct pi plis la.
Desine yon ti kras mwens, ak style yon ti kras mwens pase sa.
Men, kenbe nan mind-- style se petèt pi fasil la
nan sa yo mòde koupe tankou pou chak gid-la style.
>> Epi, koulye a, yon pi grav sonje sou onètete akademik.
CS50 gen distenksyon an malere nan ke yo te pwodiktè nan pi gwo nan Ad Komisyon Konsèy
ka prèske chak ane istorikman.
Sa a se pa paske elèv tronpe nan CS50 nenpòt ki plis konsa pase nenpòt lòt klas,
men se paske pa nati nan travay la, lefèt ke li nan elektwonik,
lefèt ke nou gade pou li, epi lefèt nou se syantis konpitè,
Mwen kapab di nou se malerezman trè bon nan detekte li.
>> Se konsa, sa sa vle di nan tèm reyèl?
Se konsa, li, pou chak progranm la, filozofi kou a nan
reyèlman bouyi desann nan dwe rezonab.
Gen liy sa a ant fè travay yon sèl la sou pwòp ou a
yo ak pou jwenn yon ti kras nan èd rezonab nan men yon zanmi,
ak kareman fè sa travay pou ou zanmi, oswa voye l 'oswa li kòd ou a
se konsa ke li oswa li te kapab tou senpleman pran oswa prete li soti dwat.
Epi ki kwaze liy lan ke nou trase nan klas la.
>> Gade, progranm la finalman pou liy ki
ke nou trase tankou se te rezonab ak konpòtman rezonab,
men li vrèman fè bouyi desann nan sans nan
nan travay ou bezwen yo gen pwòp ou a nan fen an.
Koulye a, ak ki te di, gen yon eristik.
Paske jan ou ta ka imagine-- soti nan biwo heures Et vizyèl yo
ak videyo yo nou te montre konsa far-- CS50
se vre vle di ke yo dwe kòm kolaborasyon ak jan koperativ ak jan sosyal
ke posib.
Kòm kolaborasyon kòm li se difisil.
>> Men, ak sa a, di konsa, eristik a, jan ou pral wè nan progranm la,
se ke lè w ap gen kèk pwoblèm.
Ou gen kèk ensèk nan kòd ou a ke ou pa ka rezoud, li rezonab pou ou
yo montre kòd ou a nan yon lòt moun.
Yon zanmi menm nan klas la, yon zanmi chita bò kote ou nan lè biwo louvri,
oswa yon manm nan pèsonèl la.
Men, yo pa ka montre kòd yo ba ou.
>> Nan lòt mo, yon reponn a kesyon ou
Mwen bezwen help-- se pa oh, isit la nan Kòd m 'yo.
Pran yon gade nan sa a ak enferyè soti nan li ki sa ou pral.
Koulye a, nan kou, gen nan yon fason byen klè nan jwèt
sistèm sa a annakò ak sa mwen pral montre w kòd m 'anvan gen yon kesyon.
Ou montre m mwen Kòd ou anvan gen yon kesyon.
Men, wè progranm la ankò pou la detay sibtilite nan kote liy sa a se.
>> Jis kounye a penti foto a ak pataje kòm transparan ke posib
kote nou ye a nan dènye ane yo, sa a se kantite ka Ad Komisyon Konsèy
te ki CS50 te gen plis pase sèt ane ki sot pase yo.
Ak 14 ka sa a tonbe pi resan an.
An tèm de elèv yo ki enplike yo, li te 20 gen kèk elèv enpè
sa a tonbe sot pase yo.
Te gen yon gwo monte nan 33 elèv yo gen kèk ane de sa.
Anpil nan yo se malerezman pa gen okenn ankò isit la sou lakou lekòl la.
>> Elèv ki patisipe kòm yon pousantaj de la gen klas istorikman alan soti nan 0%
5.3%, ki se sèlman yo di sa a se chak ane yon defi.
Ak nan direksyon sa fini, sa ki nou vle fè se transmèt yon
ke nou dd-- jis FYI-- konpare a yon jistis elèv sa yo ki
se sa ki annapre liy lan kòmsadwa.
Nou fè konpare tout aktyèl observation kont tout misyon sot pase
soti nan anpil ane ki sot pase.
>> Nou konnen tou ki jan sou Google alantou epi jwenn zarchiv Kòd
sou entènèt, fowòm diskisyon sou entènèt, sit travay sou entènèt.
Si yon elèv ka jwenn li, nou ka siman jwenn li kòm anpil jan nou regretableman fè.
Se konsa, sa ou pral wè nan progranm la menm si se kloz regrèt sa a.
Mwen kapab sètènman apresye, epi nou tout gen
anplwaye li te gen fè kou a tankou sa a, oswa yon sèl sa a tèt li sou tan,
sètènman konnen sa ki la renmen lè lavi vin nan fason an lè ou gen
kèk swa byen ta deadline-- se pa sèlman nan klas sa a,
men another-- lè w ap konplètman fin itilize, ensiste soti,
gen yon nimewo eksesif nan lòt bagay yo fè.
Ou pral fè nan kèk pwen nan lavi sètènman yon move, petèt an reta
lannwit desizyon.
>> Se konsa, pou chak progranm la, gen kloz sa a,
tankou ke si nan lespas 72 èdtan nan fè kèk desizyon pòv, ou posede jiska li
e rive jwenn soti nan m 'ak youn nan tèt kou a
epi nou pral gen yon konvèsasyon.
Nou pral okipe bagay intern nan espwa
nan li vin pi plis nan yon moman ansèyman oswa leson lavi,
epi yo pa yon bagay ki gen ramifications patikilyèman radikal
jan ou ta ka wè sou tablo sa yo isit la.
>> Se konsa, se yon ton ki grav anpil.
Se pou nou pran yon poz pou jis yon kèk segonn yo kraze tansyon an.
>> [Jwe mizik]
>> DAVID J. Malan: Tout dwa, Se konsa, kouman te ke pou yon seg?
Nan sijè prensipal la jodi a.
Premye a nan yo ki se abstraction.
Yon lòt nan ki se ale nan gen nan reprezantasyon nan done, ki franchman
se yon fason vrèman sèk nan di ki jan nou ka ale sou rezoud pwoblèm ak panse
sou rezoud pwoblèm?
Se konsa, ou te wè nan grafouyen, ak ou te wè petèt deja nan pset1 ak C
ke ou pa sèlman ka itilize fonksyon, tankou printf,
ke lòt moun nan ane ki sot pase te ekri pou ou.
Ou kapab tou ekri fonksyon pwòp ou yo.
>> E menm si ou pa ta ka gen fè sa nan C, ak franchman nan pset1
ou pa vrèman bezwen ekri ou pwòp fonksyon paske problem-- la
pandan y ap petèt redoutable nan premye glance-- ou pral wè
ka finalman dwe rezoud ak pa tout sa ki anpil liy nan kòd.
Men, avèk ki te di, an tèm nan ekri fonksyon pwòp ou a,
reyalize ke C bay ou kapasite sa a.
>> Mwen pral ale nan kòd sous jodi a, ki se disponib deja sou entènèt,
ak mwen pral ale pi devan epi yo louvri moute yon pwogram ki rele 0.c fonksyon,
ak nan fonksyon zewo nou pral wè yon bagay kèk.
Nan liy premye 18 a 23 se fonksyon prensipal mwen.
Epi, koulye a ke nou ap kòmanse li Kòd ke nou pa ap ekri sou vole a,
men olye mwen te ekri davans oswa ke ou nan yon seri pwoblèm
kapab resevwa gen te ekri an davans.
Yon bon fason yo kòmanse lekti Kòd yon lòt moun nan
se gade pou fonksyon prensipal la.
Konnen ki kote ki antre pwen se kouri pwogram nan,
ak Lè sa a swiv li lojikman soti nan la.
>> Se konsa, pwogram sa a aparamman simagri non ou te swiv pa yon kolon.
Nou Lè sa a, sèvi ak GetString nan bibliyotèk la CS50
yo ka resevwa yon fisèl, oswa yon mo oubyen yon fraz soti nan itilizatè a nan klavye la.
Lè sa a, gen nan sa a bagay here-- PrintName.
>> Koulye a, PrintName se pa yon fonksyon ki vini ak C.
Li pa nan estanda io.h.
Li pa nan cs50.h.
Li nan olye nan dosye a menm.
Avi si mwen desann yon liy bit-- 25 a 27--
li nan jis yon fason bèl nan fè kòmantè kòd ou a lè l sèvi avèk zetwal yo ak bar.
Sa a se yon-liy milti kòmantè, ak sa a se jis
deskripsyon m 'ki nan ble nan sa ki fonksyon sa a fè.
>> Paske nan liy 28 jiska 31, Mwen te ekri yon fonksyon super senp
Non ki gen se PrintName.
Li pran konbyen agiman ou ta di?
Se konsa, yon sèl agiman paske gen nan yon sèl agiman ki nan lis andedan parantèz yo.
Kalite a nan ki se chèn.
Sa vle di PrintName se tankou bwat nwa sa a
oswa fonksyon ki pran kòm opinyon yon fisèl.
>> Ak non an nan ki chèn fasilman yo pral Non lekòl la.
Pa S, pa N, men Non lekòl la.
Se konsa, sa PrintName fè?
Li bon ki senp.
Menm jan yon sèl liy nan Kòd pou printf a, men aparamman li
simagri soti "Hello," se konsa ak sa.
Ki kote konsa a ak pou soti nan agiman an.
>> Koulye a, sa a se pa yon inovasyon gwo isit la.
Vrèman, mwen te pran yon pwogram ki te kapab yo te ekri ak yon sèl liy nan Kòd
pa mete sa a moute isit la, ak chanje li nan yon bagay
ki enplike nan kèk sis oubyen sèt oswa konsa liy nan kòd tout wout la desann isit la.
>> Men, li la pratike a nan yon prensip li te ye kòm distraksyon.
Kalite ankapsule andedan nan yon nouvo fonksyon ki gen yon non, ak pi bon
ankò non ki literalman di ki sa li fè.
Mwen vle di printf sa a pa patikilyèman deskriptif.
Si m 'vle yo kreye yon moso devinèt, oswa si mwen
vle kreye yon fonksyon ki simagri Non yon moun,
bote nan fè sa se ke mwen ka aktyèlman
bay ke fonksyon yon non ki dekri ki sa li fè.
>> Koulye a, li pran nan yon D 'ki Mwen te abitrèman rele,
men sa tou se bèl deskriptif olye pou yo te yon pi plis ti kras
jenerik tankou S. Ak anile, pou kounye a, jis vle di
ke fonksyon sa a pa fè sa men m 'tounen anyen.
Li pa tankou GetString ki literalman men m 'tounen yon afè
tankou nou te fè ak moso papye yo ak elèv nan klas ou semèn pase a,
men pito li jis gen yon efè segondè.
Li simagri yon bagay yo ekran an.
>> Se konsa, nan fen an nan jounen an, si mwen fè fonksyon-0, ./function-0,
nou pral wè ke li mande pou non mwen.
Mwen tape David, epi li kalite soti non mwen.
Si m 'fè l' ankò ak Rob, li pral vle di "Alo, Rob."
Se konsa, yon lide ki senp, men petèt èkstrapolasyon sa a soti nan mantalman
ke kòm pwogram ou jwenn yon ti kras pi konplike,
epi ou vle ekri yon ti moso nan Kòd ak apèl ki code-- envoke
ki code-- pa kèk deskriptif non tankou PrintName,
C fè peye nou kapasite sa a.
>> Isit la nan yon lòt egzanp ki senp.
Pou egzanp, si mwen louvri moute yon ranpli soti nan jodi a rele return.c,
remake ki sa mwen te fè isit la.
Pifò nan fonksyon prensipal sa a se printf.
M 'premye abitrèman inisyalize yon varyab rele x nimewo 2 a.
Mwen Lè sa a, enprime soti "x se kounye a % Mwen "pase nan valè a nan x.
Se konsa, mwen jis di sa li ye.
>> Koulye a, mwen jis avèk fòs konviksyon reklame ak printf.
Mwen cubing ke valè x, ak mwen se fè sa lè w rele yon fonksyon
rele kib pase nan x kòm agiman an,
ak Lè sa a ekonomize pwodiksyon an nan varyab la li menm, x.
Se konsa, mwen clobbering valè a nan x.
Mwen prensip la valè x ak tou sa
rezilta a pou rezidan yo rele fonksyon kib sa a se.
Lè sa a, mwen jis enprime soti kèk bagay an gonfle isit la di sa m 'te fè sa.
>> Se konsa, sa Lè sa a, se kib?
Avi sa ki nan fondamantalman diferan isit la.
Mwen te bay fonksyon an yon non tankou anvan.
Mwen te espesifye yon non pou yon diskisyon.
Fwa sa a, sa yo rele n olye pou yo non, men mwen te kapab rele li anyen mwen vle.
Men, sa a se diferan.
Bagay sa a sou bò gòch la.
Précédemment li te sa mo kle?
Ti gason.
Kounye a li nan evidamman Int.
>> Se konsa, sa k ap petèt pran la lwen?
Lè nou konsidere ke signifies anile sòt de enbesilite, ak sa ki te ka a.
PrintName tounen pa gen anyen.
Li te fè yon bagay, men li pa t 'lage m' tounen
yon bagay ke mwen te ka mete yo sou la bò men gòch nan yon siy egal
tankou mwen te fè isit la sou liy 22.
>> Se konsa, si mwen di nan sou liy 30, sa ki nan ke pwobableman qui
sou sa ki kib fè pou mwen?
Yeah?
Li retounen yon nonb antye relatif.
Se konsa, li men m 'tounen, pou egzanp, yon moso papye
ki te sou li te ekri repons la.
2 Gleason, oswa 3 Gleason, oswa 4 cubed-- tou sa mwen te pase nan,
e ki jan mwen aplike sa a?
Oke, jis n fwa n fwa n se ki jan mwen ta ka kib yon valè.
Se konsa, ankò, super senp lide, men démonstration
kounye a ki jan nou ka ekri fonksyon ki aktyèlman te gen nou tounen
valè ke sa ta kapab nan enterè yo.
>> Se pou yo gade nan yon sèl dènye egzanp isit la yo rele fonksyon yon sèl.
Nan egzanp sa a, li kòmanse jwenn plis irezistib.
Se konsa, nan fonksyon yon sèl, sa a avi program-- finalman
rele yon fonksyon rele GetPositiveInt.
GetPositiveInt se pa yon fonksyon nan bibliyotèk la CS50,
men nou deside nou ta renmen li egziste.
>> Se konsa, si nou desann pita nan dosye a, avi ki jan mwen te ale sou mete ann aplikasyon
jwenn pozitif Int, epi mwen di li nan plis irezistib
paske sa a se yon desan kantite liy nan kòd.
Li pa jis yon enbesil pwogram ti kras jwèt.
Li la aktyèlman gen kèk kont kouran erè ak ap fè yon bagay ki pi itil.
>> Se konsa, si ou pa te wè solisyon an videyo ke nou te entegre nan pset1,
konnen ke sa a se yon kalite bouk nan C, menm jan an nan lespri
kalite sa yo de bagay sa yo grafouyen ka fè.
Ak fè di fè sa.
Enprime sa a soti.
Lè sa a, ale pi devan epi pou yo jwenn n-- jwenn yon int ak magazen li nan n,
ak kontinye ap fè sa ankò, li ankò e ankò toutotan n se mwens pase yon.
>> Se konsa, n a pwal mwens pase yon sèlman si moun nan pa nan kolabore.
Si li se sezisman nan 0 oswa -1 oswa -50,
sa a riban ki pral kenbe egzekite ankò e ankò.
Ak finalman remake, mwen tou senpleman tounen valè an.
Se konsa, kounye a nou gen yon fonksyon ki ta ve yo te bèl
si CS50 ta aplike nan CS50.h ak CS50.c pou ou,
men isit la nou kapab kounye a aplike sa a tèt nou.
>> Men, de kòmantè sou kèk detay kle.
One-- poukisa Mwen deklare int n, ou panse, sou liy 29
olye pou yo jis fè sa a isit la, ki se
plis ki konsistan avèk sa nou te fè semèn pase a?
Yeah?
Yon bon te panse.
Se konsa, si nou te mete l ' isit la, li la tankou si nou
kenbe deklare li ankò e ankò.
Sa ki nan ak tèt li se pa pwoblèm, se pou chak,
paske nou sèlman bezwen valè a yon fwa ak Lè sa a
nou ap ale nan jwenn yon nouvo de tout fason.
Men, yon bon te panse.
Yeah?
>> Fèmen.
Se konsa, paske mwen te deklare n sou liy 29 deyò nan riban an,
li a aksesib pandan tout fonksyon sa a tout antye.
Pa lòt fonksyon yo paske n se toujou anndan nan sa yo Curly
aparèy òtopedik isit la.
So-- asire w.
>> Egzakteman.
Se konsa, sa a se menm plis nan pwen an.
Si nou olye pou deklare n dwa isit la sou liy 32,
li nan pwoblèm paske devine kote lòt bagay mwen bezwen jwenn aksè nan li?
Sou liy ki 34, ak senp règ nan gwo pous se
ke ou ka sèlman sèvi ak yon varyab andedan nan ki pi resan aparèy òtopedik yo Curly
nan ki ou te deklare li.
>> Malerezman, liy 34 se yon sèl liy twò ta,
paske mwen te deja fèmen atèl a Curly sou liy 33
ki koresponn ak nan Curly atèl sou liy 30.
Se konsa, sa a se yon fason pou li di ke sa a se Int varyab scoped,
se konsa pale, nan sèlman andedan nan tout sa yo aparèy òtopedik Curly.
Li jis pa egziste deyò nan yo.
>> Se konsa, tout bon, si mwen fè sa sa ki mal, kite m 'sove kòd la
jan li is-- mal ekri.
Kite m 'ale pi devan epi fè fonksyon-1, ak notice-- erè.
Sèvi ak nan idantifyan sekrè n sou liy 35, ki se dwa isit la.
Men, si nou woulo liv moute pi lwen, yon lòt.
Sèvi ak nan sekrè idantifyan n sou liy 34.
>> Se konsa, du a, rezone, se remarke ke li jis
pa egziste menm si klèman ke li la vizyèlman.
Se konsa, yon ranje senp se deklare li a.
>> Koulye a, kite m 'woulo liv tèt la nan dosye a.
Ki sa ki sote soti nan ou kòm ke yo te yon ti kras diferan
soti nan bagay la nou te gade semèn pase a?
Se pa sèlman mwen gen non, pa sèlman fè Mwen gen kèk byen file an gen ladan moute tèt,
Mwen gen yon bagay mwen se rele yon pwototip.
Koulye a, ki sanble joliman menm jan ak sa nou jis te wè yon ti moman de sa sou liy 27.
>> Se konsa, kite a dégager ki sòti nan yon diferan erè mesaj poutèt sa mwen te fè sa a.
Kite m 'ale pi devan epi efase liy sa yo a.
Se konsa, nou pa konnen anyen sou pwototip.
Renouvèlman sa a dosye.
Fè fonksyon yon sèl.
Epi, koulye a, modi, kat erè.
Se pou nou woulo liv moute nan yon sèl la an premye.
>> Enplisit deklarasyon nan fonksyon jwenn pozitif Int se valab nan C99.
C99 jis vle di 1999 la vèsyon nan lang lan
C, ki se ki sa nou ap tout bon lè l sèvi avèk.
Se konsa, sa sa vle di?
Oke C-- ak plis espesyalman C compilers-- yo se pwogram trè bèbè.
Yo sèlman konnen ki sa ou te te di yo, epi ki nan
aktyèlman tematik soti nan semèn dènye.
>> Pwoblèm lan se ke si mwen ale sou mete ann aplikasyon Non moute isit la,
ak Mwen rele yon fonksyon rele GetPositiveInt isit la sou liy 20,
ki fonksyon teknikman pa fè sa egziste jiskaske du a wè liy 27.
Malerezman, du a se fè bagay tèt, desann, agoch, adwat,
se konsa paske li pa te wè nan aplikasyon nan GetPositiveInt,
men li wè ou ap eseye yo sèvi ak li moute isit la,
li nan jis ale nan bail-- rele nan ou ak yon erè message-- petèt
skre, epi yo pa aktyèlman konpile dosye a.
>> Se konsa, yon sa yo rele pwototip moute isit la se Byensir redondants.
Literalman, mwen te ale desann isit la e mwen kopye ak kopye sa a, epi mwen mete l 'moute isit la.
Anile ta gen plis apwopriye, se konsa nou pral literalman kopye epi kole li tan sa a.
Mwen literalman kopye ak kole li.
Vrèman jis kòm tankou yon krout pen.
>> Yon siy ti kras nan du a.
Mwen pa konnen sa sa a fè ankò, men mwen m 'pwomèt yo ou
ke li pral egziste evantyèlman.
Epi sa a, poukisa sa a line-- nan liy 16-- fini ak yon virgules.
Li se redondants pa konsepsyon.
Wi?
>> Si ou pa t 'lyen bibliyotèk ou the-- oh, bon kesyon.
Sharp an gen ladan enklizyon dosye header.
Bezwen be-- ta dwe prèske toujou gen nan tèt la anpil
nan dosye a pou yon similar-- pou egzakteman menm rezon an, wi.
Paske nan estanda io.h se literalman yon liy
tankou sa a, men ki gen mo printf la, ak ak agiman li yo ak kalite retounen li yo.
Se konsa, pa fè byen file genyen ladan moute isit la, sa w ap literalman fè
se w kopye e kole sa ki nan yon lòt moun te ekri moute tèt.
Kidonk cluing Kòd ou a nan nan reyalite ki moun ki fonksyon egziste.
Yeah?
>> Absoliman.
Se konsa, yon trè entelijan ak kòrèk solisyon ta dwe, ou konnen ki sa?
Mwen pa konnen ki sa yon pwototip se, men mwen konnen
si mwen konprann ke C se jis bèbè ak rethinks anwo jouk anba.
Oke, kite a ba li sa li vle.
Se pou nou koupe ke kòd, kole li moute tèt, e kounye a, pouse prensipal desann anba a.
Sa a tou ta ka rezoud pwoblèm nan.
>> Men, ou te kapab trè fasil vini ak yon senaryo nan ki yon bezwen rele B,
e petèt B rele tounen nan A. Sa a se yon bagay yo rele rkursyon,
epi nou pral tounen vin jwenn sa.
Epi li pouvwa oswa pa pouvwa dwe yon bon bagay, men ou kapab definitivman
kraze sa a solisyon an.
>> Epi ankò, mwen ta reklamasyon estilitikman,
espesyalman lè pwogram ou an vin sa a depi lontan ak sa a depi lontan,
li nan jis super pratik yo mete prensipal nan tèt la
paske li nan bagay ki pi pwogramasyon yo ale nan pran swen sou.
Se konsa, li nan yon ti kras cleaner, joui, yo fè l 'wout la
Mwen orijinal te fè li ak yon pwototip menm
menm si li sanble yon ti kras redondants nan premye gade.
Yeah?
Padon, ou ka di li pi fò?
>> Si ou chanje kote yo nan a aplikasyon ak pwototip a?
Se konsa, ki se yon bon kesyon.
Si ou re-deklare sa a desann isit la, se pou yo wè sa ki rive.
Se konsa, si mwen mete sa a desann isit la, ou ap di.
Oh, regrèt.
Pi fò?
Menm pi fò.
Oh, bon kesyon.
Li ta invalid fonksyon an?
Ou konnen, apre tout ane sa yo, mwen gen pa janm mete apre sa yon pwototip.
Se konsa, kite a fè fè fonksyon-1 apre yo fin fè sa.
>> [Zòrèy]
DAVID J. Malan: Oh, rete tann.
Nou toujou gen yo mete tout bagay moute tèt.
Se konsa, kite a fè sa moute isit la, si mwen konprann kesyon ou kòrèkteman.
Mwen mete tout bagay, ki gen ladan pwototip ki pi wo a prensipal yo,
men mwen m 'mete pwototip a anba a aplikasyon an.
>> Se konsa, si mwen fè yon sèl, Mwen ap resevwa tounen yon error-- rès n varyab.
Oh, gen.
Mèsi poutèt ou.
Ann wè, nou debarase m de sa a.
Sa a yon ensèk diferan, kidonk kite a inyore sa.
Se pou yo vrèman byen vit renouvèlman sa a.
>> OK, se konsa agiman pa done itilize pa fòma chèn
n-- oh, sa a, se paske Mwen chanje nan sa yo isit la.
Tout dwa, nou konnen ki sa repons lan ki pral to-- tout dwa, isit la nou ale.
Ah, mèsi pou pozitif la.
Tout dwa, mwen pral ranje sa a kòd after-- inyore ensèk sa a an patikilye
depi sa a was-- li ap travay se repons lan.
>> Se konsa, li pa recouvrir sa ou te jis fè.
Mwen sispèk du a ki ekri nan yon fason
ke li se inyore pwototip ou paske kò a, se konsa pale,
nan fonksyon an te deja te aplike pi wo yo.
Mwen ta gen aktyèlman konsilte manyèl la nan du a
yo konprann si gen nan nenpòt lòt enplikasyon, men nan premye gade
jis la ap eseye ak fè eksperyans, gen sanble ap pa gen okenn enpak.
Bon kesyon.
>> Se konsa, kite a fòje pi devan koulye a, k ap deplase lwen efè segondè ki
yo se fonksyon ki fè yon bagay tankou vizyèlman sou ekran an ak printf,
men se pa retounen yon valè.
Ak fonksyon sa yo ki te retounen valè tankou nou jis te wè yon kèk nan.
Nou deja wè sa a nosyon nan sijè ki abòde, epi nou pral wè sa a ankò e ankò.
Men, pou kounye a, ankò, sèvi ak règ la nan gwo pous
ki ka yon varyab dwe itilize sèlman andedan nan pi dènyèman louvri nan
ak fèmen aparèy òtopedik Curly jan nou te wè nan ki egzanp patikilye.
>> Ak jan ou vize deyò, gen yon ability--
ou ta ka rezoud kèk nan pwoblèm sa yo pa mete yon varyab globalman
nan tèt la anpil nan yon dosye.
Men, nan prèske tout ka yo nou ta gwonde sou sa,
ak tout bon pa menm ale nan ki solisyon pou kounye a.
Se konsa, pou kounye a, Takeaway la se ke varyab gen sa a nosyon nan dimansyon.
>> Men koulye a, kite pou yo gade nan yon lòt fason sèk nan aktyèlman kap
nan kèk trè enteresan aplikasyon detay.
Ki jan nou ta ka reprezante enfòmasyon.
Apre sa, nou deja gade sa a nan premye semèn nan nan klas la.
Gade nan binèr, ak raple tèt nou desimal.
>> Men, sonje soti nan semèn pase a ke C gen kalite done ki diferan ak grap plis,
men yo menm ki pi itil pou kounye a ta ka sa yo.
Yon Char, oswa karaktè, ki k ap pase yo dwe youn multiple, oswa uit Bits total.
Epi sa a, yo di ke gwosè a nan yon Char se jis yon multiple.
Yon multiple se uit Bits, se konsa sa vle di ke nou ka reprezante karaktè ki jan anpil.
Konbyen lèt oswa senbòl sou klavye a
si nou gen yon sèl multiple oswa uit miyèt moso.
Panse tounen nan semèn zewo.
Si ou gen uit Bits, konbyen valè manm
ka ou reprezante ak modèl nan zewo ak moun yo?
One-- plis pase sa.
Se konsa, 256 manm si ou kòmanse konte soti nan zewo.
Se konsa, si ou gen uit bits-- konsa, si nou te gen anpoul binè nou moute isit la ankò,
nou te kapab vire moun anpoul limyè sou yo ak sou nan nenpòt nan 256 modèl inik.
>> Koulye a, sa a se yon ti jan Pwoblematik.
Pa tèlman pou angle ak lang romans, men sètènman
lè ou prezante, pou egzanp, lang Azyatik, ki
gen byen lwen plis senbòl pase tankou 26 lèt nan alfabè a.
Nou aktyèlman ta ka bezwen plis pase yon multiple.
Ak Erezman nan dènye ane yo gen sosyete
adopte lòt nòm ki itilize plis pase yon multiple pou chak chaj.
>> Men, pou kounye a nan C, default a se jis yon multiple oswa uit miyèt moso.
Yon nonb antye relatif, pandan se tan, se kat bytes, ki te rekonèt kòm 32 miyèt moso.
Ki vle di sa ki nan pi gwo posib nan Nimewo nou ka reprezante ak yon int
aparamman?
Avèk yon milya dola.
Se konsa, li kat milya dola bay oswa pran.
2 a pouvwa a 32th, si nou sipoze pa gen okenn nimewo negatif
ak jis sèvi ak tout pozitif nimewo, li nan kat milya dola
bay oswa pran posiblite yo.
Yon flote, pandan se tan, se yon kalite diferan nan kalite done nan C. Li la toujou yon nimewo,
men li la yon nimewo reyèl.
Yon bagay ki gen yon pwen desimal.
Epi li vire soti ki C itilize tou kat bytes
ki reprezante valè pwen k ap flote.
>> Malerezman konbyen k ap flote valè pwen ki genyen nan mond lan?
Konbyen chif reyèl ki genyen?
Genyen yon enfini nimewo, ak pou ki matyè
gen nan yon nonb infini nan nonm antye relatif.
Se konsa, nou ap deja kalite fouye tèt nou yon twou isit la.
Ak lese pase 'aparamman nan computers-- nan omwen pwogram ekri nan C sou them--
ka sèlman konte kòm yon wo kat milya dola bay oswa pran,
ak valè pwen k ap flote kapab sèlman aparamman
gen kèk kantite lajan fini nan presizyon.
Se sèlman anpil chif apre pwen desimal yo.
>> Paske, nan kou, si ou gen sèlman 32 Bits,
Mwen pa konnen kijan nou ap ale nan ale sou repwezantan reyèl numéros pwobableman
ak diferan kalite modèl.
Men, gen nan siman yon fini Nimewo nan modèl sa yo,
se konsa isit la, tou, sa a se yon pwoblèm.
>> Koulye a, nou ka evite pwoblèm nan yon ti kras.
Si w pa itilize yon flote, ou ka sèvi ak yon doub
nan C, sa ki ba ou uit bytes, ki se yon fason pi plis modèl posib nan zewo
ak moun yo.
Men, li la toujou fini, ki se ale yo dwe pwoblèm si ou ekri lojisyèl
pou grafik oswa pou anpenpan fòmil matematik.
Se konsa, ou ta ka aktyèlman vle yo konte moute pi gwo pase sa.
Yon long long-- estipid named-- se tou uit bytes, oswa 64 Bits,
ak sa a se de fwa osi lontan ke yon int, ak li a pou yon valè nonb antye relatif long.
>> Fun fact-- si yon int se kat bytes, konbyen tan se yon long nan C tipikman?
Epitou kat bytes, men yon lontan lontan se uit bytes,
ak sa a se pou rezon istorik.
>> Men, Takeaway la kounye a se jis ke done gen
yo dwe reprezante nan yon computer-- sa a, se yon aparèy fizik ak elektrisite,
li nan jeneralman kondwi moun zewo ak ones--
ak kantite limite nan presizyon.
Se konsa, sa ki nan pwoblèm nan lè sa a?
>> Oke, gen nan yon pwoblèm nan nonb antye relatif debòde.
Pa sèlman nan C, men nan òdinatè an jeneral.
Pou egzanp, si sa a se yon multiple vo yon bit--
Se konsa, si sa a se uit bit-- tout nan yo ki nimewo a yon sèl.
Ki nonb sa a repwezantan si nou sipoze
li nan tout valè pozitif nan binè?
>> 255, epi li pa 256, paske zewo se nimewo ki pi ba.
Se konsa, 255 se pi wo a yon sèl, men pwoblèm nan
se ta kwè ke mwen te vle kantite sa a varyab ki
se lè l sèvi avèk uit Bits totalize si mwen vle kantite li.
>> Byen ke pli vit ke mwen ajoute yon youn nan tout nan yo menm sa yo,
ou ka petèt imajine visually-- jis tankou pote yon sèl la lè l sèvi avèk decimals--
yon bagay k ap pase yo koule nan bò gòch la.
Ak tout bon, si mwen ajoute nimewo a youn nan sa a, sa k ap pase nan binè
se ke li kontan tounen nan zewo.
>> Se konsa, si ou sèlman use-- pa yon int, men yon multiple sèl yo konte nonm antye relatif
nan yon pwogram, pa default pi vit ke ou jwenn yo 250, 251, 252, 253, 254,
255-- 0 vini apre 255, ki se pwobableman pa sa
yon itilizatè ki pral atann.
>> Koulye a, pandan se tan nan pwen k ap flote nan lemonn, ou gen yon pwoblèm ki sanble tou.
Pa tèlman ak number-- nan pi gwo byenke sa a, se toujou yon pwoblèm.
Men, ak kantite lajan an nan presizyon ke ou ka reprezante.
Se konsa, kite a pran yon gade nan egzanp sa a isit la tou soti nan sous code-- jodi a
flote-0.c.
>> Ak avi li nan yon super pwogram senp ki
ta dwe aparamman enprime soti sa ki valè?
Ki sa ou paryaj sa a ki pral ekri ak lèt ​​detache menm si gen nan yon ti jan nan nouvo sentaks
isit la?
Se konsa, èspere ke 0.1.
Se konsa, ekivalan a nan yon sèl-dizyèm paske m ap fè 1 divize pa 10.
Mwen estoke repons lan nan yon varyab rele f.
Varyab ki se nan kalite flote, ki se yon mo kle mwen jis pwopoze egziste.
>> Nou pa te wè sa a anvan, men sa a se kalite yon fason pwòp nan printf
ou presize konbyen chif ou vle wè apre yon pwen desimal.
Se konsa, sa a notasyon jis vle di ki isit la nan yon kontneur.
Li nan pou yon pwen k ap flote valè, ak o, nan chemen an,
montre l 'ak pwen an desimal ak yon sèl nimewo apre pwen desimal la.
Se konsa, se nimewo a nan chif siyifikatif,
se konsa pale, ke ou ta ka vle.
>> Se konsa, kite m 'ale pi devan epi fè fè flote-0, ./float-0,
ak aparamman 1 divize pa 10 se 0.0.
Koulye a, poukisa sa a?
>> Oke, ankò, òdinatè a ap pran m 'literalman, epi mwen te ekri 1
ak mwen ekri 10, ak pran yon devine sa ki se sipoze kalite a done pou sa yo de
Valè?
Yon int, li nan teknikman yon bagay yon ti kras diferan.
Li nan tipikman yon long, men li la finalman yon valè entegral.
Pa yon valè pwen k ap flote.
>> Ki se yo di ke si sa a se yon int ak sa a se yon int,
pwoblèm nan se ke òdinatè a pa gen kapasite pou
nan menm magazen ki pwen desimal.
Se konsa, lè ou fè 1 divize pa 10 lè l sèvi avèk nonb antye relatif
pou tou de nimeratè a la ak denominatè, repons a yo ta dwe 0.1.
Men, computer-- a paske sa yo se nonb antye relatif
pa konnen ki sa fè ak 0.1 la.
>> Se konsa, sa se li byen klè ap fè?
Li nan jis voye l 'ale, ak sa m ap wè finalman
se 0.0 sèlman paske mwen ensiste ke printf montre m yon pwen desimal.
Men, pwoblèm nan se ke si ou divize yon nonb antye relatif pa yon nonb antye relatif,
ou pral get-- pa definisyon nan C-- yon nonb antye relatif.
E li pa nan ale nan fè yon bagay bèl ak fasilman
tankou wonn l 'moute nan a ki pi pre youn monte oswa desann.
Li nan ale nan tronke tout bagay apre desimal a.
>> Se konsa, jis intuitivement, sa a pwobableman yon ranje?
Ki sa ki nan ranje a ki pi senp isit la?
Yeah?
Egzakteman.
Poukisa nou pa nou jis trete sa yo kòm valè pwen k ap flote efektivman
vire tèt yo nan cha oswa double.
Epi, koulye a si mwen fè fè flote-0, oswa si mwen konpile flote-1,
ki se ki idantik ak sa ki te jis pwopoze a.
Epi, koulye a mwen fè flote-0, koulye a, mwen jwenn 0.1 mwen.
>> Koulye a, sa a se dwòl.
Men koulye a, mwen pral fè yon bagay yon ti kras diferan.
Mwen kirye yo wè sa ki nan vrèman ale sou anba kapo a,
ak mwen pral ekri ak lèt ​​detache sa a soti nan 28 kote desimal.
Mwen vle reyèlman wè 0.1000-- yon infinite--
[Fèbl] 27 zewo apre sa 0.1.
>> Oke, kite a wè si sa a sa m 'tout bon jwenn.
Fè flote-0 menm dosye.
./floats-0.
Se pou nou rale nan sou repons lan dramatik.
Tout tan sa a, ou ve yo te panse 1 divize pa 10 se 10%, oswa 0.1.
Li pa.
Omwen byen lwen tèlman kòm nan òdinatè a konsène.
>> Koulye a, why-- OK, sa a, se konplè manti 1 divize pa 10 se 0.1.
Men, why-- ki pa Takeaway a jodi a.
Se konsa, poukisa òdinatè a panse, kontrèman ak tout moun nan nou nan chanm nan,
ki 1 divize pa 10 se aktyèlman ke valè fou?
Ki sa ki nan òdinatè a ap fè aparamman?
Ki sa ki nan sa?
>> Li pa nan debòde, se pou chak.
Debòde se tipikman lè ou vlope toutotou yon valè.
Li nan pwoblèm sa a nan enpresizyon nan yon valè pwen k ap flote
ki kote ou gen 32 sèlman oswa petèt menm 64 ti jan.
Men, si gen nan yon enfini Nimewo nan byen numéros
nimewo ak pwen desimal ak nimewo thereafter-- siman
ou pa ka reprezante tout nan yo.
Se konsa, te òdinatè a bay nou matche ak la ki pi pre
nan valè a li ka reprezante lè l sèvi avèk ki anpil Bits nan valè a mwen aktyèlman vle,
ki se 0.1.
>> Malerezman, si ou kòmanse fè matematik, oswa ou
kòmanse ki enplike sa yo kalite k ap flote valè pwen nan programs-- enpòtan
lojisyèl finansye, militè anyen software--
ki kote pèsepsyon se pwobableman trè enpòtan.
Epi ou kòmanse ajoute nimewo tankou sa a, ak nan kòmansman
kouri ke lojisyèl ak entrain reyèlman gwo
oswa pou anpil nan èdtan oswa anpil nan jou oswa anpil nan ane sa yo,
sa yo ti erè ti kras siman ka ajoute moute sou tan.
>> Koulye a, kòm yon sou kote, si ou te janm wè devni selèb 3 oswa Biwo Espas
epi ou ta ka sonje ki jan neg sa yo te vòlè
yon anpil nan lajan ki sòti nan òdinatè yo lè l sèvi avèk valè pwen k ap flote
epi ajoute moute ti kras nan rès, èspere ke ke fim
kounye a fè sans pi plis.
Sa a se sa yo te ou evoke nan ki fim.
Lefèt ke pi fò konpayi yo pa ta gade
apre yon kantite sèten nan kote desimal,
men sa yo se fraksyon nan santim.
Se konsa, ou kòmanse ajoute yo moute, ou kòmanse fè yon anpil lajan
nan kont labank ou.
Se konsa, se Biwo Espas eksplike.
>> Koulye a, malerezman pi lwen pase Biwo Espas, gen
yo se kèk legalman boulvèsan ak enpak siyifikatif
nan sa yo kalite desizyon konsepsyon kache,
ak tout bon youn nan rezon ki nou itilize C nan kou a
se konsa ke ou reyèlman gen sa a tè moute konesans de kòman òdinatè travay,
ki jan lojisyèl ap travay, epi pa fè sa pran anyen pou yo akòde.
>> Ak tout bon malerezman, menm avèk ki konpreyansyon fondamantal,
nou moun fè erè.
Epi ki sa mwen te panse mwen ta pataje se videyo sa a uit minit isit la pran
soti nan yon Episode mervey modèn, ki se yon montre edikasyonèl sou ki jan bagay sa yo travay
ki pentire de foto nan lè yon itilizasyon move
ak konpreyansyon yo genyen sou valè pwen k ap flote
mennen nan kèk enpòtan rezilta malere.
Se pou nou pran yon gade.
[Lèktur VIDEO]
-Nou Kounye a retounen nan "Jeni Dezas "sou mervey modèn.
Odinatè.
Nou te tout vini nan aksepte nan pwoblèm souvan fwistre ki
te resevwa ak them-- pinèz, viris, ak lojisyèl glitches-- pou pri ti
pou peye pou konvenyans la.
Men, nan gwo teknoloji ak gwo vitès pwogram espas militè yo ak aplikasyon pou,
pwoblèm nan pi piti kapab gen gwo pouvwa nan dezas.
>> Sou, 4 jen 1996, syantis prepare yo lanse yon sans aryan 5 fize.
Li te pote syantifik satelit ki fèt
yo etabli jisteman la ki jan Reyaji jaden mayetik Latè a
ak van solè.
Te fize a bati pou Ajans la Espas Ewopeyen an,
ak leve koupe soti nan etablisman li yo sou kòt la nan franse gwiyane.
>> -at Sou 37 segonn nan vòl la, yo te premye
remake yon bagay te ale mal.
Sa ajutaj yo te tournan nan yon fason yo te reyèlman pa ta dwe.
Anviwon 40 segonn nan vòl la, klèman veyikil la te nan tray,
e ke sa a lè yo te fè desizyon an detwi l '.
Ofisye a sekirite ranje, ak entesten fòmidab, bourade bouton an
ak kònen moute fize a anvan li te kapab vin yon danje nan sekirite piblik.
>> -Sa A te jenn fi a vwayaj nan aryan 5 an,
ak destriksyon li yo te pran mete paske nan defo nan
entegre nan lojisyèl fize la.
Anpalan de pwoblèm ki nan la Aryan te ke gen
te yon nimewo ki te mande pou 64 Bits yo eksprime,
epi yo te vle konvèti li nan yon nimewo 16-ti jan.
Yo sipoze ke nimewo a te janm ale nan dwe trè gwo.
Ki pi fò nan tout sa yo chif nan nimewo a 64-ti jan yo te zewo.
Yo te sa ki mal.
>> Anpalan de enkapasite nan yon sèl pwogram lojisyèl yo aksepte
kalite a nan nimewo ki te pwodwi pa yon lòt te nan rasin lan nan fayit la.
Devlopman lojisyèl te vin tounen yon trè koute chè yon pati nan nouvo teknoloji.
Fize a aryan 4 te gen gen anpil siksè.
Se konsa, anpil nan lojisyèl an kreye pou li te tou yo itilize nan aryan a 5.
>> Pwoblèm -La debaz te ke aryan a 5.
Te faster-- akselere pi vit, ak lojisyèl an pa t 'matirite pou sa.
>> Anpalan de destriksyon nan fize a te yon gwo dezas finansye.
Tout akòz yon erè lojisyèl minit.
Men, sa pa te premye a tan pwoblèm konvèsyon done
te gwo malè tonbe sou teknoloji modèn fize.
>> -Nan 1991 ak nan kòmansman an nan lagè nan premye Gòlf la,
misil a Patriot ki gen eksperyans yon kalite ki sanble
nan yon pwoblèm konvèsyon nimewo.
E kòm yon rezilta 28 people-- 28 Soldiers-- Ameriken yo te touye yo,
ak sou yon santèn lòt moun blese.
Lè Patriot la, ki te sipoze nan pwoteje kont Scuds fèk ap rantre,
echwe pou pou tire yon misil.
>> -Lè Irak te anvayi Kowet, ak Amerik te lanse Tanpèt Dezè byen bonè nan mwa 1991,
Patriot pil misil yo te deplwaye pwoteje Arabi Saoudit ak pèp Izrayèl la
soti nan irakyen Scud misil atak.
Patriot la se yon US medyòm-ranje sifas-a-lè sistèm
manifaktire pa konpayi an Raytheon.
>> Gwosè -La nan Patriot la entèrsèpsyon itself--
li a sou apeprè 20 pye nan longè, epi li peze sou 2,000 liv.
Epi li pote yon tèt degè a sou, Mwen panse ke li nan apeprè 150 liv.
Ak tèt degè a li menm se yon eksplozif segondè, ki
gen fragman bò kote l '.
Se konsa, bwat la nan tèt degè a se ki fèt yo aji tankou yon plon.
>> Misil -La yo te pote kat pou chak veso,
, epi yo transpòte pa yon trelè semi.
>> Sistèm -La Patriot anti-misil ale tounen omwen 20 ane kounye a.
Li te orijinèlman fèt kòm yon misil defans lè
tire desann avyon lènmi.
Nan premye Lagè Gòlf la lè lagè sa a te vin sou li a,
Lame a te vle sèvi ak li nan tire desann Scuds, pa avyon.
Irak Air Force la te pa konsa pou sa anpil nan yon pwoblèm,
men Lame a te enkyete w sou Scuds.
Se konsa, yo te eseye ajou Patriot la.
>> -Intercepting Yon lènmi misil vwayaje nan Mach 5
te ale yo dwe defi ase.
Men, lè Patriot la te pwese kouri nan sèvis,
Lame a pa t 'okouran de yon modifikasyon irakyen ki
te fè yo Scuds prèske enposib nan li.
>> -Ki Te pase se Scuds yo ki yo te vini nan te enstab.
Yo te tranble.
Rezon ki fè la pou sa a te Iraqis-- yo yo nan lòd jwenn 600 kilomèt soti
nan yon 300-kilomèt seri missile-- pran pwa soti nan tèt degè a devan,
yo e te fè tèt degè a pi lejè.
Se konsa, kounye a nan Patriot ap eseye vin nan Scud a, ak pi fò nan time-- la
majorite nan mal nan la time-- li ta jis vole pa Scud la.
>> -Yon Fwa operatè yo sistèm Patriot reyalize Patriot la rate sib li yo,
yo detounen tèt degè Patriot la pou fè pou evite aksidan posib si li
te pèmèt li tonbe atè a.
>> -Sa Se sa ki te pi fò moun te wè kòm fireballs gwo nan syèl la,
ak konpwann kòm segman aks dèz nan Scud tèt de gè.
>> Br-Malgre nan syèl la lannwit, Patriyòt parèt yo dwe avèk siksè detwi
Scuds, nan Dhahran ta kapab gen okenn erè sou pèfòmans li yo.
Gen sistèm rada Patriot la pèdi tras nan yon Scud fèk ap rantre
epi pa janm te lanse akòz yon defo lojisyèl.
>> Li te Izrayelyen yo ki moun ki premye dekouvri ki pi long sistèm lan nan te sou li a,
pi gwo a Diferans la tan te vin.
Akòz yon revèy embedded nan òdinatè sistèm nan.
>> -About De semèn anvan trajedi a nan Dhahran,
Izrayelyen yo rapòte bay Depatman Defans lan
ke sistèm la te pèdi tan.
Apre apeprè uit èdtan nan kouri, yo remake
ke sistèm la a vin notables mwens egzat.
Depatman Defans lan reponn pa di tout pil yo Patriot
pa kite sistèm yo sou pou yon tan long.
Yo pa janm di sa ki yon bon bout tan te.
8 èdtan, 10 èdtan, yon mil èdtan.
Okenn moun pa te konnen.
>> Batri -La Patriot estasyone nan kazèn lan
nan Dhahran ak defekte entèn li yo te revèy te sou pou plis pase 100 èdtan
sou nwit la la nan 25 mwa fevriye a.
>> -Li Suivi tan nan yon presizyon a sou yon dizyèm nan yon dezyèm fwa.
Koulye a, yon dizyèm nan yon dezyèm se yon nimewo enteresan
paske li pa kapab eksprime nan binè egzakteman, ki
vle di li pa ka eksprime egzakteman nan nenpòt òdinatè modèn dijital.
Li difisil yo kwè, men itilize sa a kòm yon egzanp.
>> Se pou nou pran twazyèm lan nimewo yon sèl.
Yon tyè pa kapab eksprime an desimal egzakteman.
Yon tyè se 0,333 ale sou pou Infinity.
Genyen nan okenn fason yo fè sa ak presizyon absoli nan yon desimal.
Sa a se egzakteman ki kalite pwoblèm ki te rive nan Patriot la.
Sistèm nan nan pi long kouri, a vin pi mal erè nan tan te vin.
>> -Apre 100 èdtan de operasyon, an erè nan tan te sèlman apeprè yon tyè
nan yon dezyèm fwa.
Men, an tèm de vize yon misil vwayaje nan Mach 5,
li a nan yon Suivi erè nan plis pase 600 mèt.
Li ta yon erè fatal pou sòlda yo nan Dhahran.
>> -Ki Rive se yon lansman Scud te detekte avèk satelit avètisman bonè,
epi yo te konnen yon Scud te vini nan yon direksyon jeneral yo.
Yo pa t 'konnen ki kote li te vini yo.
Li te kounye a jiska rada a eleman ki nan sistèm lan Patriot
defann Dhahran jwenn epi kenbe tras nan misil nan lènmi fèk ap rantre.
>> Anpalan de rada te trè entelijan.
Li ta aktyèlman swiv pozisyon nan Scud a
ak Lè sa a predi ki kote li pwobableman ta dwe
tan an pwochen an rada voye yon batman kè deyò.
Ki te rele pòtay lavil la pòte.
>> -Lè Yon fwa Patriot la deside ase tan gen
te pase yo ale retounen lakay yo epi tcheke pwochen an kote pou sa a objè detekte
li ale tounen.
Se konsa, lè li te ale tounen nan sa ki mal la plas, li Lè sa a, wè pa gen okenn objè.
Epi li deside ke pa te gen okenn objè.
Ke te gen yon deteksyon fo epi li desann track la.
>> Anpalan de fèk ap rantre Scud disparèt soti nan ekran an rada,
ak segonn pita, li te kriye byen fò nan kazèn lan.
Scud a touye 28.
Li te youn nan dènye te tire pandan Lagè nan premye Gòlf la.
Trajik, lojisyèl an mete ajou te rive nan dimanch maten byen bonè nan jou sa a.
Defo nan lojisyèl te gen te fiks, fèmen
yon chapit nan boulvèse a istwa nan misil a Patriyòt.
>> [Lèktur videyo END]
>> DAVID J. Malan: Sa a li pou CS50.
Nou pral wè ou nan Mèkredi.
>> [Jwe mizik]