Kommer du ofta att kopiera och klistra in din kod för att återanvändas i olika avsnitt i ditt program?
I så fall kanske du vill överväga att använda funktioner. Funktioner är en mycket kraftfull funktion i programmeringsspråk. De kan göra koden mer effektiv, lättare att läsa och elegant.
Vad är en funktion?
En funktion är ett kodblock som utför en uppgift. Det kan kallas och återanvänds flera gånger. Du kan skicka information till en funktion och den kan skicka tillbaka informationen. Många programmeringsspråk har inbyggda funktioner som du kan komma åt i deras bibliotek, men du kan också skapa egna funktioner.
Lär dig grunderna i rekursion, det väsentliga men lite sinnesböjande verktyget för programmerare.
När du ringer till en funktion pausar programmet det aktuella programmet och utför funktionen. Funktionen kommer att läsas uppifrån och ner. När funktionen är klar fortsätter programmet att köras där det pausats. Om funktionen returnerade ett värde kommer det värdet att användas där funktionen anropades.
Hur skriver du en funktion?
Det finns många olika sätt att skriva funktioner på. Den exakta syntaxen beror på vilket språk du programmerar på. Vi visar exempel i Python, JavaScript och C ++ för att visa en rad programmeringssyntax.
Relaterad: Varför programmeringsspråk inte kan existera utan funktioner
Ogiltiga funktioner
Den första typen av funktion som vi ska titta på är en tomrumsfunktion. Detta betyder helt enkelt att funktionen inte returnerar ett värde. Annullerade funktioner används för att slutföra en uppsättning instruktioner. I dessa exempel kallas funktionen vi skrev hejFunktion. Syftet med funktionen är att mata ut "Hello World".
TIPS: ge funktioner namn som förklarar vad de gör. Det blir enklare att hantera funktioner och läsa koden när ditt program blir mer komplext.
Pytonorm
def helloFunction ():
tryck ("Hello World")
hejFunktion ()
Nyckelordet def används i Python för att definiera och skapa en funktion. Nästa är namnet på funktionen. Instruktionerna i funktionen följer på nästa rad efter kolon. Vitt utrymme är viktigt i Python, så var noga med att dra in all kod som du vill att din funktion ska köras. I exemplet ovan kör funktionen en kodrad.
Dina skarpa ögon kanske har märkt det skriva ut() är också en funktion, men den kallas annorlunda än vår funktion. Håll fast vid den tanken just nu, vi kommer att utforska funktioner kommer att parametrar senare.
JavaScript
funktion helloFunction () {
alert ("Hello World!");
}
helloFunction ();
I JavaScript, nyckelordet fungera används för att skapa funktioner. Därefter har vi funktionens namn. Alla koder som faller mellan de lockiga parenteserna körs när funktionen anropas.
Vitt utrymme är inte viktigt i JavaScript, men det är vanligt att använda koden i funktionen. Indrag gör koden lättare att läsa, vilket är mycket viktigt eftersom dina program blir mer komplexa.
Obs: Mycket som skriva ut() i det tidigare exemplet, varna() är också en funktion.
C ++
#omfatta
använder namnrymd std;
ogiltig helloFunction () {
cout << "Hello World!";
}
int main () {
helloFunction ();
returnera 0;
}
Funktioner skapas annorlunda i C ++. I stället för ett nyckelord för att definiera en funktion, beskriver det första ordet vilken typ av data som funktionen returnerar. I det här fallet returnerar vår funktion inga data, så uppgifterna är ogiltiga. Därefter har vi funktionens namn. I likhet med JavaScript körs all kod mellan de lockiga parenteserna när funktionen anropas. På samma sätt som JavaScript påverkar inte blanksteg funktionen, men är god praxis.
Har du upptäckt en annan funktion i C ++ - koden? Ja, huvud () är en funktion. När du kör ett C ++ - program ringer du automatiskt till huvudfunktionen. När huvudfunktionen är slutförd, returnerar den 0 när den lämnar programmet för att signalera att det inte fanns några fel i programmet.
Funktioner som kräver värden
Tömningsfunktioner är bra om du upptäcker att du skriver samma bit kod om och om igen. Men de kan vara begränsande. De är statiska och förändras inte. De fyller alltid i samma instruktioner. Ett sätt att öka deras användbarhet är att skicka olika värden till funktionen.
Du har märkt att parenteser följde namnen på alla våra funktioner. Inom parentes kan vi förklara att data behövs för att köra vår funktion. Då kan vi använda de data som skickas till vår funktion i funktionen. Låt oss ta en titt på de föregående exemplen igen, men den här gången skickar vi frasen som vi vill få ut.
Pytonorm
def helloFunction (newPhrase):
skriva ut (newPhrase)
helloFunction ("Vår nya fras")
Nu, mellan parenteserna, förklarar vår funktion att den behöver en variabel för att köras. Vi har nämnt variabeln newPhrase och kan nu använda den i vår funktion. När vi ringer till funktionen måste vi skicka den begärda informationen genom att placera den mellan parenteserna. Samma ändringar gjordes i JavaScript.
JavaScript
funktion helloFunction (newPhrase) {
alert (newPhrase);
}
helloFunction ("Vår nya fras");
C ++
#omfatta
använder namnrymd std;
ogiltigt helloFunction (string newPhrase) {
cout << newPhrase;
}
int main () {
helloFunction ("Vår nya fras");
returnera 0;
}
Vår C ++ - funktion krävde lite mer information. Vi vet att din funktion vill ha strängdata, men det är inte tillräckligt bra för C ++. När du skapar din funktion måste du ange vilken typ av data din funktion kräver. Om du inte skickar rätt typ av data skapar funktionen ett fel.
Detta kan tyckas lite irriterande, men strikta språk kan ofta spara huvudvärk. Om du skriver en funktion i JavaScript som kräver ett heltal men numret skickas som en sträng kan det skapa ett fel som är mycket svårt att spåra.
Relaterad: 5 Funktionella programmeringsspråk du borde känna till
Funktioner som returnerar ett värde
Den slutliga funktionsförmågan som vi kommer att täcka är att returnera data. Detta är särskilt värdefullt när du vill ändra data innan du använder den. Även om du kan skriva den inline, om du använder samma beräkningar många gånger, som att konvertera imperial till metrisk, kan det vara mer meningsfullt att skriva det som en funktion. Vårt exempel blir enklare. Vår funktion kräver två heltal och returnerar summan.
Pytonorm
def addingFunction (a, b):
returnera a + b
skriva ut (lägga till funktion (2, 4))
I det här exemplet kräver vår funktion två variabler istället för en. Vi indikerar det genom att separera våra variabla namn med ett komma. Nyckelordet lämna tillbaka berättar för funktionen att returnera följande data, i detta fall 2 + 4 eller 6. Vi kallar funktionen inuti skriva ut() fungera.
När vårt program hade kommit till den raden skulle det ha pausat, kört vår funktion och sedan fortsatt som additionFunction (2, 4) var faktiskt bara det returnerade värdet 6.
JavaScript
JavaScript-koden liknar mycket Python-koden. Den primära skillnaden är att funktionen anropas i en varning.
function addingFunction (a, b) {
returnera a + b;
}
alert (addingFunction (2, 4));
C ++
#omfatta
använder namnrymd std;
int adderarFunktion (int a, int b) {
returnera a + b;
}
int main () {
cout << addingFunction (2, 4);
returnera 0;
}
C ++ - koden körs på samma sätt, men som vanligt kräver lite mer information. Först måste vi säga vilken typ av data vår funktion kommer att returnera. Du kommer att se det tomhet har ändrats till int. Det betyder att istället för att returnera några data kommer vår funktion att returnera ett heltal. Utöver det liknar koden den kod vi redan har utforskat.
Hantera dina funktioner
En rolig sak med funktioner är att funktioner kan ringa andra funktioner. De kan till och med kalla sig själva! Men med stor kraft kommer ett stort ansvar. Bli inte galen genom att skapa kod med funktioner som kallar andra funktioner som ringer ännu fler funktioner.
Som nämnts pausar programmet varje gång en funktion kallas medan den kör funktionen. Detta innebär att programmet hålls i aktivt minne. Om du ringer till flera fler funktioner utan att slutföra dem använder du mer aktivt minne. Om du inte är försiktig kan ditt program gå ur hand.
Globala variabler kan verka enkla, men de är ofta orsaken till så många buggar. Så här effektiviserar du din kod med inkapsling.
- Programmering
- Programmering
- Funktionell programmering
J. Seaton är en Science Writer som specialiserar sig på att bryta ner komplexa ämnen. Hon har en doktorsexamen från University of Saskatchewan; hennes forskning fokuserade på att använda spelbaserat lärande för att öka elevernas engagemang online. När hon inte jobbar hittar du henne med att läsa, spela videospel eller arbeta i trädgården.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Ett steg till…!
Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.