-Så här: om du vill skicka med data in i en funktion så måste du ange om din variabel motsvarar själva minnesarean där datan finns eller om det är en pekare till minnesarean.
-Men vad gör funktionen då? och varför skicka in data?
-Vi kan ta ett exempel, säg att vi har en funktion som räknar ut resultatet av multiplikationen a gånger b.
-Kan man inte bara skriva a kryss b?
-Jo, men…
-Det sa du förut i alla fall.
-Ja, precis, men man kan också göra det i en funktion.
-Men varför skall man göra det om det går lika bra att skriva a kryss b?
-Det kan finnas anledningar, men nu är det mest för att det är ett bra exempel.
-Vad kan det vara för anledningar då?
-Det är väl inte så viktigt nu?
-Jag kan inte förstå det här om du undanhåller information hela tiden.
-Jag undanhåller inte.
-Bra. Berätta då vilka anledningar det kan vara.
-Det är inte viktigt för sammanhanget vilka anledningarna är.
-Om det inte finns några anledningar så blir det ju ett ganska dåligt exempel, eller hur?
-Nej, det är tvärtom ett bra exempel, och om du skall ha skuggan av en chans på tentan är det här en av sakerna du måste ha i alla fall en vag aning om. Försök se exemplet frikopplat till vad som utförs och fokusera på funktionens parametrar. Kan vi gå vidare nu?
-Mmm, okej. En funktion som räknar ut a gånger b. Fortsätt.
-Jo, i funktionsanropet deklarerar jag två parametrar, a och b, som jag bestämmer är siffror.
-Parametrar, du pratade ju om variabler nyss?
-Jo, parametrarna är variabler också, men de kallas parametrar i just det här fallet.
-Okej, men det måste jag skriva upp. Kan jag skriva att variabler kallas parametrar då de deklareras, vad det så det hette? i en funktion? Vänta nu, det stämmer inte, du sa ju nyss att en funktion kan ha funktioner i sig i sin tur och då vet man ju inte om man har att göra med parametrar eller variabler.
-Skriv ingenting! Förlåt, men så här: Eller, nej, vi nöjer oss med att de kan vara samma sak men med olika namn, men det är en förenkling. Okej?
-Javisst, jag är inte dum!
-Nej, självklart inte
-Jag vill bara förstå hela kedjan.
-Javisst, men ibland är det tvunget att acceptera en lite förenklad bild.
-Självklart, vi måste ju vara beredda att lyfta diskursen till en abstraktionsnivå som är i linje med målgruppen, annars blir ju en debatt om komplicerade frågor ytterligt exkluderande och elitistisk, det tycker jag faktiskt är helt axiomatiskt.
-Då så. Vi har en funktion, vi kan kalla den Multiplikation.
-Hallå, det ÄR en multiplikation!
-Ja precis, det är inte alls dumt att låta funktionens namn beskriva det arbete funktionen utför.
-Ja, det är ju rätt smart faktiskt.
-Vår funktion Multiplikation tar två inparametrar, a och b.
-fast det heter ju faktorer.
-Förlåt?
-I matte, de tal man multiplicerar, det vet du väl att de heter faktorer?
-Jo, visst men vad har det med det här att göra?
-Du sa ju nyss att man skulle namnge saker så att namnet avspeglade vad de faktiskt är eller gör.
-Ja, men…
-Då borde du väl kalla parametrarna a och b för faktor1 och faktor2 istället?
-Visst, inga problem, vi kallar dem fa…
-Jag börjar faktiskt undra om du verkligen vet vad du pratar om.
-Du, hur var det nu med tentan, den som jag spikade och du fick exakt noll poäng på?
-Ja, ja, du behöver väl inte bli sur för det?
-Funktionen tar alltså två parametrar, faktor1 och faktor2, och inne i funktionen så kan vi skriva faktor1 kryss faktor2 som vi skulle ha gjort om vi valt att inte lägga uträkningen i en funktion, och så returnerar vi resultatet.
-Hur då returnerar?
-Vi skriver return faktor1 kryss faktor2 semikolon, på så sätt skickas resultatet av multiplikationen tillbaka till vänster om själva anropet av funktionen. Så här.
-Okej, det är ju rätt smart faktiskt, det ser ut lite som en matematiskt funktion f av x typ, fast som c lika med multiplikation av faktor1 och faktor2. Coolt. Kan vi ändra namn från c till produkt? det stör mitt ordningssinne om det heter fel.
-Ordningssinne är bra när man programmerar, vi byter namn från c till produkt så ser det bättre ut. Bra, då har vi vår funktion klar. Då kommer vi till frågan vi började me…
-Men du, du har ju glömt en sak.
-Jaha?
-Hur bestämmer man vilka värden som skall representeras av faktor1 och faktor2? Men du, det var ju det jag började med att undra, varför har du inte förklarat det istället för det här?
-Jag behövde, äh, skit i det, är det okej om jag förklarar nu?
-Jag undrar ändå varför, men okej, förklara nu, så lyssnar jag.
-Bra. Grejen är att i anropet till Multiplikation kan man ange värden på tre sätt, man kan skriva in värdena direkt, så att man skriver produkt lika med Multiplikation parentes fem komma tre slutparentes, och då kommer vår funktion räkna ut vad fem gånger tre är…
-Femton.
-Exakt, så variabeln produkt kommer att innehålla värdet femton efter att den här programraden är körd. Tänk nu att vi tidigare i programmet har definierat två variabler, vad skall vi ta, säg att de heter äpplen och päron.
-Stopp stopp stopp, du sa ju förut att man inte kan använda å ä ö i programmeringen.
-Okej, vi kallar dem pickar och morötter då.
-Ö i morötter. Vad sägs om påkar? Nej det har å i sig, vi tar… klubbor. Klubbor tar vi.
-Pickar och klubbor, visst. Då är det så att när vi deklarerar pickar och klubbor som variabler om kan ha siffror…
-Du menar när vi skrev int a semikolon.
-Just, fast vi säger att vi skrev int klubbor semikolon och int pickar semikolon under det, så här, då talade vi om för programmet att vi ville ha ett utrymme i minnet reserverat och att vi ville komma åt innehållet i utrymmet genom att ange pickar och klubbor. Sedan har vi någonstans i programmet tilldelat pickar och klubbor värden, kanske genom funktionen Multiplikation, så att de nu…
-Det är det som kallas rekursion va?
-Nej, eller, nja…
-Jag har lite svårt att förstå det där med rekursion, kan vi ta det när du förklarat det här?
-Javisst, men nu skall vi alltså anropa Multiplikation med pickar och morötter.
-Klubbor
-Ja, just det, vi anropar Multiplikation med pickar och klubbor, det ser ut så här. Och då hamnar resultatet av operationen
-Produkten
-Produkten, precis, i produkt.
-Du skriver väldigt snabbt på datorn, men du skriver fel ofta och måste backa.
-Det stämmer, men skall vi titta på själva frågan nu, den om pekare och variabler?
-Det ser rätt coolt ut när du skriver, och du ser både grymt koncentrerad och helt avslappnad ut.
-Ja, tack. Variablerna motsvarar alltså ett minnesutrymme i datorn, men pekare däremot…
-Du, eh, bli inte arg nu, men
-Vadå arg? ja vet, jag kanske verkade lite irriterad förut, men jag var absolut inte arg. Se, helt avspänd!
-Jo, men jag känner mig ändå lite dum som bad dig komma hit, och du var så himla schysst och kom direkt fast jag vet att du har massor att göra.
-Det är verkligen inga problem, jag hjälper gärna till.
-Det är bara det att jag, att jag. Att jag klarade tentan. Det var jag som var näst bäst efter dig. Jag ville…
-Va? Men vaffan, du har ju inte verkat förstå nå…
-Oh, så, så, förlåt, jag…
-Förlåt och förlåt, ville du retas eller? Var sitter kameran förresten, här eller? Här?
-Nej, nej, ingen kamera alls, jag ville bjuda hit dig men jag kom inte på något annat sätt än att be om hjälp. Jag tänkte…
-Men du kunde ju bara frågat!
-Snälla, bli inte arg. Jag tänkte att du inte verkade vara en av de som prompt skall hjälpa andra hela tiden, du vet som Pär och Melvin och dom, som bara verkar vilja bekräfta sina egon när de hjälper andra, så jag tänkte att om du vill hjälpa mig så betyder det att, eh, att du kanske , gillar mig lite?
-Jamenvafan! Det kanske jag gjorde, men nu vetefan, faktiskt. Vad var det där med att spela okunnig då? Du var rätt så jävla övertygande skall du veta.
-Jag hade inte tänkt att spela så mycket, men när jag väl börjat kom jag inte på något sätt att sluta. dessutom har jag hjälpt morsan med datorn och försökt lära henna flytta bilder från hennes gamla digitalkamera in i datorn så att de syns i hennes iPad hela eftermiddagen och så var jag lite frustrerad.
-Och så lät du det gå ut över mig!
-Jag visste inte hur jag skulle komma ur det, det bara fortsatte. Jag blev lite distraherad av dig också.
-Skall du skylla på mig nu eller?
-Nej, eller jo lite, eller, visst har du klätt upp dig lite? Du är väldigt snygg i alla fall.
-Ja. Lite. Tack. Blev du distraherad av det?
-Ja. Du är väldigt söt, faktiskt. Man det får du väl höra hela tiden. Skall du inte säga något?
-Jag vet inte vad jag ska säga. Ingen har sagt så till mig innan. Du är också söt. Det var inte det att jag inte hittade cykelpumpen heller som jag sa, jag blev sen för att det tog trekvart att välja kläder. Det tar ingen tid alls i vanliga fall.
-Det blev bra. Jättefint.
-Tack. Du med.
…och så levde de lyckliga.