Emploi des procédures et des méthodes sur plusieurs composants

Ce programme présente un programme construit à partir de plusieurs fichiers sources donc comportant plusieurs composants.

Les fichiers sources sont dans le répertoire ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/appel/.

Mode compilé

Commande de compilation

upscmp Source=appel.upl

Commande d'exécution

appel

Mode interprété

upssng Source=appel.upl

Fichiers sources

Source du module

Source Module "Exemple d'emploi des appels" Version 4.0.0 ModuleStatique;

Composant Dans "c:/up/exemples/appel1.upl";
Composant Dans "c:/up/exemples/appel2.upl";

Source du premier composant

Source Composant "Exemple d'emploi des appels" Version 4.0.0 RattacherA "c:/up/exemples/appel.upl";

Type TypeA Defaut
/***************/
Fin Type

Variable
/******/
Prive :
/*****/
Procedure P(A : Entier)
/*******************/
Debut
Ecran.Ecrire("P(A:Entier);");
Fin Procedure

Procedure TypeA.Ecrire(P1 : Entier)
/*******************************/
Debut
Ecran.Ecrire("TypeA.Ecrire(P1:Entier)");
Ecran.Ecrire(P1);
Ecran.Ecrire("\n");
Fin Procedure

DebuterComposant
/**************/
Debut
I="Bonjour";
Fin DebuterComposant

TerminerComposant
/***************/
Debut
I=Nul;
Fin TerminerComposant

Source du second composant

Source Composant "Exemple d'emploi des appels" Version 4.0.0 RattacherA "c:/up/exemples/appel.upl";

Fonction Factorielle2(N : Entier) Retourner Entier Recursif;
Fonction Factorielle3(N : Entier) Retourner Entier Recursif;

Procedure ActiverMiseAuPoint(A : Caractere)
/*****************************************/
Debut
Ecran.Ecrire("ActiverMiseAuPoint(A:Caractere)");
Ecran.Ecrire(A);
Ecran.Ecrire("\n");
Fin Procedure

Procedure P(A : Caractere Entree Sortie)
/**************************************/
Debut
Ecran.Ecrire("P(A:Caractere Entree Sortie)");
Ecran.Ecrire(A);
Ecran.Ecrire("\n");
A="hello";
Fin Procedure

Procedure TypeA.Ecrire(P1 : Caractere)
/************************************/
Debut
Ecran.Ecrire("TypeA.Ecrire(P1:Caractere)");
Ecran.Ecrire(P1);
Ecran.Ecrire("\n");
Fin Procedure

Fonction Factorielle(N : Entier) Retourner Entier
/***********************************************/
Debut
Si N==0 Alors Fin Si
Retourner N*Factorielle(N-1);
Fin Fonction

Fonction Factorielle2(N : Entier) Retourner Entier
/************************************************/
Debut
Si N==0 Alors Fin Si
Retourner N*Factorielle3(N-1);
Fin Fonction

Fonction Factorielle3(N : Entier) Retourner Entier
/************************************************/
Debut
Si N==0 Alors Fin Si
Retourner N*Factorielle2(N-1);
Fin Fonction

Fonction FBooleen(A : Booleen Entree, B : Booleen Entree Sortie , C : Booleen Sortie) Retourner Booleen
/**********************************************************/
Debut
Ecran.Ecrire("FBooleen");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=Faux;
C=Faux;
Retourner Vrai;
Fin Fonction

Fonction FBooleenNul(A : Nul Ou Booleen Entree, B : Nul Ou Booleen Entree Sortie, C : Nul Ou Booleen Sortie) Retourner Nul Ou Booleen
/*************************************************************************/
Debut
Ecran.Ecrire("FBooleenNul");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=Faux;
C=Faux;
Retourner Vrai;
Fin Fonction

Fonction FEntier(A : Entier Entree, B : Entier Entree Sortie, C : Entier Sortie) Retourner Entier
/**********************************************************/
Debut
Ecran.Ecrire("FEntier");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=0;
C=-1;
Retourner 1;
Fin Fonction

Fonction FEntierNul(A : Nul Ou Entier Entree, B : Nul Ou Entier Entree Sortie, C : Nul Ou Entier Sortie) Retourner Nul Ou Entier
/*************************************************************************/
Debut
Ecran.Ecrire("FEntierNul");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=0;
C=-1;
Retourner 1;
Fin Fonction

Fonction FReel(A : Reel Entree, B : Reel Entree Sortie, C : Reel Sortie) Retourner Reel
/**********************************************************/
Debut
Ecran.Ecrire("FReel");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=0.0;
C=-1.0;
Retourner 1.0;
Fin Fonction

Fonction FReelNul(A : Nul Ou Reel Entree, B : Nul Ou Reel Entree Sortie, C : Nul Ou Reel Sortie) Retourner Nul Ou Reel
/*************************************************************************/
Debut
Ecran.Ecrire("FReelNul");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=0.0;
C=-1.0;
Retourner 1.0;
Fin Fonction

