Kärnskillnaden mellan procedurer och funktioner ligger i deras returvärden:
* Förfarande: En procedur (även ibland kallad en subroutine eller underprogram) är ett kodblock som utför en specifik uppgift men *returnerar inte ett värde *. Det är i huvudsak en uppsättning instruktioner som utförs för dess biverkningar (t.ex. modifiering av data, utskrift, utskrift, interagera med hårdvara).
* Funktion: En funktion är också ett kodblock som utför en specifik uppgift, men den *returnerar alltid ett värde *. Detta returvärde kan vara av vilken datatyp som helst (heltal, sträng, booleska, objekt, etc.) eller till och med tomrum (vilket betyder att det inte returnerar något uttryckligen, men det har fortfarande en implicit avkastning på många språk). Det primära syftet med en funktion är att beräkna och returnera ett resultat.
Här är en analogi:
Föreställ dig en kock.
* Förfarande: Kocken följer ett recept för att förbereda en maträtt. Åtgärden för att förbereda skålen är proceduren. Kocken ger dig inte tillbaka direkt förutom de förändrade ingredienserna; Slutresultatet är en förändring i ingrediensernas tillstånd.
* Funktion: Kocken gör en sås. Åtgärden att göra såsen är funktionen, och såsen i sig är det returnerade värdet.
i kod (Python Exempel):
`` `python
procedur (returnerar inte ett värde)
def hälsningen (namn):
Skriv ut (F "Hej, {namn}!")
Hälta ("Alice") # Output:Hej, Alice!
funktion (returnerar ett värde)
def add (x, y):
returnera x + y
summa =lägg till (5, 3) # summan kommer att vara 8
tryck (sum) # utgång:8
`` `
nyckelskillnader sammanfattade:
| Funktion | Procedur | Funktion |
| --------------- | -------------------------------------------------------------------------------------------------- |
| Returvärde | Returnerar inte ett värde | Returnerar alltid ett värde (kan vara ogiltigt/ingen) |
| Syfte | Utför en uppgift, ofta för biverkningar | Beräknar och returnerar ett resultat |
Medan skillnaden är tydlig i teorin, suddar vissa programmeringsspråk linjerna. Till exempel kan vissa språk inte uttryckligen skilja mellan procedurer och funktioner, med termen "funktion" för att omfatta båda. Den konceptuella skillnaden förblir emellertid viktig för att förstå programdesign och modularitet.