PROGRAMMATION : TESTS CONDITIONNELS - BOUCLES (11)
Liste des figures
Figure fig_bf01_260309_boucle_for
figure 0001
Figure fig_bf02_260309_boucle_for
figure 0002
Figure fig_bf03_260309_boucle_for
figure 0003
Figure fig_bf04_260309_boucle_for
figure 0004
Figure fig_bf05_050409_boucle_for
figure 0005
Figure fig_bg01_260309_boucle_for
figure 0006
Figure fig_bg02_050409_boucle_for
figure 0007
Figure fig_bg03_090411_boucle_for
figure 0008
Figure fig_fa01_150409_factorielle
figure 0009
Figure fig_za01_280109_carre_magique
figure 0010
Figure fig_za02_280109_carre_magique
figure 0011
Asymptote - Figure 0001: fig_bf01_260309_boucle_for.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_bf01_260309_boucle_for
/* Boucle for (pour) avec la syntaxe :
        for ( expr_initiale ; expr_condition ; expr_incrémentation) instruction;
*/
unitsize(1cm);

for(int k=0; k<5; ++k) label(format("k=%i",k),(0,-k/2));

shipout(bbox(.5cm,Fill(white)));
Asymptote - Figure 0002: fig_bf02_260309_boucle_for.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_bf02_260309_boucle_for
/* Boucle for (pour) avec la syntaxe :
        for ( expr_initiale ; expr_condition ; expr_incrémentation) {
              liste d'instructions
        }
*/
unitsize(1cm);

for(int k=7; k<12; ++k) {
    string aff=format("$u_{%i}$",k);
    label(aff,(0,-.75k));
}

shipout(bbox(.5cm,Fill(paleyellow)));
Asymptote - Figure 0003: fig_bf03_260309_boucle_for.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_bf03_260309_boucle_for
/* Boucle for (pour) avec la syntaxe :
        for ( expr_initiale ; expr_condition ; expr_incrémentation) {
              liste d'instructions
        }
*/
unitsize(1cm);

for(int k=0; k<5; ++k) {
    path c=circle(0,k/4);
    draw(c,1bp+blue);
}

shipout(bbox(.5cm,Fill(paleblue)));
Asymptote - Figure 0004: fig_bf04_260309_boucle_for.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_bf04_260309_boucle_for
unitsize(.8cm);

int b=6;  // b>3

for(int a=0; a<b-2; ++a) {
    draw ((a,a)--(a,a+1)--(a+1,a+1));
    label(format("%i",a),(a+.5,a+1),N);
}
for(int a=b-2; a<b; ++a) {
    draw ((a,a)--(a,a+1)--(a+1,a+1),dashed);
}
for(int a=0; a<2; ++a) {
    draw ((b+a,b+a)--(b+a,b+a+1)--(b+a+1,b+a+1));
    if (a != 0) label(format("$n$+%i",a),(b+a+.5,b+a+1),N); 
    else label("$n$",(b+a+.5,b+a+1),N);
}
Asymptote - Figure 0005: fig_bf05_050409_boucle_for.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_bf05_050409_boucle_for
size(7cm);

pen[] styl={green,yellow,blue,red};

for(int i=0; i<4; ++i) fill(rotate(i*90)*unitsquare,styl[i]);

for(int i=0; i<10; ++i) fill(scale(1-i/10)*unitcircle,white+opacity(.3));

Asymptote - Figure 0006: fig_bg01_260309_boucle_for.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_bg01_260309_boucle_for
// Deux boucles imbriquées pour une seule instruction

unitsize(.8cm);

string caractere="x";
int nbLignes=5, nbColonnes=3;

for (int ligne = 0; ligne < nbLignes; ++ligne)
    for (int colonne = 0; colonne < nbColonnes; ++colonne)
           label(caractere,(ligne, colonne));
Asymptote - Figure 0007: fig_bg02_050409_boucle_for.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_bg02_050409_boucle_for
// Deux boucles imbriquées

unitsize(.7cm);

