Up ! Mathematical - Vecteur

Ce programme présente l'usage des vecteurs de décimaux.

Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/vecteur2.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.

Mode compilé

Commande de compilation

upscmp Source=vecteur2.upl

Commande d'exécution

vecteur2 TaillePartieDecimale=36 TaillePartieEntiere=36

Mode interprété

upssng Source=vecteur2.upl TaillePartieDecimale=36 TaillePartieEntiere=36

Fichier source

Source Composant "Exemple d'emploi du type Vecteur" Version 4.0.0;

Procedure EcrireVecteur(Libelle : Caractere, V : Vecteur[?] De Nul Ou Decimal)
/****************************************************************************/
Variable
/******/
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Ligne="{";
Pour I=0 JusquA V.NbDimensions-1 Faire Fin Pour
Ligne+="}";
Ecran.Ecrire(Ligne);
Fin Procedure

Procedure Appliquer1(D : Nul Ou Decimal)
/**************************************/
Debut
Ecran.Ecrire(D.VersCaractere("-&&&.&&&.&&&.&&#,#&&"));
Fin Procedure

Procedure Appliquer2(D1 : Nul Ou Decimal, D2 : Nul Ou Decimal)
/************************************************************/
Debut
Ecran.Ecrire(D1.VersCaractere("-&&&.&&&.&&&.&&#,#&&")+"+"+D2.VersCaractere("-&&&.&&&.&&&.&&#,#&&"));
Fin Procedure

Fonction Appliquer3(D : Nul Ou Decimal) Retourner Nul Ou Decimal
/**************************************************************/
Debut
Retourner -D;
Fin Fonction

Fonction Appliquer4(D1 : Nul Ou Decimal, D2 : Nul Ou Decimal) Retourner Nul Ou Decimal
/************************************************************************************/
Debut
Retourner -(D1+D2);
Fin Fonction

Procedure EcrireMatrice(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Decimal)
/******************************************************************************/
Variable
/******/
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Pour I=0 JusquA M.NbLignes-1 Faire Fin Si
Pour J=0 JusquA M.NbColonnes-1 Faire Fin Pour
Si I==M.NbLignes-1 Alors Sinon Ligne+="}"; Fin Si
Ecran.Ecrire(Ligne); Fin Pour
Fin Procedure

Principal
/*******/
Variable
/******/
Debut
A[0]=Decimal(1.0);
A[1]=Decimal(2.0);
A[2]=Decimal(3.0);
EcrireVecteur("A", A);
B={Decimal(4.0), Decimal(5.0), Decimal(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=Decimal(2.0);
EcrireVecteur("C=2.0", C);
C+=Decimal(3.0);
EcrireVecteur("C+=3.0", C);
C-=Decimal(3.0);
EcrireVecteur("C-=3.0", C);
C*=Decimal(3.0);
EcrireVecteur("C*=3.0", C);
C/=Decimal(3.0);
EcrireVecteur("C/=3.0", C);
C^=4;
EcrireVecteur("C^=4", C);
Ecran.Ecrire(");

C=A.Copier(0, 3);
EcrireVecteur("Copier()", C);
C=Decimal(0.0);
C.Coller(0, A);
EcrireVecteur("Coller()", C);
C=A.Inserer(1, Decimal(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={Decimal(1.0), Decimal(1.0), Decimal(2.0)};
X=Decimal(Abs(A));
Ecran.Ecrire("Abs(A)="+X.VersCaractere("-&&&.&&&.&&&.&&#,#&&.&&&"));
Ecran.Ecrire(");

M={A, B, A};
EcrireMatrice("M=A", M);
M={{Decimal(1.0), Decimal(2.0), Decimal(3.0)}, {Decimal(4.0), Decimal(5.0), Decimal(6.0)}, {Decimal(7.0), Decimal(8.0), Decimal(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

Résultat de l'exécution

A ------------- {1,0, 2,0, 3,0} B ------------- {4,0, 5,0, 6,0} A+B ------------- {5,0, 7,0, 9,0} -A ------------- {-1,0, -2,0, -3,0} A-B ------------- {-3,0, -3,0, -3,0} A*B ------------- {{4,0, 5,0, 6,0} {8,0, 10,0, 12,0} {12,0, 15,0, 18,0}} A.B=32,0 ++C ------------- {2,0, 3,0, 4,0} --C ------------- {1,0, 2,0, 3,0} C^4 ------------- {1,0, 16,0, 81,0} C=2.0 ------------- {2,0, 2,0, 2,0} C+=3.0 ------------- {5,0, 5,0, 5,0} C-=3.0 ------------- {2,0, 2,0, 2,0} C*=3.0 ------------- {6,0, 6,0, 6,0} C/=3.0 ------------- {2,0, 2,0, 2,0} C^=4 ------------- {16,0, 16,0, 16,0} Copier() ------------- {1,0, 2,0, 3,0} Coller() ------------- {1,0, 2,0, 3,0} Inserer() ------------- {1,0, 10,0, 2,0, 3,0} Supprimer() ------------- {1,0, 3,0} Permuter() ------------- {3,0, 2,0, 1,0} 1,0 2,0 3,0 1,0+4,0 2,0+5,0 3,0+6,0 Appliquer3() ------------- {-1,0, -2,0, -3,0} Appliquer4() ------------- {-5,0, -7,0, -9,0} Abs(A)=2,449.489 M=A ------------- {{1,0, 1,0, 2,0} {4,0, 5,0, 6,0} {1,0, 1,0, 2,0}} M*A ------------- {9,0, 21,0, 33,0} InsererColonne() ------------- {{1,0, 1,0, 2,0, 3,0} {4,0, 1,0, 5,0, 6,0} {7,0, 2,0, 8,0, 9,0}} InsererLigne() ------------- {{1,0, 2,0, 3,0} {1,0, 1,0, 2,0} {4,0, 5,0, 6,0} {7,0, 8,0, 9,0}}