Algorithmique & Programmation Orientée Objet
Semestre 2 ST

Les tableaux de variables
Cours TD - Corrections TP

Le code source suivant est à utiliser dans les exercices 1 et 2. Il illustre la déclaration d'un tableau de réels, suivie du remplissage de ce tableau avec des réels tirés au sort, suivi, pour finir, de l'affichage des réels tirés au sort. Pour les exercices, on pourra ajouter les lignes de code correspondant aux questions posées à la place des points de suspension.

GenerationTableauReel.lda

{ Génération d'un tableau de réels            }
{ tirés au sort entre 0.0 et 1.0              }

action principale()
  { Taille du tableau                         }
  constante entier TAILLE <- 20
  { Déclaration du tableau                    }
  reel [TAILLE] tab
  entier i
  ...
  { Remplissage du tableau                    }
  pour i de 0 à longueur(tab)-1 faire
    tab[i] <- random()
  fait
  { Affichage des valeurs du tableau          }
  pour i de 0 à longueur(tab)-1 faire
    afficherln(tab[i])
  fait
  ...
fin action

Clavier.class - Ecran.classExemple d'exécution

Exercice n°1: Tableaux "simples"

a) On considère l'existence d'un tableau de réels. Ecrire un algorithme permettant de parcourir ce tableau pour afficher les valeurs qu'il contient qui sont comprises entre une borne réelle minimale et une borne réelle maximale (bornes incluses).

Exemple d'exécution

b) On considère l'existence d'un tableau de réels. Ecrire un algorithme permettant de calculer et d'afficher la moyenne des valeurs contenues dans ce tableau.

Exemple d'exécution

c) On considère l'existence d'un tableau de réels. Ecrire un algorithme permettant de déterminer et d'afficher le nombre de valeurs présentes dans ce tableau qui sont inférieures ou égales à une valeur réelle limite.

Exemple d'exécution

d) On considère l'existence d'un tableau de réels. Les valeurs qu'il contient sont comprises dans l'intervalle [0.0, 20.0[. Ecrire un algorithme permettant de calculer et d'afficher les nombres de valeurs de ce tableau comprises dans les intervalles [0.0,1.0[, [1.0, 2.0[, [2.0, 3.0[, ..., [19.0, 20.0[ (opération de "classification" en statistiques).

Exemple d'exécution

Exercice n°2: Tableaux en sous-algorithmes

a) Ecrire un sous-algorithme d'initialisation d'un tableau de n réels (n donné) au moyen de valeurs tirées au sort dans l'intervalle [0.0,max[ où max est un réel donné. Ecrire un sous-algorithme de création d'un tableau de n réels (n donné) au moyen de valeurs tirées au sort dans l'intervalle [0.0,max[ où max est un réel donné. Ecrire un sous-algorithme d'affichage des valeurs contenues dans un tableau de réels.

Exemple d'exécution

b) Reprendre les questions (c) et (d) de l'exercice n°1 en les implantant avec utilisation de sous-algorithmes.

Exemple d'exécution question (c) - Exemple d'exécution question (d)

c) Ecrire un sous-algorithme de fusion de deux tableaux d'entiers triés en un seul nouveau tableau d'entiers trié.

Exemple d'exécution

Exercice n°3: Tableaux de variables de type agrégé

a) On considère le type agrégé sommet3D constitué des 3 champs x, y et z réels représentant les coordonnées d'une position dans un espace 3D.
Développer un sous-algorithme de calcul du barycentre d'un nuage de points stocké dans un tableau de sommets3D.
On rappelle que le barycentre d'un nuage de points est le point dont:
  - la coordonnée x est la moyenne des coordonnées x des points du nuage,
  - la coordonnée y est la moyenne des coordonnées y des points du nuage,
  - la coordonnée z est la moyenne des coordonnées z des points du nuage.

Exemple d'exécution

b) On considère le type agrégé sommet2D constitué des 2 champs x et y réels représentant l'abscisse et l'ordonnée d'une position du plan.
  1) Développer un sous-algorithme de création d'un tableau de sommet2D initialisé avec les positions des sommets d'un polygone régulier respectant les propriétés suivantes:
  - Son rayon est r.
  - Il possède n sommets.
  - Il est centré sur l'origine.
  - L'un de ses sommets est en position (r,O.O).
  2) Développer un sous-algorithme de calcul de la longueur d'une ligne polygonale non fermée stockée dans un tableau de sommet2D.
  3) Développer un sous-algorithme de calcul de la longueur d'une boucle polygonale (fermée) stockée dans un tableau de sommet2D.
Les positions des n sommets d'un polygone régulier respectant les propriétés demandées peuvent être obtenues en calculant les n couples de valeurs (r*cos(alpha),r*sin(alpha)) avec alpha = i*2.0*PI/n et i variant de 0 à n-1.
On rappelle que la distance d existant entre deux positions du plan (x1,y1) et (x2,y2) peut être calculée en utilisant la formule d = sqrt((x2-x1)2+(y2-y1)2)

Exemple d'exécution

Exercice n°4: Type agrégé avec tableau

a) Vous êtes employé au service "contrôle qualité" d'une usine de fabrication de fraises Tagada. Vous devez concevoir un programme informatique permettant d'analyser des échantillons de fraises pour vérifier divers critères. Parmi ceux-ci nous allons nous attacher au poids.
  1) Développer un type agrégé permettant de coder un échantillon de fraises en conservant les informations suivantes: le numéro de la machine de fabrication, la date de fabrication, 1000 poids de fraise (fraises sélectionnées aléatoirement sur la machine). On précise que numéro de machine est un entier, la date de fabrication est une chaine de caractères (format "jj/mm/aaaa") et le poids d'une fraise est un réel comptant en grammes.
  2) Développer un sous-algorithme de calcul du pourcentage de fraises d'un échantillon qui ne respectent pas le critère consistant à avoir un poids compris entre une valeur réelle minimale et une valeur réelle maximale.
  3) Développer un sous-algorithme de détermination de la valeur médiane des 1000 poids au sens de l'ordre croissant des poids.
On rappelle que la valeur médiane d'un ensemble de valeurs selon un critère d'ordre total est une valeur v telle qu'il existe dans l'ensemble "autant" de valeurs respectant le critère vis à vis de v que de valeurs ne le respectant pas. Pour un ensemble dont le nombre d'éléments n est impair, on pourra prendre comme médiane la valeur du (n/2+1)eme élément de l'ensemble après tri selon le critère. Si le nombre d'éléments est pair, on pourra prendre comme médiane la valeur moyenne des (n/2)eme et (n/2+1)eme éléments de l'ensemble après tri selon le critère.
On pourra spécifier et considérer comme existant un sous-algorithme permettant de trier un ensemble de valeurs réelles stocké dans un tableau.

Exemple d'exécution

b) On souhaite calculer le coefficient de corrélation linéaire défini entre deux séries de N=15 données réelles.
  1) Définir un type agrégé permettant de stocker ces deux séries de données en une seule variable.
  2) Implanter un sous-algorithme permettant de calculer le coefficient de corrélation linéaire existant entre les deux séries de données stockées au sein d'une variable du type agrégé de la question (1). On utilisera la formule de calcul suivante définie pour les séries x et y numérotée de 1 à N (wikipedia):

Les x et y surmontés d'une barre horizontale désignent en mathématique les moyennes des séries x et y.

Exemple d'exécution