Dans les exercices de cette partie, vous devrez produire les graphes de contrôle à partir des codes fournis.

Selon le niveau de couverture envisagé, le graphe à produire peut différer. Vous prendrez soin de ne faire figurer que des conditions élémentaires sur les nœuds structurels lorsque vous aurez besoin d'atteindre un niveau de couverture de tous chemins indépendants. Vous conserverez les conditions complètes lorsque la couverture à atteindre n'excède pas la couverture des arcs.

À partir du graphe, proposez une expression des chemins de contrôle puis procédez au dénombrement des chemins de contrôle.

Enfin, construisez un ensemble de cas de test pour atteindre la couverture souhaitée.

1. Exercice 1

Établir le graphe de contrôle de la fonction suivante.

int foo0( int i ){
    int j = 2;
    if ( i <= 16 )
        j = j * i;
    if ( j > 8 )
       j = 0;
    return j;
}
graph TD
    A[A : Début] --> B[B : j = 2]
    B --> C{C : i <= 16}
    C -->|True| D[D : j = j * i]
    C -->|False| E{E : j > 8}
    D --> E
    E -->|True| F[F : j = 0]
    E -->|False| G[G : return j]
    F --> G

2. Exercice 2

Établir le graphe de contrôle de la fonction suivante

public int foo1 ( int i ) {
    int j, r;
    j = 1;
    while ( i > 0 ) {
        j = j * i;
        i = i - 1;
    }
    if ( j > 1 )
        r = j;
    else
        if ( i < 0 )
            r = 0;
        else
            r = 1;
    return r;
}

Untitled

3. Exercice 3

Établir le graphe de la fonction suivante :

public static int [ ] permutation ( int [ ] vecteur ) { 
    for (int i = 0; i < vecteur.length; i++) {
        int swapIndex = i ;
        for (int j = i+1; j < vecteur.length; j++) { 
            if (vecteur[swapIndex] > vecteur[j]) { 
                swapIndex = j ; 
            } 
        } 
        int swap = vecteur[i];
        vecteur[i] = vecteur[swapIndex]; 
        vecteur[swapIndex] = swap; 
    } 
    return vecteur ; 
}

Untitled

$$ ab(ce(f(g+1)he)^*ib)^*j $$

4. Exercice 4

public static int[] insertion(int[] vecteur) { 
     for (int i = 1; i < vecteur.length; i++) { 
        int j=0;
        while (j < i && vecteur[j] < vecteur[i] ) { 
            j++; 
        } 
        int swap = vecteur[i];
        for (int k = i; k > j; k−−) { 
            vecteur [k] = vecteur [k−1]; 
        } 
        vecteur[j] = swap; 
    } 
    return( vecteur ) ; 
}

Untitled