int n=10;
for (int i = 0; i <= n; ++i) {
    for (int j = 0; j <= n; ++j) {
        pen p =rgb(i/n,j/n,0);
        filldraw(shift(j,i)*unitsquare,p,.2bp+black);
    }
}
Asymptote - Figure 0008: fig_bg03_090411_boucle_for.asy
(Code compilé avec Asymptote version 2.09svn)
largeur320 Figure fig_bg03_090411_boucle_for
// Deux boucles imbriquées
// Triangle de Pascal des (k parmi n)

size(200);
int nmax=7;
for(int n=0; n<=nmax; ++n)
    for(int k=0; k<=n; ++k) 
        label(string(choose(n,k)),(k,-n));

shipout(bbox(10,Fill(.7orange+white)));
Asymptote - Figure 0009: fig_fa01_150409_factorielle.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_fa01_150409_factorielle
/* Ce qui suit n'est plus utile depuis la révision 4127, où ont été 
   implémentés : factorial(Int n) et choose(Int n, Int k) mais cela reste 
   un exemple intéressant du point de vue des possibilités de programmation.
*/
usepackage("siunitx", "locale=DE");
size(7cm,7cm,IgnoreAspect);

// Fonction donnant la factorielle de n de façon itérative
int factorielle_ite(int n) { 
    if (n<=1) return 1;
    else {
        int f=1; 
        for(int i=2;i<=n;++i) f=f*i;
        return f;
    }
} 
// Fonction donnant la factorielle de n de façon récursive
int factorielle_rec(int n) { 
    if (n == 0) return 1; 
    else return n * factorielle_rec(n-1);
} 
int x=0,y=0;
label("n",(x,y)); label("factorielle\_ite(n)",(++x,y+1));
                  label("factorial(n)",(x+=2,y+1));
for (int k=0; k<10; ++k) {
    x=0; --y;
    label(format(k),(x,y));
    label(format("\num{%i}",factorielle_ite(k)),(++x,y));
    label(format("\num{%i}",factorielle_rec(k)),(++x,y));
    label(format("\num{%i}",factorial(k)),(++x,y));    
}
label("factorielle\_rec(n)",(--x,y-=2));
shipout(bbox(.2cm,Fill(palegreen)));
Asymptote - Figure 0010: fig_za01_280109_carre_magique.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_za01_280109_carre_magique
import math;
size(7cm);

void carremagique(int n){
        int i=0,j,k=1;
        int[][] carre=new int[n][n];
        for(int i=0;i<n;++i)for(int j=0;j<n;++j)carre[i][j]=0;
        j=floor(n/2);
        do {carre[i][j]=k;
            k+=1;
            if(i==0)
               i=i-1+n;
            else
               i=i-1;
            if(j==0)
               j=j-1+n;
            else
               j=j-1;
            if(carre[i][j]!=0){
                i=(i+2)%n;
                j=(j+1)%n;
            }
        } while((i!=n-1)||(j!=floor(n/2)));
        carre[i][j]=k;
        for(int i=0;i<n;++i){
            for(int j=0;j<n;++j){
               label(format("%i",carre[i][j]),(i,j));
            }
        }
        add(shift(-.5,-.5)*grid(n,n,blue));
}

carremagique(3);
shipout(bbox(2mm,white));
Asymptote - Figure 0011: fig_za02_280109_carre_magique.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_za02_280109_carre_magique
import math;
size(7cm);

void carremagique(int n){
        int i=0,j,k=1;
        int[][] carre=new int[n][n];
        for(int i=0;i<n;++i)for(int j=0;j<n;++j)carre[i][j]=0;
        j=floor(n/2);
        do {carre[i][j]=k;
            k+=1;
            if(i==0)
               i=i-1+n;
            else
               i=i-1;
            if(j==0)
               j=j-1+n;
            else
               j=j-1;
            if(carre[i][j]!=0){
                i=(i+2)%n;
                j=(j+1)%n;
            }
        } while((i!=n-1)||(j!=floor(n/2)));
        carre[i][j]=k;
        for(int i=0;i<n;++i){
            for(int j=0;j<n;++j){
               label(format("%i",carre[i][j]),(i,j));
            }
        }
        add(shift(-.5,-.5)*grid(n,n,blue));
}

carremagique(5);
shipout(bbox(2mm,white));

Dernière modification le Mon Sep 10 21:33:34 CEST 2012 par G.Marris       Valide XHTML