Functies en procedures begrijpen en gebruiken

vrouwelijke webontwikkelaar die op computer werkt

Maskot/Getty Images





Heb je ooit gemerkt dat je dezelfde code steeds opnieuw schrijft om een ​​veelvoorkomende taak uit te voeren?gebeurtenis handlers? Ja! Het is tijd voor u om te leren over programma's binnen een programma. Laten we die miniprogramma's subroutines noemen.

Inleiding tot subroutines

Subroutines zijn een belangrijk onderdeel van elke programmeertaal , en ​ Delphi is geen uitzondering. In Delphi zijn er over het algemeen twee soorten subroutines: een functie en een procedure. Het gebruikelijke verschil tussen een functie en een procedure is dat een functie een waarde kan retourneren, en een procedure zal dit over het algemeen niet doen. Een functie wordt normaal gesproken aangeroepen als onderdeel van een expressie.



Kijk eens naar de volgende voorbeelden:

|__+_|

Nadat subroutines zijn gedefinieerd, kunnen we ze een of meerdere keren aanroepen:



|__+_|

Functies en procedures

Zoals we kunnen zien, werken zowel functies als procedures als miniprogramma's. In het bijzonder kunnen ze hun eigen type, constanten en variabele declaraties in zich hebben.

Bekijk een (diverse) SomeCalc-functie van naderbij:

|__+_|

Elke procedure of functie begint met a koptekst die de procedure of functie identificeert en de parameters de routine gebruikt indien aanwezig. De parameters staan ​​tussen haakjes. Elke parameter heeft een identificerende naam en heeft meestal een type. Een puntkomma scheidt parameters in een parameterlijst van elkaar.

sStr, iYear en iMonth worden genoemd constante parameters: . Constante parameters kunnen niet worden gewijzigd door de functie (of procedure). De iDay wordt doorgegeven als een was parameter , en we kunnen er wijzigingen in aanbrengen, binnen de subroutine.



Functies, aangezien ze waarden retourneren, moeten a . hebben retourtype: gedeclareerd aan het einde van de kop. De retourwaarde van een functie wordt gegeven door de (laatste) toewijzing aan zijn naam. Aangezien elke functie impliciet een lokale variabele Resultaat heeft van hetzelfde type als de functieretourwaarde, heeft het toewijzen aan Resultaat hetzelfde effect als het toewijzen aan de naam van de functie.

Subroutines positioneren en oproepen

Subroutines worden altijd in het implementatiegedeelte van de unit geplaatst. Dergelijke subroutines kunnen worden aangeroepen (gebruikt) door een event-handler of subroutine in dezelfde eenheid die erna is gedefinieerd.



Opmerking: de gebruiksclausule van een eenheid vertelt u welke eenheden het kan aanroepen. Als we willen dat een specifieke subroutine in een Unit1 bruikbaar is voor de event-handlers of subroutines in een andere unit (zeg Unit2), dan moeten we:

  • Voeg Unit1 toe aan de gebruiksclausule van Unit2
  • Plaats een kopie van de kop van de subroutine in de interfacesectie van Unit1.

Dit betekent dat subroutines waarvan de koppen worden gegeven in de interfacesectie zijn globaal bereik .



Wanneer we een functie (of een procedure) binnen zijn eigen eenheid aanroepen, gebruiken we zijn naam met wat dan ook parameters zijn nodig. Aan de andere kant, als we een globale subroutine aanroepen (gedefinieerd in een andere eenheid, bijvoorbeeld MyUnit), gebruiken we de naam van de eenheid gevolgd door een punt.

|__+_|

Opmerking: functies of procedures kunnen hun eigen subroutines hebben die erin zijn ingebed. Een ingebedde subroutine is lokaal voor de containersubroutine en kan niet door andere delen van het programma worden gebruikt. Zoiets als:



|__+_|