Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/vecteur3.upl.
Cet exemple utilise les instructions de l'extension d'Up ! 5GL pour Up ! Mathematical.
Pour analyser le fichier source, UpsMat.upi doit être déclaré parmi les modules importés dans le fichier ${UPS_HOME}/ini/${UPS_USER}/upsp5l.ini.
upscmp Source=vecteur3.upl
vecteur3
upssng Source=vecteur3.upl
Source Composant "Exemple d'emploi du type Vecteur" Version 4.0.0;
Procedure EcrireVecteur(Libelle : Caractere, V : Vecteur[?] De Nul Ou Complexe)
/*****************************************************************************/
Variable
/******/
I : Entier;
Ligne : Nul Ou Caractere;
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Ligne="{";
Pour I=0 JusquA V.NbDimensions-1 Faire
Si I!=0 Alors
Ligne+=", ";
Fin Si
Ligne+=V[I].VersCaractere("-&&&.&&&.&&&.&,#&&.&&&");
Fin Pour
Ligne+="}";
Ecran.Ecrire(Ligne);
Fin Procedure
Procedure Appliquer1(D : Nul Ou Complexe)
/***************************************/
Debut
Ecran.Ecrire(D.VersCaractere("-&&&.&&&.&&&.&,#&&"));
Fin Procedure
Procedure Appliquer2(D1 : Nul Ou Complexe, D2 : Nul Ou Complexe)
/**************************************************************/
Debut
Ecran.Ecrire(D1.VersCaractere("-&&&.&&&.&&&.&,#&&")+"+"+D2.VersCaractere("-&&&.&&&.&&&.&,#&&"));
Fin Procedure
Fonction Appliquer3(D : Nul Ou Complexe) Retourner Nul Ou Complexe
/****************************************************************/
Debut
Retourner -D;
Fin Fonction
Fonction Appliquer4(D1 : Nul Ou Complexe, D2 : Nul Ou Complexe) Retourner Nul Ou Complexe
/***************************************************************************************/
Debut
Retourner -(D1+D2);
Fin Fonction
Procedure EcrireMatrice(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Complexe)
/*****************************************************************************/
Variable
/******/
I : Entier;
J : Entier;
Ligne : Nul Ou Caractere;
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Pour I=0 JusquA M.NbLignes-1 Faire
Si I==0 Alors
Ligne="{{";
Sinon
Ligne=" {";
Fin Si
Pour J=0 JusquA M.NbColonnes-1 Faire
Si J!=0 Alors
Ligne+=", ";
Fin Si
Ligne+=M[I,J].VersCaractere("-&&&.&&&.&&&.&,#&&.&&&");
Fin Pour
Si I==M.NbLignes-1 Alors
Ligne+="}}";
Sinon
Ligne+="}";
Fin Si
Ecran.Ecrire(Ligne);
Fin Pour
Fin Procedure
Principal
/*******/
Variable
/******/
A : Vecteur[3] De Nul Ou Complexe;
B : Vecteur[3] De Nul Ou Complexe;
C : Nul Ou Vecteur[?] De Nul Ou Complexe;
X : Nul Ou Complexe;
M : Matrice[3,3] De Nul Ou Complexe;
N : Nul Ou Matrice[?,?] De Nul Ou Complexe;
Debut
A[0]=Complexe(1.0);
A[1]=Complexe(2.0);
A[2]=Complexe(3.0);
EcrireVecteur("A", A);
B={Complexe(4.0), Complexe(5.0), Complexe(6.0)};
EcrireVecteur("B", B);
Ecran.Ecrire(");
C=A+B;
EcrireVecteur("A+B", C);
C=-A;
EcrireVecteur("-A", C);
C=A-B;
EcrireVecteur("A-B", C);
N=A*B;
EcrireMatrice("A*B",N);
X=A.B;
Ecran.Ecrire("A.B="+X.VersCaractere("-&&&.&&&.&&&.&,#&&.&&&"));
C=A.Cloner();
EcrireVecteur("++C", ++C);
EcrireVecteur("--C", --C);
C=C^4;
EcrireVecteur("C^4", C);
Ecran.Ecrire(");
C=Complexe(2.0);
EcrireVecteur("C=2.0", C);
C+=Complexe(3.0);
EcrireVecteur("C+=3.0", C);
C-=Complexe(3.0);
EcrireVecteur("C-=3.0", C);
C*=Complexe(3.0);
EcrireVecteur("C*=3.0", C);
C/=Complexe(3.0);
EcrireVecteur("C/=3.0", C);
C^=4;
EcrireVecteur("C^=4", C);
Ecran.Ecrire(");
C=A.Copier(0, 3);
EcrireVecteur("Copier()", C);
C=Complexe(0.0);
C.Coller(0, A);
EcrireVecteur("Coller()", C);
C=A.Inserer(1, Complexe(10.0));
EcrireVecteur("Inserer()", C);
C=A.Supprimer(1);
EcrireVecteur("Supprimer()", C);
C=A.Copier(0, 3);
C.Permuter(0, 2);
EcrireVecteur("Permuter()", C);
Ecran.Ecrire(");
A.Appliquer(Appliquer1);
A.Appliquer(Appliquer2, B);
C=A.Appliquer(Appliquer3);
EcrireVecteur("Appliquer3()", C);
C=A.Appliquer(Appliquer4, B);
EcrireVecteur("Appliquer4()", C);
Ecran.Ecrire(");
A={Complexe(1.0), Complexe(1.0), Complexe(2.0)};
X=Complexe(Abs(A));
Ecran.Ecrire("Abs(A)="+X.VersCaractere("-&&&.&&&.&&&.&,#&&.&&&"));
Ecran.Ecrire(");
M={A, B, A};
EcrireMatrice("M=A", M);
M={{Complexe(1.0), Complexe(2.0), Complexe(3.0)}, {Complexe(4.0), Complexe(5.0), Complexe(6.0)}, {Complexe(7.0), Complexe(8.0), Complexe(9.0)}};
C=M*A;
EcrireVecteur("M*A", C);
N=M.InsererColonne(1, A);
EcrireMatrice("InsererColonne()", N);
N=M.InsererLigne(1, A);
EcrireMatrice("InsererLigne()", N);
Ecran.Ecrire(");
Fin Principal