DOUG Lloyd: Në rregull.
Pra, tani le të trajtuar një Tema me të vërtetë e madhe, funksionet.
Deri më tani në kurs, të gjitha programe të cilat ne kemi qenë shkruar
janë shkruar brenda kryesor.
Ata janë programe shumë e thjeshtë.
Ju nuk duhet të ketë të gjitha këto degët dhe gjëra në vazhdim e sipër.
Ne mund të përshtatet vetëm të gjitha brenda kryesor dhe ajo
nuk ka marrë tmerrësisht e madhe.
Por si kurs vazhdon dhe si ju të fillojnë të zhvillojnë programe
në mënyrë të pavarur, ata ndoshta do për të filluar për të marrë shumë më tepër se 10
ose 15 rreshta.
Ju mund të merrni qindra e mijëra apo dhjetëra mijëra rreshta të kodit.
Dhe kjo nuk është e vërtetë se i çmendur një mendim.
Si e tillë, kjo ndoshta nuk është një ide e mirë për të mbajtur çdo gjë brenda e kryesore.
Ajo mund të merrni një pak e vështirë për të gjetur atë që ju po kërkoni në qoftë se ju bëni atë.
>> Për fat të mirë, edhe pse C, dhe shumë e shumë çdo gjuhë tjetër programimi që
mund të punojnë me të, lejon na për të shkruar funksione.
Dhe unë jam vetëm do të të marrë një të shpejtë mënjanë këtu
të përmendet se funksionon është një fushë e shkencave kompjuterike.
Dhe ju do të shihni shumë më tepër prej tyre në pika të ndryshme gjatë gjithë kursit
dhe në qoftë se ju vazhdoni në.
Ku ka një shumë të sinonime për të njëjtën fjalë.
Pra, ne e quajmë funksionet.
Por ju gjithashtu mund të dëgjojnë ata të referuara si procedurat,
ose metoda, veçanërisht, në qoftë se ju keni ndonjëherë bërë ndonjë programimit të orientuar objekt
më herët, dhe mos u bëni merak në qoftë se ju nuk e, nuk kanë
një deal-- i madh, por në Gjuhë të auditimit të orientuar
janë quajtur shpesh metoda.
Ndonjëherë ata janë quajtur nënprocedurat.
Por ata me të vërtetë të gjithë i referohen në të njëjtën ide themelore.
>> Le të shohim se çfarë ideja është.
Çfarë është një funksion?
Edhe një funksion është me të vërtetë asgjë më shumë se një kuti e zezë.
Një kuti që i zi ka një grup të zero ose më shumë inputet dhe një dalje të vetme.
Kështu për shembull, kjo mund të jetë një funksion.
Ky është një funksion i quajtur funk.
Dhe kjo merr tre inputeve a, b, dhe c.
Dhe brenda atë kuti e zezë, ne nuk e di saktësisht se çfarë e bën atë,
por ajo përpunon inpute në një farë mënyre dhe pastaj ajo
jep një dalje të vetme, në këtë rast, z.
Tani për ta bërë atë një pak më pak abstrakte, ne
mund të them se ndoshta ne kanë një funksion të quajtur
shtoj se merr tre inputeve a, b, dhe c dhe proceset e prodhimit në një farë mënyre
brenda kutinë e zezë të prodhojnë një dalje të vetme.
Pra, në këtë rast, në qoftë se shtoni merr 3, 6, dhe 7.
Diku brenda shtoni funksion, ne do
presim që ato të shtohen së bashku për të prodhuar prodhimit, e cila
është 3 plus 6 plus 7 ose 16.
>> Në mënyrë të ngjashme, ju keni një funksion të quajtur mult që merr dy inpute, a dhe b,
përpunon ato në një farë mënyrë të tillë se prodhimi i funksionit
është produkt i dy inputeve.
Të dy inputeve shumëzuar së bashku.
4 dhe 5 duke kaluar në mult, diçka ndodh, e prodhimit ne presim
është 20.
Përse ne e quajmë atë një kuti e zezë?
E pra në qoftë se ne nuk jemi të shkruar funksionon veten, e cila
ne kemi bërë mjaft pak deri tani CS50.
Ne kemi parë të shtypura f, për shembull, të cilat është një funksion që nuk e ka shkruar
veten, por ne e përdorim gjatë gjithë kohës.
Në qoftë se ne nuk jemi të shkruar funksionet veten tonë,
ne nuk duhet të vërtetë të dini se si është në fakt zbatohet nën kapuç.
>> Kështu për shembull kuti e zezë I vetëm ju tregoi për shumëzim,
mult a, b mund të jetë defined-- dhe kjo është vetëm
disa pseudocode-- mund të jetë përkufizohet si prodhimi një herë b.
Që ka kuptim, apo jo.
Në qoftë se ne kemi një funksion të quajtur mult që merr dy inpute.
Ne do të presim se prodhimi do të të jenë të dy inputeve shumëzuar së bashku,
një herë b.
Por mult mund të jetë zbatuar si kjo,
ne kemi një kundër variabël të të vendosur brenda mult në 0.
Dhe pastaj ne përsëris këtë proces b herë shtoni në banak.
Për shembull, nëse ne shumohen 3a nga 5b, mund të themi vendosur në kundërshtim me 0,
përsëritur pesë herë, shtoni 3 në banak.
Pra, ne të fillojë në 0 dhe pastaj ne të bëjmë këtë pesë herë 3, 6, 9, 12, 15.
Është i njëjti rezultat. Ne ende të marrë 3 herë 5 vetëm
zbatimi është i ndryshëm.
>> Kjo është ajo që ne do të thotë kur themi një kuti të zezë.
Kjo thjesht do të thotë që ne nuk e kujdesit të vërtetë se si është zbatuar nën kapuç
për sa kohë që prodhimi është ajo që ne presim.
Në fakt, kjo është pjesë e kontratës e duke përdorur funksionet, në veçanti
Funksionet që të tjerët shkruajnë.
Sjellja është gjithmonë do të jetë tipike, të paparashikueshme
bazuar në emri i funksionit.
Dhe kjo është arsyeja pse ajo është me të vërtetë e rëndësishme kur ju shkruani funksionet
ose kur njerëzit e tjerë shkruajnë funksionet që ju mund të përdorni,
se ato funksione kanë , emrat e qartë relativisht të dukshme,
dhe janë të dokumentuara mirë.
E cila është sigurisht rasti për funksionin si të shtypura f.
>> Pra, pse nuk kemi përdorim funksione?
Edhe siç thashë më parë, në qoftë se kemi shkruar të gjithë e kodit tonë brenda gjërat kryesore
mund të merrni të vërtetë të rëndë dhe me të vërtetë e komplikuar.
Funksionet na lejojë mundësinë për të organizuar gjërat dhe të prishur
një problem shumë i komplikuar në shumë pjesë më shumë i dëgjueshëm nën.
Funksionet gjithashtu na lejojë të lehtësuar procesin e kodimit.
Kjo është një shumë më e lehtë për të korrigjoj një 10 Funksioni linjë kundrejt një linjë 100
Funksioni ose një funksion 1000 linjë.
Në qoftë se ne kemi vetëm të korrigjoj copa të vogla në një kohë,
ose shkruani copa të vogla në atë kohë, kjo e bën këtë përvojë programimit
shumë më mirë.
Trust mua për këtë një të tillë.
>> Së fundi, në qoftë se kemi shkruar funksione ne mund të ripërdorimin ato pjesë të ndryshme.
Funksionet mund të riciklohen.
Ato mund të përdoren në një program apo një tjetër.
Ju keni shkruar tashmë funksioni, të gjithë ju
duhet të bëni është të tregoni atë program ku mund të gjeni atë funksion.
Ne kemi qenë të riciklimit dhe duke përdorur shtypura f për mbi 40 vjet.
Por ajo ishte shkruar vetëm një herë.
Shumë e dobishme, e drejtë.
Në rregull.
Pra, funksionet janë të mëdha.
Ne e dimë se.
Tani le të filloj të shkruaj ato.
Le të fillojë duke marrë ata në programet tona.
Në mënyrë që të bëjë këtë, i pari gjë që ne bëjmë është të deklarojë funksionin.
Kur ju të deklarojë një funksion çfarë jeni duke bërë në thelb
është thënë përpiluesit, hej, vetëm kështu që ju e dini,
Unë jam duke shkuar për të shkruar një funksion më vonë
dhe këtu është ajo që ajo do të duken si.
Arsyeja për këtë është sepse hartuesit mund
të bëjë disa gjëra të çuditshme në qoftë se ata shohin një grup të simboleve
se ata nuk jeni të njohur me të.
Pra, ne vetëm të japë përpilues â kokat lart, unë jam duke krijuar një funksion
dhe kjo do të bëjë këtë.
Deklaratat Funksioni përgjithësi, nëse ju jeni organizimin kodin tuaj në një mënyrë të
që të tjerët do të jenë në gjendje të të kuptojnë dhe të përdorni,
ju zakonisht dëshironi të vënë të gjitha i deklaratave tuaja funksion
në krye të kodit tuaj, e drejtë përpara se të filloni të shkruani kryesor edhe.
Dhe të përshtatshme, nuk ka një formë shumë standarde
se çdo deklaratë funksion më poshtë.
Ata të gjithë pretty much të duket si ky.
Ka tri pjesë në një funksion Deklarata, lloj kthimi, emri,
dhe lista argumenti.
>> Tani lloji kthimi është se çfarë lloj i variabël prodhimi funksion do.
Kështu për shembull, në qoftë se ne mendojmë prapa një minutë më parë të shumëzuar dy
Numrat funksion, çfarë të presim nëse ne shumohen një numër të plotë nga një numër i plotë
prodhimi do të jetë ndoshta një numër të plotë, të drejtë.
Shumëzuar dy numra të plotë së bashku, ju të merrni një numër të plotë.
Pra, llojin e kthimit që Funksioni do të int.
Emri është ajo që ju dëshironi për të thirrur funksionin tuaj.
Kjo është ndoshta më pak i rëndësishëm pjesë e deklaratës funksionit,
në kuptimin e funksionalitetit.
Por në fakt është ndoshta një nga pjesët më të rëndësishme
i deklaratës funksionit në aspektin e ditur se çfarë funksioni në të vërtetë
bën.
Nëse ju emrit të funksionit tuaj f apo g ose h ose mister ose diçka të tillë,
ju jeni me siguri do të merrni pak morën lart duke u përpjekur
për të kujtuar se çfarë bëjnë ato funksione.
Pra, është e rëndësishme për të dhënë tuaj emra kuptimplotë Funksionit së.
>> Së fundi, lista argument është presja ndara lista
e të gjitha inputeve në funksion tuaj, ku secili prej tyre ka një lloji dhe një emri.
Pra, jo vetëm që ju keni për të të specifikojë se çfarë lloji i variablit
prodhimi funksion do, ju gjithashtu duan të specifikojë
çfarë lloji dhe llojet e variablave të funksion do të jetë pranuar si inpute.
Pra, le të bëjmë një shembull këtu.
Le të marrin një vështrim në një më konkrete.
Kështu që këtu është një shembull i një funksioni Deklarata për një funksion që
do të shtojë dy integers së bashku.
Shuma e dy numrave të plotë do të të jetë një numër të plotë, si dhe, si ne vetëm
diskutuar.
Dhe kështu lloji kthimi, këtu në të gjelbër, do të int.
Kjo vetëm na se shtoni dy ints tregon do të, në fund të ditës,
prodhimit, ose fol prapa jashtë për ne, një numër të plotë.
Duke pasur parasysh se çfarë e bën këtë funksion ne doni të jepni një emër kuptimplotë.
Shtoni dy ints duket përshtatshme, duke marrë parasysh
ne jemi duke marrë dy integers si inpute dhe shpresojmë se duke shtuar ato së bashku.
Kjo mund të jetë pak e një rëndë Emri dhe sinqerisht ky funksion
ndoshta nuk është e nevojshme pasi ne kemi shtimin
operator, nëse ju kujtohet nga tonë Diskutimi i operatorëve, më parë.
Por le të them vetëm për hir të Argumenti se ky funksion është i dobishëm
dhe kështu që ne do të thërrasë atë shtoni dy ints.
Së fundi, ky funksion merr dy inpute.
Secili prej të cilëve është një numër i plotë.
Pra, ne kemi këtë presje Lista e ndara të inputeve.
Tani ne përgjithësi duam të jepni një emër për secilin prej tyre
në mënyrë që ata mund të përdoret brenda funksionit.
Emrat nuk janë tmerrësisht të rëndësishme.
>> Në këtë rast, ne nuk domosdoshmërisht të ketë ndonjë kuptim bashkangjitur me ta.
Pra, ne vetëm mund të telefononi ata a dhe b.
Kjo është krejtësisht në rregull.
Nëse megjithatë, ju gjeni veten në një situatë
ku emrat e variablave në fakt mund të jetë e rëndësishme,
ju mund të dëshironi të telefononi ata diçka tjetër se a dhe b
për t'i dhënë atyre diçka më shumë simbolikisht kuptimplotë.
Por në këtë rast, ne nuk të vërtetë di ndonjë gjë tjetër për funksionin.
Ne vetëm duam të shtoni dy numra të plotë.
Pra, ne do të vetëm thirrje ato numra te plote a dhe b.
Kjo është një shembull.
>> Pse nuk keni marrë një të dytë për të menduar për këtë,
si do ju shkruani një funksion Deklarata për një funksion që
shumëfishon dy numra lundrues point?
A ju kujtohet se çfarë është një lundrues numër pikë është?
Çfarë do të këtë funksion Deklarata duken si?
Unë në fakt ju rekomandojmë që të bëj një pauzë video këtu dhe për të marrë se sa kohë ju nevojitet.
Mendoni për atë që kjo Deklarata funksion do të jetë?
Çfarë do të jetë lloji kthimi?
Çfarë do një emër kuptimplotë të jetë?
Çfarë do të jetë inputet?
Pra, pse nuk ju pauzë video të këtu dhe shkruaj-up një deklaratë funksion
për një funksion që do të shumohen Dy lundrues numra pikë së bashku.
Shpresojmë që ju bëri një pauzë video.
>> Pra, le të marrin një vështrim në një shembull e një deklarate të mundshëm.
Noton dy reals mult noton x, y noton.
Produkti i dy lundrues numrat pikë,
të cilat janë të kujtojnë se si ne përfaqësojnë numrat reale
ose numrat me vlera dhjetore në C, do të jetë një numër lundrues pikë.
Kur ju shumohen një dhjetor me një decimal të,
ju jeni me siguri do të merrni një decimal.
Ju dëshironi të jepni një emër përkatës.
Multiply dy reals duket gjobë.
Por ju mund të vërtetë të telefononi atë Dy gjithandej mult, ose gjithandej mult.
Diçka të tillë, për aq kohë sa dha disa kuptimin e vërtetë për atë që
kjo kuti e zezë ishte duke shkuar për të bërë.
Dhe përsëri, në këtë rast, ne nuk bëjmë duket të ketë ndonjë kuptim bashkangjitur
për emrat e të Variablat ne jemi duke kaluar në,
kështu që ne vetëm thirrje atyre x dhe y.
Tani në qoftë se ju e quani ata diçka tjetër, kjo është krejtësisht në rregull.
Në fakt, në qoftë se keni kryer kjo deklaratë në vend
duke përdorur dyshe vend e gjithandej, në qoftë se ju kujtohet
se dyshe janë një tjetër mënyrë për të më saktësisht
specifikoni numrat reale ose lundrues variablave pikë.
Kjo është krejtësisht në rregull shumë.
Ose një nga ata që do të jetë mirë.
Në fakt, ka disa kombinime të ndryshme
mënyra për të deklaruar këtë funksion.
Por këto janë dy të mjaft të mirë.
Ne kemi deklaruar një funksion, që është e madhe.
Ne e kemi thënë përpiluesit atë që është, ajo që ne jemi duke shkuar për të bërë.
Tani le të vërtetë të shkruajë atë funksion.
Le t'i jepte një përkufizim, në mënyrë që brenda kutisë zi
Sjellja e parashikueshme po ndodh.
Në fakt, ne jemi shumëzuar dy të vërtetë numra së bashku, ose numrat e shtuar
së bashku, ose duke bërë çfarëdo qoftë ajo është që kemi kërkuar funksionin tonë për të bërë.
>> Pra, në fakt, le të përpiqemi dhe të përcaktojë shumohen dy reals të cilat ne vetëm
foli për një të dytë më parë.
Tani fillimi i një përkufizim funksion
duket pothuajse saktësisht të njëjtën si një deklaratë funksion.
Unë kam dy prej tyre këtu.
Në krye është deklarata funksioni, llojin, emrin, nda me presje argumenti
lista, pikëpresje.
Pikëpresje tregon se që është një deklaratë funksion.
Fillimi i funksionit përkufizim duket pothuajse tamam
të njëjtën gjë, llojin, emrin, nda me presje Lista Argumenti, nuk ka pikëpresje,
hapur mbajtëse kaçurrel.
Mbajtëse hapur kaçurrel, ashtu si ne kemi qenë duke bërë me kryesor,
do të thotë se ne jemi tani duke filluar për të përcaktuar
çfarë ndodh brenda kutinë e zezë që ne kemi vendosur për të thirrur dy reals mult.
Këtu është një mënyrë për ta zbatuar atë.
Ne mund të themi, ne mund të deklarojë një të ri variabël i tipit noton quajtur produktin
dhe të caktojë se ndryshueshme me vlerën x herë y.
Dhe pastaj të kthehen produkt.
Çfarë do të thotë kthimi këtu.
Edhe kthimi është mënyra ne tregojnë se është si
ne jemi duke kaluar prodhimi mbështetur jashtë.
Pra kthehen diçka, është e njëjtë si, kjo është prodhimi i kutia e zezë.
Pra, kjo është se si ju bëni atë.
Këtu është një mënyrë tjetër për ta zbatuar atë.
Ne vetëm mund të kthehet x herë y.
x është një noton.
y është një pluskues.
Pra, x herë y është gjithashtu një noton.
Ne nuk kemi nevojë as për të krijojë një tjetër ndryshore.
Pra, kjo është një mënyrë të ndryshme për të zbatojë kutinë e saktë të njëjtën e zezë.
>> Tani të marrë një moment, pauzë video përsëri,
dhe të përpiqen dhe të përcaktojë shtoni dy ints, i cili është funksioni tjetër që
foli për një moment më parë.
Përsëri këtu, unë kam vënë funksionin Deklarata, dhe kështu pikëpresje,
dhe një mbajtëse të hapur kaçurrel dhe një kaçurrel mbyllur
mbajtëse për të treguar se ku ne do të mbushë në përmbajtjen e shtoni dy ints,
kështu që ne define veçanti Sjellja brenda kutinë e zezë.
Pra pauzë video.
Dhe të marrë sa më shumë kohë ju duhet të përpiqen dhe të përcaktojë
një zbatim i shtoni dy ints, të tilla se kur funksioni nxjerr një vlerë,
e bën atë, në fakt, kthimi shuma e dy inputeve.
Pra, ashtu si shembullin e mëparshëm, ka disa mënyra të ndryshme
që ju të mund të zbatojë shtoni dy ints.
Këtu është një.
Në këtu në portokalli kam vetëm kishte disa comments--
Unë kam shtuar vetëm disa Komente për të treguar
çfarë po ndodh në secilën linjë të kodit.
Kështu që unë deklaroj një ndryshore quhet shuma e tipit int.
Unë them shuma e barabartë me një plus b.
Kjo është ajo ku ne jemi të vërtetë duke bërë puna duke shtuar një dhe b së bashku.
Dhe kthehem shumë.
Dhe kjo ka kuptim, sepse shuma është një variabël i tipit int.
Dhe çfarë është të dhënat e tipit që ky Funksioni më thotë se do të prodhimit?
Int.
Kështu që unë jam kthyer shumën, e cila eshte nje numer i plote i ndryshueshëm.
Dhe kjo ka kuptim duke pasur parasysh atë që ne kemi shpallur dhe përcaktuar funksionin tonë
për të bërë.
>> Tani ju mund të përcaktojë funksioni në këtë mënyrë,
int shuma e barabartë me një plus b-- kaloni atë së pari step-- dhe pastaj, shumë kthehen.
Tani ju mund të ketë edhe zbatuar në këtë mënyrë,
që I highly nuk e rekomandojmë.
Ky është stili i keq për një gjë dhe dizajn të vërtetë e keqe,
por e bën atë, në fakt, punë.
Nëse ju merrni këtë kod, i cili është int shtoni keq nepërkë dot c, dhe e përdorin atë.
Ajo në fakt ka shtuar dy integers së bashku.
Kjo është një zbatim shumë të varfër i kësaj sjellje të veçantë.
Por ajo funksionon.
Është vetëm këtu për të ilustruar pika që ne nuk të vërtetë
intereson se çfarë ndodh brenda kutia e zezë, për aq kohë
pasi ajo ka dalje që ne presim.
Kjo është një kuti dizajnuar dobët e zezë.
Por në fund një ditë, ajo bën Prodhimi ende shuma e një plus b.
Në rregull.
Pra, ne kemi deklaruar funksione.
Dhe ne kemi përcaktuar funksionin.
Pra, kjo është me të vërtetë mirë.
Tani le të fillojnë të përdorin funksionet që ne kemi deklaruar dhe kemi përcaktuar.
Për t'i telefonuar një function-- është e vërtetë goxha easy-- të gjithë ju duhet të bëni
është të kalojë atë argumentet e duhura, Argumentet e tipit të të dhënave
se ajo pret, dhe pastaj të caktojë kthimin
Vlera e atë funksion dhe this-- justifikim me--
të caktojë vlerën e kthimit e atë funksion për diçka të tipit saktë.
>> Pra, le të kemi një vështrim në kjo në praktikë në një skedar
quajtur nepërkë 1 pikë c, e cila Unë kam në IDE time CS50.
Kështu që këtu është nepërkë 1 dot c.
Në fillim ju shihni se unë kam im përfshin, mina përfshijnë,
standarde IO, dhe CS50 dot h.
Dhe atëherë unë kam deklaratën time funksion.
Kjo është ajo ku unë jam thënë përpiluesit unë jam
do të jetë me shkrim një Funksioni i quajtur shtoni dy ints.
Ajo do të REZULTATI Një variabël të tipit integer.
Kjo është ajo që kjo pjesë është e drejtë këtu.
Dhe atëherë unë kam dy inpute në të një dhe b, secila prej të cilave është një numër i plotë.
Brenda kryesor, unë kërkojë nga shfrytëzuesi për të dhëna duke thënë, më jepni një numër të plotë.
Dhe ata janë të nxitet për ta harroj int, e cila është një funksion që
është përfshirë në bibliotekë CS50.
Dhe që merr ruajtur në x, një variable integer.
>> Pastaj ne të shkaktonte ato për një numër të plotë.
Ne kemi marrë një numër i plotë dhe dyqan se në y.
Dhe pastaj, këtu on line 28, është ku ne kemi bërë thirrjen tonë funksion.
Ne jemi duke thënë, është e barabartë int z shtoni 2 ints x presje y.
A e shihni se pse kjo ka kuptim?
x është një numër i plotë dhe variable type y është një numër i plotë variable tipi.
Pra, kjo është e mirë.
Që e bëjnë kuptim me atë funksion tonë Deklarata on line 17 duket si.
Presja ndara Lista input pret dy numra të plotë, a dhe b.
Në këtë rast, ne mund ta quajmë ata çdo gjë që ne duam.
Ajo thjesht pret dy integers.
Dhe x është një numër i plotë dhe y është një numër i plotë.
Që punon.
>> Dhe ne e dimë se funksioni do të prodhimit një integers si.
Dhe kështu që ne jemi ruajtjen e të Prodhimin e funksionit,
shtoni dy ints, në një lloj integer ndryshueshme, të cilat ne jemi duke bërë thirrje z.
Dhe atëherë mund të themi, shuma e për qind i dhe qind për qind i është i.
x, y dhe z respektivisht plotësuar ato për qind unë së.
Cili është përkufizimi i shtoni dy Ints duken si?
Është shumë e thjeshtë.
Kjo është një nga ato që vetëm e pa një të dytë më parë,
shuma int barabartë me një shumë plus kthimin b.
E bën këtë punë?
Le të ruajtur kartelën.
Dhe pastaj këtu poshtë në terminalin e mia Unë jam duke shkuar për të bërë adder 1,
dhe me i fshirë ekranin tim.
Unë jam duke shkuar për të zoom në, sepse unë e di kjo është pak e vështirë për të parë.
>> Pra, ne hartojnë këtë program si kuçedër 1.
Pra, ne mund të bëjmë dot slash nëpërkë 1.
Më jepni një numër të plotë, 10.
Më jep një numër i plotë, 20.
Shuma e 10 dhe 20 është 30.
Pra, kemi bërë një telefonatë të suksesshme funksion.
Ju mund të kandidojë funksionin përsëri, negative 10, 17 shuma e negativ 10 dhe 17 është 7.
Ky funksion punon.
Ajo ka sjellje që ne presim që ajo të.
Dhe kështu që ne kemi bërë një të suksesshëm funksion, përkufizim, deklarata,
dhe një telefonatë e suksesshme funksion.
Çifti Ndryshme pikë për funksionet
para se të përfundojmë këtë seksion.
Kujtojnë nga tonë Diskutimi i llojeve të të dhënave,
më parë, që funksionon nganjëherë mund të marrë asnjë inputeve.
Në qoftë se është rasti, ne deklaroj funksionin
si paturit e një liste argumenti i pavlefshëm.
A ju kujtohet çfarë Funksioni më i zakonshëm
ne kemi parë deri më tani që merr një listë argument i pavlefshëm është?
Kjo është kryesore.
Kujtojnë gjithashtu se funksioni nganjëherë në fakt nuk kemi një prodhim.
Në këtë rast, ne shpallim funksionin si të paturit e një lloj kthimi i pavlefshëm.
Le të përfundojmë këtë pjesë duke trajtimit të problemit praktikë.
>> Kështu që këtu është problemi paraqitura.
Unë dua që ju të shkruani një funksion quhet trekëndësh i vlefshëm.
Çfarë ky funksion duhet të bëjë është marrë tre numrave reale
që përfaqësojnë gjatesite e tre anët e një trekëndësh si parametrat e tij,
ose argumentet e tij, apo të saj inputs-- një sërë sinonimet
që ju mund të hasni.
Ky funksion duhet ose prodhimit vërtetë apo e rreme
varësi të faktit nëse këto tre gjatësisë janë të afta për të bërë një trekëndëshi.
A ju kujtohet llojin e të dhënave që kemi përdorur për të treguar vërtetë apo e rreme?
Tani si mendoni ju të zbatojë këtë?
Edhe e dini ka disa e rregullave në lidhje me trekëndëshat
që janë në të vërtetë e dobishme të dinë.
Një trekëndësh mund të ketë vetëm anët me gjatësi pozitiv.
Kjo ka kuptim.
Ju ndoshta jeni duke thënë, duh.
Gjë tjetër të theksohet megjithatë, është se shuma
e gjatësisë së ndonjë dy anët e trekëndëshit
duhet të jetë më i madh se gjatësia e anës trete.
Kjo është në fakt e vërtetë.
Ju nuk mund të ketë një trekëndësh të palëve 1, 2 dhe 4, për shembull, për shkak se 1 plus 2
nuk është më i madh se 4.
Pra, këto janë rregullat që përcaktuar se nëse apo jo tre
inputeve mund të mendohet të formojnë një trekëndësh.
Pra, të marrë disa minuta dhe të deklarojë dhe pastaj të përcaktojë
ky funksion i quajtur të vlefshme trekëndësh, të tilla se ai në fakt
ka sjelljen e specifikuar këtu.
>> Ajo do të prodhimit e vërtetë në qoftë se këto tre anët janë të afta të përbërë nga një trekëndëshi,
dhe të rreme ndryshe Gatshme për të parë se si ju e bëri?
Këtu është një zbatim trekëndësh i vlefshëm.
Kjo nuk është e vetmja.
Juaji mund të ndryshojnë pak.
Por kjo e bën, në fakt, kanë sjellja që ne presim.
Ne deklarojmë funksionin tonë në shumë të lartë, bool trekëndësh vlefshme
noton noton x y noton z.
Pra, përsëri, ky funksion merr tre numrave reale
si argumente të saj, lundrues variabla me vlerë pikë,
dhe nxjerr një e vërtetë apo e rreme vlera, e cila është një Boolean, risjell.
Pra, kjo është arsyeja pse lloji kthimi është bool.
Pastaj ne saktësimit të funksionit.
Gjëja e parë që bëni është të kontrolloni për t'u siguruar se të gjithë anët janë pozitive.
Nëse x është më e vogël se ose e barabartë me 0, y, ose nëse është e barabartë me 0,
ose kur z është më e vogël se ose e barabartë me 0, që nuk mund të jetë një trekëndësh.
Ata nuk kanë anët pozitive.
Dhe kështu që ne mund të kthehen rreme në atë situatë.
Tjetra, ne kontrolloni për t'u siguruar që çdo palë e inputeve
është më i madh se ai i trete.
>> Pra, nëse x plus y është më pak se ose e barabartë me z,
ose kur x plus z është më pak se ose e barabartë me y,
ose nese y plus z është më e vogël se ose e barabartë me x, që gjithashtu nuk mund të jetë një trekëndësh i vlefshëm.
Pra, ne kthimit të rreme përsëri.
Duke supozuar se kemi kaluar dy kontrollet Megjithatë, atëherë ne mund të kthehen vërtetë.
Sepse këto tre anët janë në gjendje të returning--
për krijimin e një trekëndësh të vlefshme.
Dhe kjo është ajo.
Ju keni deklaruar tani dhe të përcaktuara.
Dhe ju mund të jetë në gjendje për tani përdorin dhe e quajmë këtë funksion.
Punë e mrekullueshme.
Unë jam Doug Lloyd.
Kjo është CS50.