Fonction FCaractere(A : Caractere Entree, B : Caractere Entree Sortie, C : Caractere Sortie) Retourner Caractere
/**********************************************************/
Debut
Ecran.Ecrire("FCaractere");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=";
C="Guten tag";
Retourner "Hello";
Fin Fonction

Fonction FCaractereNul(A : Nul Ou Caractere Entree, B : Nul Ou Caractere Entree Sortie, C : Nul Ou Caractere Sortie) Retourner Nul Ou Caractere
/*************************************************************************/
Debut
Ecran.Ecrire("FCaractereNul");
Ecran.Ecrire(A);
Ecran.Ecrire(B);
B=";
C="Guten tag";
Retourner "Hello";
Fin Fonction

Fonction CalculerCompteur(C : Entier) Retourner Entier
/**************************************************/
Debut
Retourner 10-C;
Fin Fonction

Principal
/*******/
Variable
/******/
Debut
Ecran.Ecrire(I);
VTypeA.Ecrire(1);
VTypeA.Ecrire("coucou");
ActiverMiseAuPoint("Mise au point demandée");
Ecran.Ecrire(Factorielle(5));
Ecran.Ecrire(Factorielle2(5));
Ecran.Ecrire("\n");

B1=Vrai;
Ecran.Ecrire(FBooleen(Vrai, B1, B2));
Ecran.Ecrire(B2);
B3=Vrai;
Ecran.Ecrire(FBooleen(Vrai, B3, B4));
Ecran.Ecrire(B4);
B1=Vrai;
Ecran.Ecrire(FBooleenNul(Vrai, B1, B2));
Ecran.Ecrire(B2);
B3=Vrai;
Ecran.Ecrire(FBooleenNul(Vrai, B3, B4));
Ecran.Ecrire(B4);

E1=3;
Ecran.Ecrire(FEntier(2, E1, E2));
Ecran.Ecrire(E2);
E3=3;
Ecran.Ecrire(FEntier(2, E3, E4));
Ecran.Ecrire(E4);
E1=3;
Ecran.Ecrire(FEntierNul(2, E1, E2));
Ecran.Ecrire(E2);
E3=3;
Ecran.Ecrire(FEntierNul(2, E3, E4));
Ecran.Ecrire(E4);

R1=3.0;
Ecran.Ecrire(FReel(2.0, R1, R2));
Ecran.Ecrire(R2);
R3=3.0;
Ecran.Ecrire(FReel(2.0, R3, R4));
Ecran.Ecrire(R4);
R1=3.0;
Ecran.Ecrire(FReelNul(2.0, R1, R2));
Ecran.Ecrire(E2);
R3=3.0;
Ecran.Ecrire(FReelNul(2.0, R3, R4));
Ecran.Ecrire(R4);

C1="Bonjour";
Ecran.Ecrire(FCaractere("Buenos dias", C1, C2));
Ecran.Ecrire(C2);
C3="Bonjour";
Ecran.Ecrire(FCaractere("Buenos dias", C3, C4));
Ecran.Ecrire(C4);
C1="Bonjour";
Ecran.Ecrire(FCaractereNul("Buenos dias", C1, C2));
Ecran.Ecrire(C2);
C3="Bonjour";
Ecran.Ecrire(FCaractereNul("Buenos dias", C3, C4));
Ecran.Ecrire(C4);

C=0;
TantQue CalculerCompteur(C)!=5 Faire Fin TantQue
Ecran.Ecrire("\n");

Pour C=0 JusquA CalculerCompteur(C) Faire
Fin Pour
Ecran.Ecrire("\n");

C=0;
Faire JusquA Fin Faire
Fin Principal

Résultat de l'exécution

Bonjour TypeA.Ecrire(P1:Entier) 1 TypeA.Ecrire(P1:Caractere) coucou ActiverMiseAuPoint(A:Caractere) Mise au point demandée 120 120 FBooleen Vrai Vrai Vrai Faux FBooleen Vrai Vrai Vrai Faux FBooleenNul Vrai Vrai Vrai Faux FBooleenNul Vrai Vrai Vrai Faux FEntier 2 3 1 -1 FEntier 2 3 1 -1 FEntierNul 2 3 1 -1 FEntierNul 2 3 1 -1 FReel 2.0 3.0 1.0 -1.0 FReel 2.0 3.0 1.0 -1.0 FReelNul 2.0 3.0 1.0 -1 FReelNul 2.0 3.0 1.0 -1.0 FCaractere Buenos dias Bonjour Hello Guten tag FCaractere Buenos dias Bonjour Hello Guten tag FCaractereNul Buenos dias Bonjour Hello Guten tag FCaractereNul Buenos dias Bonjour Hello Guten tag 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4