PROGRAMMATION : FONCTIONS (2)
Liste des figures
Figure fig_va01_070210_void_procedure
figure 0001
Figure fig_va02_080210_void_procedure
figure 0002
Asymptote - Figure 0001: fig_va01_070210_void_procedure.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_va01_070210_void_procedure
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
// Je définis une procédure (fonction qui ne renvoie pas de donnée) 
// qui échange les premier et dernier termes d'une suite de réels.
void echangerpremierdernier(real[] uneliste)  
{ 
  real tempo;
  int nbrtermes=uneliste.length;
  tempo=uneliste[0];
  uneliste[0]=uneliste[nbrtermes-1];
  uneliste[nbrtermes-1]=tempo;
}
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

  size(7cm);
  // Test de la procédure sur une liste a quelconque
  real[] a={2.3,3,4.56,5,7.8};
  int n=a.length; // nombre de termes de la liste a dans n

  // J'affiche la liste a initiale. 
  for(int i=0; i<n; ++i) label(string(a[i]),(i,0));
  // Remplacer la ligne précédente par : write(a); pour un affichage en console.

  // J'applique la procédure à la liste a puis j'affiche la liste a modifiée.
  echangerpremierdernier(a);
  for(int i=0; i<n; ++i) label(string(a[i]),(i,-2));

  shipout(bbox(.5cm,Fill(white)));
Asymptote - Figure 0002: fig_va02_080210_void_procedure.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_va02_080210_void_procedure
// Exemple précédent, avec cette fois, une fonction qui ne modifie pas la
// liste initiale mais qui renvoie la liste modifiée dans une nouvelle variable.
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
real[] liste_extremesinverses(real[] uneliste)  
{ 
  int n=uneliste.length;
  real[] listemodifiee=new real[n];
  for(int i=0; i<n; ++i)
    if(i*(n-1-i)!=0) listemodifiee[i]=uneliste[i];
    else listemodifiee[i]=uneliste[n-1-i];
  return listemodifiee;
}
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

  size(7cm);
  // Test de la fonction sur une liste a quelconque : liste modifiée dans la variable b.
  real[] a={2.3,3,4.56,5,7.8};
  real[] b=liste_extremesinverses(a);

  for(int i=0; i<a.length; ++i) // a.length est le nbr de termes dans a et dans b
  {  
     label(string(a[i]),(i,0));
     label(string(b[i]),(i,-2));
  }
  shipout(bbox(.5cm,Fill(white)));

Dernière modification le Fri Oct 28 13:01:26 CEST 2011 par G.Marris       Valide XHTML