327
s’agit de déterminer à la fois un maximum et un minimum. Il n’est alors pas possible de fournir ces deux informations en résultat et, par ailleurs, il ne serait pas logique de n’en fournir
qu’un seul sous cette forme. Il faudra donc les prévoir en paramètre ; de plus, comme il est
nécessaire que ces valeurs soient communiquées au programme, il faut prévoir une transmission par référence. En définitive, notre fonction disposera des paramètres suivants :
• le tableau concerné : il sera automatiquement transmis par référence ;
• sa dimension : entier transmis par valeur ;
• le maximum et le minimum : variables entières dont on fournira la référence.
Voici ce que pourrait être notre fonction :
fonction maxmin (tableau entier t[], entier nbElem,
référence entier max, référence entier min)
{ max := t [1]
min := t [1]
répéter pour i := 2 à nbElem
si t[i] > max alors max := t[i]
si t[i] < min alors min := t[i]
}
Remarque
Dans une fonction véritable, il faudrait :
– Véririer que la valeur de nbElem est bien positive ; dans le cas contraire, on pourrait
fournir conventionnellement des valeurs nulles pour le maximum et le minimum. On
pourrait aussi prévoir que la fonction fournit toujours un résultat de type booléen indiquant si la recherche s’est bien déroulée.
– Dans le cas où nbElem vaut 1, éviter d’exécuter la répétition pour i := 1 à 2 qui,
dans certains rares langages, risquerait d’être parcourue une fois à tort, utilisant ainsi
la valeur de t[2] avec des conséquences peu prévisibles et dépendant du langage (valeur fausse, message d’erreur, déclenchement d’une exception...).
Exercice 8.6
Comme nous avons convenu qu’un tableau passé en paramètre est fourni par référence, la
fonction pourra travailler directement sur le tableau concerné pour en effectuer le tri. Elle
pourra se présenter ainsi :
fonction tri (tableau entier t|], int nbElem)
{ entier i, j
entier temp // pour procéder à l’échange de deux valeurs
répéter pour i := 1 à nbElem - 1
// notez bien nbElem-1 ici
répéter pour j := i+1 à nbElem
si t[i] < t[j] alors
{ temp := t[i]
t[i] := t[j]
t[j] := temp
}
}
Précédent

- 350/370

Suivant