Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/conversion2.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=conversion2.upl
conversion2
upssng Source=conversion2.upl
Source Composant "Exemple d'emploi du type Matrice" Version 4.0.0;
Procedure EcrireMatriceEntier(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Entier)
/***********************************************************************************/
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+=Caractere(M[I,J], "-&&&.&&&.&&&.&");
Fin Pour
Si I==M.NbLignes-1 Alors
Ligne+="}}";
Sinon
Ligne+="}";
Fin Si
Ecran.Ecrire(Ligne);
Fin Pour
Fin Procedure
Procedure EcrireMatriceReel(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Reel)
/*******************************************************************************/
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+=Caractere(M[I,J], "-&&&.&&&.&&&.&,#&&.&&&");
Fin Pour
Si I==M.NbLignes-1 Alors
Ligne+="}}";
Sinon
Ligne+="}";
Fin Si
Ecran.Ecrire(Ligne);
Fin Pour
Fin Procedure
Procedure EcrireMatriceDecimal(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Decimal)
/*************************************************************************************/
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
Procedure EcrireMatriceComplexe(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
Procedure EcrireVecteurEntier(Libelle : Caractere, V : Vecteur[?] De Nul Ou Entier)
/*********************************************************************************/
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+=Caractere(V[I], "-&&&.&&&.&&&.&");
Fin Pour
Ligne+="}";
Ecran.Ecrire(Ligne);
Fin Procedure
Procedure EcrireVecteurReel(Libelle : Caractere, V : Vecteur[?] De Nul Ou Reel)
/*****************************************************************************/
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+=Caractere(V[I], "-&&&.&&&.&&&.&,#&&.&&&");
Fin Pour
Ligne+="}";
Ecran.Ecrire(Ligne);
Fin Procedure
Procedure EcrireVecteurDecimal(Libelle : Caractere, V : Vecteur[?] De Nul Ou Decimal)
/***********************************************************************************/
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 EcrireVecteurComplexe(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
Principal
/*******/
Variable
/******/
A1 : Matrice[3,3] De Nul Ou Entier;
A2 : Matrice[3,3] De Nul Ou Reel;
A3 : Matrice[3,3] De Nul Ou Decimal;
A4 : Matrice[3,3] De Nul Ou Complexe;
B1 : Matrice[3,3] De Nul Ou Entier;
B2 : Matrice[3,3] De Nul Ou Reel;
B3 : Matrice[3,3] De Nul Ou Decimal;
B4 : Matrice[3,3] De Nul Ou Complexe;
C1 : Vecteur[3] De Nul Ou Entier;
C2 : Vecteur[3] De Nul Ou Reel;
C3 : Vecteur[3] De Nul Ou Decimal;
C4 : Vecteur[3] De Nul Ou Complexe;
D1 : Vecteur[3] De Nul Ou Entier;
D2 : Vecteur[3] De Nul Ou Reel;
D3 : Vecteur[3] De Nul Ou Decimal;
D4 : Vecteur[3] De Nul Ou Complexe;
Debut
A1={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
A2={{2.0, 3.0, 4.0}, {5.0, 6.0, 7.0}, {8.0, 9.0, 1.0}};
A3={{Decimal(3.0), Decimal(4.0), Decimal(5.0)}, {Decimal(6.0), Decimal(7.0), Decimal(8.0)}, {Decimal(9.0), Decimal(1.0), Decimal(2.0)}};
A4={{Complexe(4.0), Complexe(5.0), Complexe(6.0)}, {Complexe(7.0), Complexe(8.0), Complexe(9.0)}, {Complexe(1.0), Complexe(2.0), Complexe(3.0)}};
B2=A1.VersMatrice(Reel);
EcrireMatriceReel("B2", B2);
B3=A1.VersMatrice(Decimal);
EcrireMatriceDecimal("B3", B3);
B4=A1.VersMatrice(Complexe);
EcrireMatriceComplexe("B4", B4);
Ecran.Ecrire(");
B1=A2.VersMatrice(Entier);
EcrireMatriceEntier("B1", B1);
B3=A2.VersMatrice(Decimal);
EcrireMatriceDecimal("B3", B3);
B4=A2.VersMatrice(Complexe);
EcrireMatriceComplexe("B4", B4);
Ecran.Ecrire(");
B1=A3.VersMatrice(Entier);
EcrireMatriceEntier("B1", B1);
B2=A3.VersMatrice(Reel);
EcrireMatriceReel("B2", B2);
B4=A3.VersMatrice(Complexe);
EcrireMatriceComplexe("B4", B4);
Ecran.Ecrire(");
B1=A4.VersMatrice(Entier);
EcrireMatriceEntier("B1", B1);
B2=A4.VersMatrice(Reel);
EcrireMatriceReel("B2", B2);
B3=A4.VersMatrice(Decimal);
EcrireMatriceDecimal("B3", B3);
Ecran.Ecrire(");
C1={1, 2, 3};
C2={2.0, 3.0, 4.0};
C3={Decimal(3.0), Decimal(4.0), Decimal(5.0)};
C4={Complexe(4.0), Complexe(5.0), Complexe(6.0)};
D2=C1.VersVecteur(Reel);
EcrireVecteurReel("D2", D2);
D3=C1.VersVecteur(Decimal);
EcrireVecteurDecimal("D3", D3);
D4=C1.VersVecteur(Complexe);
EcrireVecteurComplexe("D4", D4);
Ecran.Ecrire(");
D1=C2.VersVecteur(Entier);
EcrireVecteurEntier("D1", D1);
D3=C2.VersVecteur(Decimal);
EcrireVecteurDecimal("D3", D3);
D4=C2.VersVecteur(Complexe);
EcrireVecteurComplexe("D4", D4);
Ecran.Ecrire(");
D1=C3.VersVecteur(Entier);
EcrireVecteurEntier("D1", D1);
D2=C3.VersVecteur(Reel);
EcrireVecteurReel("D2", D2);
D4=C3.VersVecteur(Complexe);
EcrireVecteurComplexe("D4", D4);
Ecran.Ecrire(");
D1=C4.VersVecteur(Entier);
EcrireVecteurEntier("D1", D1);
D2=C4.VersVecteur(Reel);
EcrireVecteurReel("D2", D2);
D3=C4.VersVecteur(Decimal);
EcrireVecteurDecimal("D3", D3);
Ecran.Ecrire(");
Fin Principal