T.D.
Algorithmique et programmation – 1ING Math ENSIT – Département Mathématiques
T.D.04. – Fonctions et procédures
Syntaxe :
Définition d’une fonction :
Fonction NomFonction ( ParamFormel1:Type1, ParamFormel 2:Type2,…) : type
Résultat
Const Définition des constantes locales
Var Déclaration des variables locales
Début
Le corps de la fonction
RETOURNER (Résultat)
Fin
Définition d’une procédure :
Procédure NomProcedure (ParamFormel 1:Type1, ParamFormel 2:Type2,…)
Const Définition des constantes locales
Var Déclaration des variables locales
Début
Le corps de la procédure
Fin
Exercice 1 :
On appelle nombres d'Armstrong les nombres entiers tels que la somme des
cubes de leurs chiffres (en base 10) est égale au nombre lui même.
Exemple : 13 + 53 + 33 = 153
Écrire un algorithme qui affiche tous les nombres d'Armstrong inférieurs à
1000000.
Exercice 2 : (Ecriture binaire d’un nombre)
Ecrivez une fonction qui convertit en base 2 un entier N.
Exercice 3 :
√ ( 1
)
2
Z = R + LW −
2
On se propose de calculer l’impédance Z d’un circuit RLC donné par :
où : R= Résistance, L= Inductance, C= Capacité et W= pulsation.
CW
1- La procédure Saisi qui permet de lire quatre nombres réels (r, l, c et w) strictement positifs.
2- La fonction CalculZ qui retourne la valeur de l’impédance d’un circuit RLC.
3- Ecrire un algorithme qui appelle les deux fonctions précédentes et qui affiche la valeur de l’im-
pédance Z.
T.D. Algorithmique et programmation – 1ING Math ENSIT – Département Mathématiques
Exercice 4 :
Ecrire un algorithme qui calcule la norme d’un vecteur. La norme d’un vecteur U =(x 1 , x 2 … x n ) est
défini par :
‖U ‖= √ x 21 + x 22+ … x 2n
Exercice 5 :
Ecrire un algorithme qui calcule le produit scalaire de deux vecteurs U et V représentés par deux
tableaux. Le produit scalaire de deux vecteurs U =(x 1 , x 2 … x n ) et V = ( y 1 , y 2 … y n ) est défini par :
n
U . V =x 1 y 1 + x 2 y2 + … x n y n=∑ x i y i
i=1
Exercice 6 :
Soient deux tableaux T1 et T2 contenant chacun N éléments distincts deux à deux (2<N<100).
On appelle intersection de T1 et T2 l’ensemble des éléments communs à ces deux tableaux (sans
répétition).
On se propose d’écrire un algorithme qui range les éléments de l’intersection des deux tableaux
dans un tableau INTER puis affiche les trois tableaux T1, T2 et INTER.
Exemple :
T1 15 19 15 6 37 22 19 9
1 2 3 4 5 6 7 8
T2 6 19 8 15 17 19 89 19
1 2 3 4 5 6 7 8
INTER 15 19 6
1 2 3
1) On vous demande d‘écrire les algorithmes des procédures et des fonctions suivantes :
Procédure Lecture (Var N : entier) : qui permet de lire un entier N (2<N<100).
Procédure Remplir (Var T1, T2 : Tab ; N : entier) : qui permet de remplir deux tableaux T1
et T2 contenant chacun N éléments distincts deux à deux.
Fonction verif_apparition (X, k:entier ; T: Tab) : booléen, qui permet de vérifier l’exis-
tence (l’apparition) d’un élément X dans les k premiers éléments du tableau T.
Procédure Remplir_INTER(Var INTER :Tab, Var j:entier ;T1, T2 :Tab ; N: entier) : qui
permet de remplir le tableau INTER par les éléments communs de deux tableaux T1 et T2 (sans
répétition).
2) Ecrire l’algorithme de programme principal.
T.D. Algorithmique et programmation – 1ING Math ENSIT – Département Mathématiques
Exercice 8 :
Les points cols d’un tableau T à deux dimensions sont les éléments du tableau qui sont maximum
sur leur ligne et minimum sur leur colonne, ou minimum sur leur ligne et maximum sur leur co -
lonne.
Méthode pour chercher les points cols :
Pour qu’un élément se trouvant à la ligne J et à la colonne K soit un point col, il faut et il suffit que :
- le maximum de la ligne J soit égale au minimum de la colonne K et égale à la valeur T[J,K],
ou que :
- le minimum de la ligne J soit égale au maximum de la colonne K et égal à la valeur T[J,K].
Ainsi pour chaque élément T[J,K] on va essayer de voir si l’une des deux conditions du dessous est
satisfaite.
Travail demandé :
On utilisera la constante Max et le type TAB2 définis par :
Const Max=10000
Type TAB2 = TABLEAU (1..Max,1..Max) REEL
1) Ecrire une fonction VERIF_POINTCOL (I,J:entier, T : TAB2, N,M :entier) : booléen
Le but de cette fonction est de retourner VRAI ou FAUX selon lequel l’élément qui se trouve à l’in-
tersection de la ligne I avec la colonne J du tableau T de dimension N x M est point col ou non.
(Utilisez la méthode expliquée ci-dessus)
2) Ecrire un algorithme POINTS_COLS qui permet de :
¿ ¿ ¿ ¿
- Saisir deux entiers N et M (0 N 10000 et 0 M 10000),
- Remplir le tableau T de dimension (N x M) par des nombres réels donnés par l’utilisateur (N :
nombre de lignes, M : nombre de colonnes),
- Utiliser la fonction VERIF_POINTCOL pour chercher et afficher tous les points cols du
tableau T.