DavidErikMollberg/kennsluromur huggingface dataset:
Við þurfum alltaf að vera að hugsa um að nöfn séu lýsandi eigum við að segja get string from user
Er það ekki ágætisnafn
Það býður notandanum upp á að slá inn streng og ég þarf að taka við því
Það er niðurstaðan af því að kalla á input fallið með enter úps enter a string svona
Það hefur eingöngu það hlutverk að taka við inntaki frá notanda sem er strengur og skila því til baka ekkert annað
Og í þessu tilviki sjáið þið hér að þetta er dæmi svona um fall sem að tekur engan parameter það kemur ekkert hér inn
Við töluðum um það áður að föll geta tekið núll eða fleiri parametra
Já þannig að við ætlum að eiga okkur fall sem að heitir hvað eigum við að segja Count digits og hvað kemur inn
Ja það kemur einhvers konar strengur inn hérna
Við ætlum að senda strenginn inn og láta þetta fall telja tölustafina og skila því til baka
Hérna er talandi um það hvað hvert hlutverk er þá þá er náttúrulega algengt og í sjálfu sér mjög gott að vera með einhvers konar athugasemdir í tengslum við hvað föllin eru að gera og það er algengt að nota svona svokallaðan docstring sem eru svona þrjár gæsalappir þrjár einfaldar gæsalappir og hér kemur gæti ég sagt gets a string from the user and returns it
Hérna ma getur maður svo sem alltaf spurt sig Er ég að bæta einhverju sérstöku við hérna
Segir þetta komment eitthvað meira heldur en það sem stendur hér í kóðanum
Kóðinn er í sjálfu sér mjög einfaldur en við getum sagt sem svo að það sé algengt að og gott að gefa svona notandanum að gefa alltaf einhverja ei eina setningu eina til tvær setningar í lýsingu á því hvað fallið er að gera án þess að fara út í það nákvæmar hvað sérhver setning gerir hér ef að það er alveg augljóst sem það er í þessu tilviki
Nú count digits myndi þá vera counts counts the number of digits in the in a string getum við sagt bara and returns it
Eða er kannski betra að orða þetta svona
Returns the number the count of digits in a string
Þetta er það sem það skilar það skilar fjöldanum
Nú hvernig get ég komist að því ja hvernig get ég skilað fjöldanum
Og skoða fyrir sérhvern karakter í strengnum hvort hann er digit eða ekki
Þannig að við þurfum að ítra
Ég segi hérna for c h in a string tvípunktur ef c h er is digit
Þá ætla ég að hækka einhvern counter hérna plús samasem einn plús samasem einn
Og þá verð ég auðvitað að passa mig á því að núllstilla counterinn counter samasem núll
Þannig að ef að núverandi s karakter er tölustafur þá hækka ég count annars geri ég bara ekki neitt og þegar ég er búinn með þessa lykkju þá skila ég bara count er það ekki
Þannig að til dæmis ef að ég ef að þetta if þessi if setning verður aldrei true það eru engir tölustafir í þessum staf þá er count núll og ég mun skila bara núlli
Takið eftir því hérna ég hef eitt aukabil hérna á milli til þess að geta gera þetta aðeins læsilegra
Við höfum aðeins talað um það
Getur verið gott að setja aukabil inn í kóðann til að þetta verði ekki allt í belg og biðu
Og ef við ræðum aðeins þetta fall þá hefur þetta líka skýrt og afmarkað hlutverk er það ekki
Það hefur eingöngu það hlutverk að að telja fjölda tölustafa
Það kemur einhver strengur inn við ítrum yfir hann og skilum fjölda tölustafa í honum
Það er ekkert annað sem þetta fall gerir
Nú þá er ég búinn að leysa hvað fyrstu tvö hlutverkefni hérna
Síðasta hlutverkefnið er það að prenta út niðurstöðuna Það er nú svo einfalt hlutverk að ég þarf í sjálfu sér ekkert að búa til sér fall til að gera það
Hvað var fyrsta fallið
Þannig að ég þarf að fá einhverja niðurstöðu í einhverja einhvern a string hérna og það var get string from user hérna
Takið eftir því að ég þarf það alltaf ef ég ef ég er að kalla á fall þá þarf ég alltaf svigi opnast svigi lokast
Þó svo að það séu engin viðföng
Þannig að þegar ég er kominn með strenginn þá get ég látið fallið sem að hét count digit telja það telja fjölda tölustafa
Köllum það bara hérna count
Það verður þá count digits einmitt
Þannig að athugið það að return setningin hér í get string from user skilar strengnum sem að kemur inn í þessa breytu a string hérna
Við sendum svo þann a string sem viðfang inn í count digits og fáum count til baka sem er niðurstaðan af þessari return setningu hér
Það vill svo til að ég er með sömu nöfn hérna en ég þarf þess ekki
Og síðasta hlutverkefnið hér var einmitt það að prenta út niðurstöðuna og ég talaði um að hún væri svona einföld eða trivial þannig að af hverju það Það er vegna þess að einfaldlega ég get bara prentað út hérna
Ég þarf í sjálfu sér ég kalla fall sem gerir þetta skrifa út niðurstöðuna
Nú er spurningin hvort að þetta gangi hjá mér
Ég dáð ég er að velta fyrir mér hvort þetta sé rétt skrifað hérna is digit eða hvort ég þurfi jafnvel að setja eitthvert MOD importa eitthvert module til þess að geta notað það
Ég kemst að því núna þegar ég keyri þetta
Enter a string ja ef ég segi forritun
Nú þetta keyrði
Ég þurfti greinilega ekki þetta var rétt skrifað
Ég þurfti ekki import af neinum módúl
Er það eðlilegt
Ja það er enginn tölustafur í strengnum
Þannig að það er eðlilegt vissulega eðlilegt
Ég fæ tvo af því að ég er með tvo tölustafi
Og takið eftir að hérna er ég svona að prófa ýmislegt sem gæti komið upp
Hvað hef ég er með bara einn tölustaf
Jú ég fæ einn hérna Hvað ef ég er með tóman streng
Ja ég sló bara á enter þá fæ núll
Já tómi strengurinn engir tölustafir
Þannig að það sem ég gerði þá var það að við byrjuðum á því að einhver gaf okkur eitthvað vandamál sem að var fólgið í þessari setningu að prenta út fjölda tölustafa í innslegnum streng
Við brutum það vandamál upp í þrjú hlutvandamál það er í fyrsta lagi að fá streng frá notandanum síðan að reikna út fjölda tölustafa í strengnum og að lokum að prenta út niðurstöðuna
Og þetta er raunverulega það sem maður þarf að gera alltaf þegar maður les einhverja lýsingu á vandamáli setjast niður skrifa niður eða brjóta verkefnið upp í einstök hlutvandamál og leysa vandamálin hlutvandamálin eitt eitt í einu og það er það sem ég gerði hér
Ég byrjaði að skrifa fall sem hét get string from user sem hafði þetta afmarkaða og skýra hlutverk að taka við inntaki frá notanda og skila því
Svo skrifa ég fall sem heitir ká heitir count digits sem tók við streng í parameter ítraði yfir hann og í sérhverri ítrun athugaði hvort að viðkomandi stafur væri digit ef svo væri þá hækkaði hann teljara að lokum skilaði teljaranum
Og að lokum skrifaði ég bara aðalforritið sem að er þá takið eftir mjög einfalt að gera þegar ég var búinn að brjóta þetta upp í einstakar einingar og leysa sérhverja einingu með föllum
Í þessu tilviki er það tvö fallaköll og það síðasta var bara einfalt að prenta út niðurstöðuna
Í þessu myndbandi ætla ég aðeins að fara yfir endurtekningar það er að segja lykkjur og þá sérstaklega while lykkju
Við tökum hérna for lykkjur seinna
Já höfum þetta bara svona
Sko við erum búin að fjalla aðeins um kynnast if setningum það er að segja leið til að velja einhverja tiltekna setningar til þess að keyra undir ákveðnu skilyrði
Og annað sem við þurfum að geta gert er það að endurtaka tilteknar setningar undir ákveðnu skilyrði þannig að þegar við erum komin með skilyrðissetningar eða if setningar og þennan möguleika að vera með lykkjur þá erum við raunverulega komin með tvö helstu eða mikilvægustu forritunarsetningarnar sem sagt if setningar og lykkjur
eða meðan ákveðið skilyrði er true og myndin raunverulega lítur svona út while lykkjan að við erum með while sem er þá lykil orð í Python málinu á meðal að einhver bool segð er true þá keyrum við þetta suite sem kallast hérna sem er þá einhver röð af setningum
Þannig á meðan bool segðin sem við setjum hér er true þá keyrum við þessar setningar
Ef hún er true þá getum við þá förum við hér niður og og keyrum röð af setningum
Ef hún er ekki true þá keyrum við ekki setninguna sem eru hér inni í while lykkjunni og í sérhverri ítrun af þessari lykkju líka þá athuga aftur þessa bool segð
Við skulum kannski bara hoppa beint inn í Visual Studio Code hérna til þess að skoða þetta aðeins stækkum þetta aðeins og ég ætla að búa hérna til while eða forrit sem notar while setningu
Við skulum gera þetta þannig að við lesum eitthvað frá notandanum eitthvað númer ég ætla að kalla á input fallið setja hérna input a number
Og stækkum hérna aðeins letrið
Þá erum við komin með sem sagt einhverjar tölur frá notandanum svo ætla ég að vera hérna með eitthvað einhverja breytu sem ég kalla counter og gefa henni upphafsgildið núll
Og svo ætla ég að vera með while setningu hér á meðan að þessi counter er minni heldur en talan sem notandinn gaf mér þá ætla ég að prenta út counter og síðan að hækka counter inn um einn í hverri ítrun í þessa lykkju þannig að notandi slær inn einhverja tölu á meðan counter inn okkar
sem eru sem sem er upphafsstilltur með núlli en minni en þessi tala þá prentum við út counter inn og hækkum svo counter inn í sérhverri ítrun á lykkjunni
Og ef við prófum þetta vista þetta hérna hægri mús og run Python file in terminal þá kemur hérna fyrst input a number og segjum ég set inn fimm þá sjáum við hér það prentast út núll einn tveir þrír fjórir en ekki fimm vegna þess að á meðan counter inn er minna en fimm þá prenta ég counter inn út
Förum aftur upp athugum hvort að counter inn sé minni en fimm hann er það við höldum svona áfram þangað til að við prentum út fjóra hérna
Þá verður counter inn orðinn fimm af því við erum alltaf að hækka hann
Nei það er ekki svo þannig að bool segðin í while setningunni verður false og við keyrum ekki setningarnar inni þegar að bool segðin er orðin false
Það sem er náttúrulega mjög mikilvægt hér er að þessi loop variable eins og hann kallar þessi counter hérna sem að stýrir því raunverulega hvort að bool segðin verður true eða false við verðum að passa okkur á því að hækka hann
Það er að segja ef við hækkum hann ekki hérna þá erum við raunverulega með endalausa lykkju er það ekki
Vegna þess að þá breytist counter inn aldrei hann er núll hann verður alltaf minna en fimm þannig að við prentun þetta út hérna alveg endalaust
Skulum bara prófa hérna sjá hvað gerist ef við tökum þetta svona keyrum þetta sjáið að hér bara það sést nú reyndar ekki hér ætla fyrst að slá inn fimm og núna bara prentast endalaust hérna ég ætla að stoppa þetta
Það prentaðist endalaust af núlli vegna þess að counter inn ég hækkaði hann aldrei
Þetta þarf að passa að við þurfum að tryggja það að okkar bool segð verði einhvern tímann false það er mjög mikilvægt Annars ver keyrir hún endalaust
Hérna segi ég print fallinu að þegar hann er búinn að prenta út gildið á þessari breytu þá eigi hann ekki að búa til nýja línu sem sagt ekki prenta þennan svokallaða new line character heldur í staðinn prenta út eitt space
Þannig að ef við prófum þetta svona og ég segi run Python file in terminal ég slæ inn fimm og sjáið að nú fæ ég núll einn tveir þrír fjórir og alltaf með bili á milli
Ef ég mundi vilja hafa eitthvað annað en bil á milli þá gæti ég náttúrulega bara sett það hér gæti haft stjörnu hérna á milli keyrir aftur
fimm og fær hérna stjörnu á milli þannig að svona er hægt að stýra því ef maður vill ekki prenta út eitthvað eða maður vill ekki að print fallið skrifi út nýja línu eftir að print fallið er búið að skrifa út gildi tiltekinnar breytu
Nú hvað eitt sem er kannski ágætt að átta sig á að hvað gerist ef að ég keyri þetta aftur hérna og ég prenta út og ég slæ inn núll og þá gerðist ekki neitt
Ja num er hér núll counterinn er núll á meðan að counter er minni en num stendur hér það er að segja meðan núll er minni en núll sem er false þá áttu að gera eitthvað
Þannig að þetta er false bool segðin í while setningunni er false sem þýðir það að setningarnar inni í while hlutanum keyrast ekki
Þannig að það við raunverulega förum ekki í gegnum setningarnar í while se í while hlutanum nema að bool segðin sé true Um leið og hún er orðin false hvort sem hún er það í fyrsta sinn eða einhvern tímann í seinni ítrun þá keyrum við ekki setningarnar
Og ef ég geri þetta aftur hérna og ég slæ inn einn þá kemur bara út núll hér vegna þess að ég fer bara einu sinni í gegnum þessa while setningu num var einn núll minna en einn er true prentast út núll hækka counter inn í einn einn minna en einn er false þá keyri ég ekki restina þá keyri ég ekki setninguna aftur
Það er lykilorð sem að hægt er að nota í Python sem fylgir while setningum og það er else við getum verið hérna með else setningu sem að ég gæti þá notað til þess að gera eitthvað framkvæma eitthvað ef að boolean segðin í while setningunni er false
Og gildi hennar er false
Ég gæti hérna skrifað til dæmis já ókei prentum út í lokin eitthvað sem að lítur út svona segjum bara done búinn
Keyri þetta slæ inn hérna tíu
Þá skrifast út núll upp í níu og þegar að counter inn er orðinn tíu þá verður þessi bool segð false vegna þess að num hefur gildið tíu og þá keyrist else hlutinn í while setningunni
Print Done
Það má nú kannski skjóta því að hér að ef ég sleppi því að hafa else hluta og hef print setninguna fyrir utan while setninguna takið eftir að hún er ekki inni í while setningunni
Það sem er inni í while setningu er það sem er inndregið munið þið indentation eða inndráttur í Python er mjög mikilvægur og og við sjáum eða Python túlkurinn veit það að þessar tvær setningar hér eru hluti af while setningunni eða þær setningar sem á að keyra ef að boolean segðin er true en þessi setning hér print er fyrir utan þannig að hún er alltaf framkvæmd
Það er hins vegar einn munur ef við setjum else hlutann aftur inn og höfum þetta svona
Og það er ef að verið er að nota svokallaða break setningu þannig að það er hægt að vera með break setningu inni í while setningu sem þýðir að maður getur hoppað út úr while lykkjunni undir ákveðnum kringumstæðum eða sem sagt ef maður vill undir ákveðnum kringumstæðum hoppa út úr while lykkjunni þá getur maður gert það
Eðlilegast er að leyfa while setningunni að keyra þangað til að þessi boolean segð verður true en það getur komið upp þannig tilvik eða sú staða að maður þurfi raunverulega að hætta í while setningunni áður
Þannig að ímyndum okkur það til dæmis að af einhverjum ástæðum myndi ég vilja þegar að counter er orðinn fimm að þá vil ég bara að hætta
Mjög skrýtið að vilja gera þetta en þetta er svona til að sýna hvað hægt er að gera
Ef að counter inn er fimm þa ætla ég að keyra break hérna
Það þýðir að ég hætti í while setningunni og þessi boolean segð verður ekkert athuguð aftur
Það má eiginlega segja það ég hoppi alveg hingað út í næstu setningu ef ég væri með hérna x sama sem fjórir eða einhverja gildisveitingarsetningu þá er þetta næsta setning sem verður keyrð
Meira að segja else hlutinn hérna á ekki að verða keyrður ef ég hoppa út með break
Við skulum athuga það þurfum svo sem enga setningu hér
Ég slæ inn tíu
Og þá prentast út núll einn tveir þrír fjórir vegna þess að þegar counter inn varð fimm þá break aði ég hér út sem er sem sagt hoppa út úr while setningunni án þess að fara aftur upp hingað sem væri hin eðlilega leið athuga bool setninguna bool gildið aftur og halda lykkjunni áfram þannig að ef ég vill undir einhverjum kringumstæðum hoppa út úr lykkjunni þá get ég notað break setningu
Og það þýðir þá líka að else hlutinn í while setningunni er ekki keyrður
While setningin hún er nokkuð skýr hún hún endurtekur tilteknar setningar á meðan ákveðið skilyrði er true en hérna er maður farinn að brjóta það flæði með því að hoppa út úr henni undir ákveðnum kringumstæðum þannig að ég myndi segja að maður ætti að nota þetta frekar sparlega þessa break setningu
Í þessu myndbandi ætla ég að kynna föll til sögunnar
Við höfum hingað til verið að nota ýmis konar forritunar atriði sem eru raunverulega lífs nauðsynleg til þess að geta búið til forrit til dæmis skilyrðissetningar if setningar og lykkjur while lykkjur og for lykkjur gildisveitingar og þess háttar en nú ætlum við að tala um föll
sem að má svo sem segja að sé ekki endilega lífsnauðsynlegar til að skrifa forrit heldur mjög mikilvægt tæki til að gera forritun okkar læsilegri og í rauninni gera okkur einfaldara um vik með því að skrifa forrit
Og ástæðan er sú að föll gera okkur kleift að taka eitthvert tiltekið vandamál brjóta það niður í einstakar einingar og skrifa fall sem að leysir viðkomandi einingu
Þannig að ef við getum brotið forritið niður í einingar og skrifað föll sem leysa sérhverja einingu þá erum við smám saman að leysa heildar vandamálið með því að raunverulega smækka búta það niður í einstakar einingar og leysa þessar einstöku einingar sérstaklega
Þessar einstöku einingar er síðan hægt að skrifa eða útfæra með falli og það er eitthvað sem er gríðarlega mikilvægt fyrir ykkur að ná tökum á það er að segja geta tekið lýsingu á einhverju verkefni og brotið það niður í einstakar hluteiningar eða hlutverkefni og skrifað föll sem leysa þessi hlutverkefni
Þannig að læsileiki forrits verður mikið betri ef okkur tekst að brjóta það niður í einstakar einingar með föllum og jafnframt gera föllin okkur kleift að nýta betur kóða þurfa ekki að vera að endurtaka einhvern kóða í forriti heldur frekar að skrifa fall sem að framkvæmir þessa viðkomandi aðgerð sem við viljum gera þá nokkrum sinnum eða kannski oftar en einu sinni
Ég ætla að skrifa hérna fall ég er kominn með skrá sem heitir incpy inc stendur hérna fyrir increment og ég ætla einmitt að skrifa fall sem heitir bara inc
Þegar ég segi inntak sitt þá er það þannig að sérhvert fall getur tekið núll eða fleiri parameters eins og það heitir á ensku stundum notuð við stiki fyrir íslensku þannig að í þessu tilviki tekur þetta fall einn parameter eða stika og ég ætla að kalla hann hérna bara num
Hann stendur hérna fyrir number og ég hef tvípunkt hérna á eftir þessari skilgreiningu þannig að það sem ég er að gera núna er ég er að nota def lykilorðið sem stendur fyrir definition að því ég er að fara að skilgreina þetta fall sem heitir inc sem að tekur einn parameter sem að heitir num
Hvað gerir þetta fall
Það ég ætla að eiga mér hérna breytu sem heitir result og result ið einfaldlega bætir einum við num það er að segja ég legg einn við num og niðurstaðan fer í result og að lokum þá nota ég return lykilorðið til að skila þessu gildi til baka þannig að þetta fall hefur ákveðna eiginleika
Það hefur í fyrsta lagi mjög afmarkað hlutverk og það er mjög mikilvægt þegar menn eru að búa til föll að föll hafi skýr og afmörkuð hlutverk
Þetta tiltekna fall hérna hefur eingöngu það hlutverk að bæta einum við viðfang sitt viðfang er það gildi sem að ég mun senda hérna inn fyrir þennan parameter það hefur eingöngu það hlutverk það gerir ekkert annað
Og þetta er mjög mikilvægt að tileinka sér þegar maður er að skrifa föll að gera þau þannig úr garði að þau hafi mjög afmarkað og skýrt hlutverk
Ástæðan er sú að þar með verða þau betur endurnýtanlegri ef þau hafa skýrt hlutverk og það er engin óvænt ekkert óvænt sem getur komið upp með því að kalla á fallið vegna þess að það er vitað fyrir fram að það hefur svo skýrt hlutverk
Það hefur ekki neitt side effect eins og stundum er sagt á ensku
Það er ekkert auka sem getur gerst með því að kalla á þetta fall heldur en nákvæmlega það sem að til stendur
Þannig að hér er ég búinn að skrifa þetta fall og og ég talaði einmitt um þetta skýra hlutverk annað sem er kannski hægt að benda á hér er að það tekur einmitt eitt eða það er einn parameter skilgreindur hér
Ég þarf ekki að skilgreina parameter það gæti verið að þetta taki ekki við neinum parameter og þetta skilar bara einu einum hlut hérna og það tengist auðvitað líka hlutverkinu
Þetta hefur það hlutverk að hækka bara tiltekna tölu sem kemur inn og skila þeirri tölu til baka
Nú þetta var sem sagt skilgreining á falli
Þá er spurningin hvernig nota ég þetta fall
Hvernig kalla ég á það
Ja ég gæti til dæmis hérna verið með í mínu aðalforriti input setningu segjum hérna number er samasem int af input enter a number þetta höfum við séð áður svona þannig ég bið notandann um að slá inn tölu út úr þessu kalli hér kemur strengur og ég breyti honum hér í heiltölu og þá á ég þessa tölu number
Það sem ég þá get gert til að kalla þetta fall sem ég er búinn að búa til þetta fall sem heitir inc ég get sagt number hvað eigum við að kalla þetta
Number incremented dálítið langt nafn á breytu en allt í lagi number incremented munið þið við viljum oft hafa lýsandi nöfn á breytum er niðurstaðan af því kalla á fallið inc með þessari tölu sem að notandinn sló inn
En setningin hér segðin hérna hægra megin við gildisveitinguna
Hún er svokallað fallakall þannig á ensku er þetta in kallað invocation eða to call a function
Meðan að hér uppi erum við að tala um að við séum að skilgreina fall eða define a function
Niðurstaðan af þessu fallakalli er þá væntanlega það að talan hefur verið hækkuð um einn
Og hún hver tekur við því
Jú það er breytan number incremented sem að tekur við niðurstöðunni
Þannig að ef við prófum þetta
Og ég slæ inn hérna fimm já takið eftir hérna er búið að vara mig við því að þessi tala sé ekki hérna já það ég hélt reyndar að þetta væri vegna þess að ég væri gley hefði gleymt að prenta út hún segir reyndar hérna að það sé verið að senda til baka úr falla kallinu none
Og það er vegna þess að hér ætlaði ég að segja return result
Result er samasem num plús einn return er samasem ég ætla að skila þessu til baka sem er hérna result og þá fæ ég til baka hérna number incremented sem einhver tala sko túlkurinn sér það að num er er tala vegna þess að það er verið að leggja einn við það hérna sér hún að einn einn er int þá sérðu sjáum við hér að result er int vegna þess að það er verið að leggja einn við einhverja tölu
Þar með er result líka int
Og þá er verið að skila int til baka hér
Og hérna kvartaði hún yfir því áðan að hún vissi ekki hvert tagið af number incremented var vegna þess ég hafði gleymt hérna að taka fram result í return setningunni
Þannig núna get ég keyrt þetta aftur svona og ég slæ inn fimm og þá gerist ekki neitt vegna þess að ég er ekki með print setningu þannig að við skulum setja hana inn print number
Ég vildi nú vera viss um að þetta keyrði hjá mér
Svona og þá fæ ég sex til baka
Ef ég keyri þetta aftur og ég slæ inn átta að þá fæ ég níu tilbaka
Þannig að þetta tiltekna fall virkar og eins og ég sagði áðan hefur þetta skýra og afmarkaða hlutverk og það er kannski ágætt að nefna hér að það sem að kom inn hér er þessi breyta hérna num í fallaskilgreiningunni er kallað parameter eða stiki eins og ég sagði áðan
En það sem að ég sendi gildið sem ég sendi inn fyrir þennan parameter er kallað á enskunni argument eða stundum kallað viðfang einnig kallast stundum raunstiki á íslensku
til dæmis hér þá hefur number gildið fimm sem þýðir því að þessi parameter í fallaskilgreiningunni mun fá gildið fimm þegar þetta fallakall er framkvæmt og þar með verður þessi breyta fimm og einn lagt við breytuna og við fáum út sex
Annað sem er gott að átta sig á er það að er það hvað gerist raunverulega þegar þetta fallakall hér á sér stað
Hvað gerist í kóðanum
Svo er niðurstöðunni skilað
Niðurstaðan kemur inn í breytuna number incremented og það er þá eftir það sem að print setningin keyrir
Þannig að það er mikilvægt að gera sér grein fyrir því að um leið og fallakallið á sér stað þá býður það sem á eftir kemur þangað til að niðurstaðan úr fallinu er orðin ljós
Nú kannski síðasta sem vert er á benda hér það er það að föll styðja við það sem að heitir hjúpuneða encapsulation
Hjúpun þýðir það að það er verið að hjúpa ákveðna virkni inn í fall þannig það er ákveðin virkni sem á sér stað þegar við köllum á fallið inc hérna
Og sú virkni er hjúpuð inn í ákveðið fall
Í því felst meðal annars það að það er ákveðin svona upplýsingahuld eða það sem á ensku heitir info information hiding sem á sér stað það er að segja þegar ég sem forritari kalla á fallið inc þá þarf ég ekki að vita hvernig fallið inc er útfært
Eina sem ég þarf raunverulega að vita er það hvert hver tilgangur fallsins er hverju það kemur til með að skila ég þarf sem sagt að vita raunverulega að þegar ég kalla á fallið inc með einhverri tölu hérna number það sem muni þá gerast er að ég fái til baka tölu sem er einum hærri
Það er eina sem ég þarf að vita
Ég þarf ekki að vita hvernig fallið inc er útfært hvernig forritarinn skrifaði til að fá fram þessa virkni
Kannski eitt sem er líka gott að benda á svona alveg í blálokin takið eftir því að þetta fall inc er þannig skrifað að það notar hérna breytuna result sem að tekur við niðurstöðuna að því að leggja einn við viðfangið og skilar svo þeirri því gildi UNK gildi breytunnar result
Ég gæti sparað mér smá kóða og gert þetta bara í einni setningu