Up ! Mathematical - Vecteur

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

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

Commande d'exécution

vecteur4

Mode interprété

upssng Source=vecteur4.upl

Fichier source

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

Procedure EcrireVecteur(Libelle : Caractere, V : Vecteur[?] De Nul Ou Entier)
/***************************************************************************/
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 Entier)
/*************************************/
Debut Ecran.Ecrire(Caractere(D, "-&&&.&&&.&&&.&&#"));
Fin Procedure

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

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

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

Procedure EcrireMatrice(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Entier)
/*****************************************************************************/
Variable
/******/
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Pour I=0 JusquA M.NbLignes-1 Faire Fin Pour
Fin Procedure

Principal
/*******/
Variable
/******/
Debut
A[0]=1;
A[1]=2;
A[2]=3;
EcrireVecteur("A", A);
B={4, 5, 6};
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="+Caractere(X, "-&&&.&&&.&&&.&&#"));
C=A.Cloner();
EcrireVecteur("++C", ++C);
EcrireVecteur("--C", --C);
C=C^4;
EcrireVecteur("C^4", C);
Ecran.Ecrire(");

C=2;
EcrireVecteur("C=2", C);
C+=3;
EcrireVecteur("C+=3", C);
C-=3;
EcrireVecteur("C-=3", C);
C*=3;
EcrireVecteur("C*=3", C);
C/=3;
EcrireVecteur("C/=3", C);
C^=4;
EcrireVecteur("C^=4", C);
Ecran.Ecrire(");

C=A.Copier(0, 3);
EcrireVecteur("Copier()", C);
C=0;
C.Coller(0, A);
EcrireVecteur("Coller()", C);
C=A.Inserer(1, 10);
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={1, 1, 2};
M={A, B, A};
EcrireMatrice("M=A", M);
M={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
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, 2, 3} B ------------- {4, 5, 6} A+B ------------- {5, 7, 9} -A ------------- {-1, -2, -3} A-B ------------- {-3, -3, -3} A*B ------------- {{4, 5, 6} {8, 10, 12} {12, 15, 18}} A.B=32 ++C ------------- {2, 3, 4} --C ------------- {1, 2, 3} C^4 ------------- {1, 16, 81} C=2 ------------- {2, 2, 2} C+=3 ------------- {5, 5, 5} C-=3 ------------- {2, 2, 2} C*=3 ------------- {6, 6, 6} C/=3 ------------- {2, 2, 2} C^=4 ------------- {16, 16, 16} Copier() ------------- {1, 2, 3} Coller() ------------- {1, 2, 3} Inserer() ------------- {1, 10, 2, 3} Supprimer() ------------- {1, 3} Permuter() ------------- {3, 2, 1} 1 2 3 1+4 2+5 3+6 Appliquer3() ------------- {-1, -2, -3} Appliquer4() ------------- {-5, -7, -9} M=A ------------- {{1, 1, 2} {4, 5, 6} {1, 1, 2}} M*A ------------- {9, 21, 33} InsererColonne() ------------- {{1, 1, 2, 3} {4, 1, 5, 6} {7, 2, 8, 9}} InsererLigne() ------------- {{1, 2, 3} {1, 1, 2} {4, 5, 6} {7, 8, 9}}