Etude des blocs
Eugène C. Ezin
1 Enseignant-Chercheur
Université d’Abomey-Calavi.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 1 / 27
Définition
Définition
Un bloc encore appelé fonction est une unité autonome d’un algorithme.
On distingue quatre différents types de blocs à savoir:
les blocs qui retournent une valeur et ne prennent aucun paramètre en
entrée;
les blocs qui retournent une valeur et qui prennent des paramètres en
entrée;
les blocs qui ne retournent aucune valeur et ne prennent aucun
paramètre en entrée;
les blocs qui ne retournent aucune valeur et prennent des paramètres
en entrée.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 2 / 27
Caractéristisation des blocs
Il existe un bloc qu’on appelle bloc principal. Il est unique dans un
algorithme. Ainsi donc, les algorithmes présentés dans le deuxième
chapitre sont des blocs principaux.
Un bloc peut faire appel à lui-même dans un algorithme: on parle
d’appel récursif.
Aucun bloc ne peut faire appel au bloc principal dans un algorithme.
Le bloc principal peut faire appel à n’importe quel autre bloc dans un
algorithme.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 3 / 27
Déclaration et définition d’un bloc
Il y a deux notions importantes à ne pas confondre lorsqu’on utilise les
blocs. Il s’agit de la déclaration et de la définition d’un bloc.
La déclaration d’un bloc consiste à préciser le type de retour, le nom
du bloc et les types des arguments du bloc.
La définition d’un bloc consiste à écrire les instructions requises pour
la tâche dévolue au bloc. On met en exergue dans ce cas le type de
retour, les paramètres en entrée et leurs types.
Important
Il est important de déclarer et de définir un bloc pour l’utiliser dans un
algorithme.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 4 / 27
Syntaxe de déclaration d’un bloc
La syntaxe de déclaration d’un bloc est la suivante:
Fonction nomBloc (type1, type2) Retourne type;
Déclarer une fonction qui fait la somme de deux entiers.
Fonction somme (Entier, Entier) Retourne Entier;
Déclarer une fonction qui calcule la moyenne de deux entiers.
Fonction moyenne (Entier,Entier) Retourne Reel;
Déclarer une fonction qui affiche la somme de deux entiers.
Fonction affiche(Entier,Entier) Retourne Vide;
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 5 / 27
Le type Vide
Le type Vide est un type spécial qui est utilisé dans deux cas:
Lorsqu’un bloc ne retourne aucune information, on utilise Vide;
Lorsqu’un bloc ne prend aucun paramètre en entrée, on utilise
également Vide.
Retenons
Le type Vide est un type spécial qui ne traduit pas la nature d’une
information comme c’est le cas avec Entier, Caractere, Reel, Chaine, et
Booleen.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 6 / 27
Syntaxe pour la définition d’un bloc
La syntaxe de définition d’un bloc est la suivante:
Fonction nomBloc (type1, type2) Retourne type
Variables: identif1, identif2: type
Debut
instruct1;
instruct2;
Fin
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 7 / 27
Recursivité
Enoncé
Un bloc est récursif lorsqu’il fait appel à lui-même lors de son exécution.
Les bloc récursifs sont gourmand en mémoire.
Il est parfois très commode malgré cette limite de recourir aux blocs
récursifs surtout le cas des parcours des graphes.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 8 / 27
Exemple
Enoncé
Proposer la déclaration et la définition du bloc de factoriel d’un nombre
entier.
Prototype de factoriel()
Fonction factoriel (Entier) Retourne Entier;
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 9 / 27
Exemple (suite)
Définition de factoriel()
Fonction factoriel (Entier a) Retourne Entier
Variable: fact: Entier;
Debut
fact ←− 1;
Si (n = 0) Alors
fact ←− 1;
Sinon else
fact ←− fact * factoriel (n-1); FinSi
Retourne fact;
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 10 / 27
Structure d’un algorithme avec des blocs
La syntaxe d’un algorithme qui utilise les blocs se présente comme suit:
Syntaxe d’un algorithme avec blocs
Algorithme nomAlgorithme
Variables: identif1, identif2: type;
Constantes: cste1, cste2: type;
Fonction nomBloc(type1, type2) Retourne type;
Debut
instructions;
nomBloc1(param1,param2);
Fin
...
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 11 / 27
Structure d’un algorithme avec des blocs (suite)
Syntaxe d’un algorithme avec blocs (suite)
Fonction nomBloc(type1 a, type b) Retourne type
Variables: identificateur1, identificateur2: type
Debut
instruct1;
instruct2;
Fin
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 12 / 27
Vocabulaire
L’algorithme qui fait appel aux blocs est appelé algorithme principal
ou bloc principal;
Les différents blocs sont appelés fonctions et ils sont appelés dans le
bloc principal;
Seul le bloc principal peut faire appel aux autres blocs;
Aucun bloc ne peut faire appel au bloc principal.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 13 / 27
Exercice
Enoncé
En utilisant les blocs, proposer un algorithme qui calcule la somme et le
quotient de deux entiers entrées au clavier.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 14 / 27
Exercice
Enoncé
En utilisant les blocs, proposer un algorithme qui calcule la somme et le
quotient de deux entiers entrées au clavier.
On a trois blocs dans cet énoncé à savoir:
le bloc principal;
le bloc pour la somme;
et le bloc pour le quotient.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 14 / 27
Solution
Algorithme calcul
Variables: a, b, som, quot: Entier;
Fonction somme (Entier, Entier) Retourne Entier;
Fonction quotient (Entier, Entier) Retourne Reel;
Debut
Ecrire(”Tapez deux entiers: ”);
Lire(a,b);
som ←− somme(a,b);
quot ←− quotient (a,b);
Ecrire (”La somme et le quotient sont:”, som, quot);
Fin
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 15 / 27
Suite de la solution
Fonction somme (Entier a, Entier b) Retourne Entier
Variable : s: Entier;
Debut
s ←− a +b;
Retourne s;
Fin
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 16 / 27
Suite et fin de la solution
Fonction quotient (Entier a, Entier b) Retourne Reel
Variable : s: Entier;
Debut
Si (b 6= 0) Alors
s ←− a +b;
Sinon
Debut
Ecrire(”Division par zero n’est pas autorisé.”);
s ←− 9999999;
Fin
FinSi
Retourne s;
Fin
La valeur 9999999 est choisie juste pour traiter le cas de 0.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 17 / 27
Exercice
Enoncé
Proposer une fonction qui fait la somme de 20 entiers d’un tableau.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 18 / 27
Solution
Definition du bloc sommeVingtTab()
Fonction sommeTab(Tableau t:Entier) Retourne Entier
Variables:i, s: Entier;
Debut
s ←− 0;
Repeter ∀ i ∈ [0, dim − 1]
s ←− s + t[i];
Retourne s;
Fin
Remarques
Cette fonction ne fait que la soomme des vingt premiers éléments
d’un tableau.
Si le nombre d’éléments du tableau est plus petit que 20, le calcul
n’est pas possible.
Si le nombre d’éléments du tableau dépasse 20, la fonction ne fait que
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 19 / 27
Exercice
Enoncé
Proposer une fonction qui fait la somme des entiers d’un tableau de n
éléments.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 20 / 27
Solution
Definition du bloc sommeTab()
Fonction sommeTab(Tableau t:Entier, Entier dim) Retourne Entier
Variables:i,s: Entier;
Debut
s ←− 0;
Repeter ∀ i ∈ [0, dim − 1]
s ←− s + t[i];
Retourne s;
Fin
Exemples d’appels
a ←− sommeTab(q, 10);
b ←− sommeTab(p, 25);
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 21 / 27
Recursivité
Enoncé
Un bloc est récursif lorsqu’il fait appel à lui-même lors de son exécution.
Les bloc récursifs sont gourmands en mémoire.
Il est parfois très commode malgré cette limite de recourir aux blocs
récursifs surtout dans le cas des parcours des graphes.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 22 / 27
Exemple
Enoncé
Proposer la déclaration et la définition du bloc de factoriel d’un nombre
entier.
Prototype de factoriel()
Fonction factoriel (Entier) Retourne Entier;
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 23 / 27
Exemple (suite)
Définition de factoriel()
Fonction factoriel (Entier a) Retourne Entier
Variable: fact: Entier;
Debut
fact ←− 1;
Si (n = 0) Alors
fact ←− 1;
Sinon
fact ←− fact * factoriel (n-1);
FinSi
Retourne fact;
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 24 / 27
Forme itérative
Définition de factoriel()
Fonction factoriel (Entier n) Retourne Entier
Variable: fact: Entier;
Debut
fact ←− 1;
Repeter ∀i ∈ [1, n]
fact ←− fact *i;
Retourne fact;
Fin
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 25 / 27
Exercices à faire
Proposer la définition une fonction qui fait la somme de deux entiers.
Proposer la définition d’une fonction qui fait la division de deux
entiers.
Proposer une fonction qui détermine le maximum de deux réels.
Proposer une fonction qui compte le nombre de caractères d’une
chaine de caractères passée en paramètre.
Proposer une fonction qui affiche si un nombre entier passé en
paramètre est premier ou non.
Proposer une fonction qui fait la somme des éléments d’un tableau
d’entiers passé en paramètre.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 26 / 27
Conclusion
Merci pour votre attention.
Eugène C. Ezin (Université d’Abomey-Calavi) Etude des blocs 27 / 27