Type procedure
Les types Procédure sont un peu "similaires aux Types Pointeurs, mais ils ne pointent pas vers des objets de données, mais vers des procédures ou des fonctions. Les adresses des procédures peuvent donc être mémorisées dans des variables de procédure et ces procédures peuvent être appelées ultérieurement. Pour que le compilateur puisse vérifier si le type et le nombre de paramètres sont corrects et pour qu'il connaisse le type d'un résultat de fonction possible, toutes ces choses doivent être spécifiées dans la déclaration du type de procédure. En fin de compte, la définition d'un type de procédure est très "similaire à l'en-tête d'une Déclaration de procédure normale.
Voici quelques exemples:
Les noms des paramètres dans une telle déclaration sont ignorés en toute confiance par le compilateur - ils améliorent seulement (espérons-le!) la lisibilité du programme.type Proc = procedure; { Une procédure sans paramètres } RealFunc = function(x: Real): Real; { Paramètres réels et résultat }
Les types Procédure permettent de formuler des programmes de manière plus générale. Par exemple, si vous voulez dessiner les valeurs d'une fonction, peu importe quelle fonction est dessinée pour l'algorithme de dessin réel - il est seulement important que vous appeliez la fonction avec une valeur x comme paramètre et le y -valeur comme résultat. Avec les types de procédure, vous pouvez maintenant passer la fonction en tant que paramètre, quelque chose comme ceci:
PROCEDURE FonctionDessin( xMin, xMax: Real; Fonction: RealFunc); VAR x, y: Real; BEGIN { calculer x courant } y := Fonction(x); { Dessiner un point à x, y } END;
Une restriction doit être observée: les procédures et fonctions locales aux autres ne doivent pas être affectées à des variables de procédure ou passées en tant que paramètres de procédure.