1
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Activité 1 :
Charger les programmes "[Link]" et "[Link]" enregistrés dans votre dossier de travail puis les
exécuter.
1. Que remarquez-vous ?
Les deux programmes jouent le même rôle.
2. Quelles sont les points de différence entre les deux programmes ?
Le programme 1 contient des parties répétées (similaires) et il est plus long et plus
compliqué.
Le programme 2 contient moins de lignes de code avec moins de redondance et il est
plus clair.
Le programme 2 utilise des nouveaux termes comme def et return pour implémenter
des modules (sous programmes).
Déduction :
L’utilisation des modules dans le programme 2 a permis de diminuer les lignes de code et
d’éviter la redondance d’où la simplicité de résolution.
Pour quoi les sous programmes (la modularité) ?
Certains problèmes conduisent à des programmes longs, difficiles à écrire et à comprendre. On les découpe
en des parties appelées sous-programmes ou modules.
Les fonctions et les procédures sont des modules (suite d’instructions) indépendants désignés par un nom.
Elles ont plusieurs intérêts :
Permettent de factoriser les programmes, càd de mettre en commun les parties qui se répètent.
Permettent une structuration et une meilleure lisibilité des programmes.
Facilitent la maintenance de code (il suffit de modifier une seule fois).
Ces procédures et fonctions peuvent éventuellement être réutilisées dans d’autres programmes.
Programme
principal
Niveau 1 de
décomposition SP1 SP3
SP2
Niveau 2 de
SP3_2 décomposition
SP3_1
--Schéma 1 : décomposition modulaire
Prof : Noureddine Najeh
2
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Activité n°1 :
Ecrire un programme volume_sphère qui permet de saisir un rayon R puis de retourner le volume de
sphère sachant que : volume sphère = (4 * pi * cube ( R ) )/3
Pour résoudre ce problème il
faut utiliser la fonction cube
Définition d’une fonction :
Une fonction est un sous-programme qui retourne une valeur générée en fonction des valeurs
passées en entrée :
Résultat
Paramètres d’entrée fonction
Une fonction prend zéro ou plusieurs paramètres et renvoie éventuellement un seul résultat de
type simple (entier, réel, booléen, caractère ou chaine de caractères)
Une fonction qui ne retourne pas de résultat est une procédure.
Comment définir une fonction ?
La déclaration d’une fonction se fait toujours avant le programme appelant :
Fonction nom_fonction (parf1 :type1, parf2 :type2, …, parfn :typen) :type résultat def nom_fonction (parf1, parf2, …, parfn) :
début Bloc d’instructions
bloc d’instructions ……
retourner résultat Return expression
fin
Prof : Noureddine Najeh
3
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Solution :
Algorithme de programme principal : Algorithme de la fonction Cube :
Algorithme Volume_Sphère fonction CUBE (x : réel) :réel
début début
Ecrire ("Donner le rayon : ") c←x*x*x
Lire(R) retourner c
V←(4 * pi * cube ( R ) )/3 fin
Ecrire ("Le volume de sphère = " , V) T.D .O locaux :
fin Objet Type/Nature
T.D .O Globaux c Réel/variable
Objet Type/Nature
Pi Constante=3,14
R,V Réel/variable
Cube fonction
En python :
Fonction
CUBE
Programme
Comment appeler une fonction ? principal
L’appel d’une fonction se fait toujours après sa déclaration et elle peut apparaître dans plusieurs
emplacements :
affectation variable← nom_fonction(parE1, …, parEn) Variable=nom_fonction(parE1, …, parEn)
écrire(nom_fonction(parE1, …, parEn)) print(nom_fonction(parE1, …, parEn)
affichage
Si (nom_fonction(parE1, …, parEn) = valeur) if (nom_fonction(parE1, …, parEn) = valeur)
condition Jusqu’à (nom_fonction(parE1, …, parEn) = valeur) while(nom_fonction(parE1,…,parEn)= valeur)
Tant que (nom_fonction(parE1,…, parEn) = valeur)
Prof : Noureddine Najeh
4
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Application 1 :
Ecrire un algorithme intitulé Combinaison qui affiche le nombre de combinaisons de p objets parmi n avec
n et p deux entiers naturels strictement positifs et n≥p.
Algorithme de programme principal : Algorithme de la fonction Cube :
Algorithme Combinaison fonction fact (e : Entier) : Entier
début début
Répéter f1
Ecrire ("Donner le premier entier n : ")
Pour i de 2 à e Faire
ff*i
Lire (n)
Fin Pour
Jusqu’à (n > 0)
Retourner f
Répéter fin
Ecrire ("Donner le deuxième entier p : ")
Lire (p) T.D .O locaux :
Jusqu'à et (n ≥ p) Objet Type/Nature
C fact(n) Div (fact(n-p) * fact(p))
Ecrire ("La combinaison de ", p, " objets parmi ", n, " = ", C) i,f Entier/variable
fin
T.D .O Globaux
Objet Type/Nature
n,p,c Entier/variable
fact fonction
Prof : Noureddine Najeh
5
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Application 2 :
On désire implémenter une dérivée de jeu MOTUS en suivant les règles suivantes :
L’ordinateur commence par choisir aléatoirement une chaine alphabétique composée de 8 lettres
majuscules puis affiche sa première lettre.
L’utilisateur va tenter au maximum 8 fois pour deviner la chaîne, à chaque fois l’ordinateur :
Vérifie que la chaîne est valide ou non, dans le cas contraire il lui affiche un message
d’erreur,
Si la chaine saisie est la même choisie par l’ordinateur alors il lui affiche un message de
félicitations,
Sinon il cherche les lettres correctes et les affiche à leurs places puis remplace celles
incorrectes par des étoiles "*".
Exemple 1 :
Mot de l’ordinateur : CALCULER Le mot commence par : C
Premier essai camionnette la chaine doit être formée de 8 lettres majuscules
Deuxième essai CANICHES CA****E*
Troisième essai CALIBRES CAL***E*
Quatrième essai CHALLETS C*******
Cinquième essai CASTINGS CA******
Sixième essai CAILLOUX CA******
Septième essai COLAGENE C*L*****
Huitième essai CALEMERO ;( jeu perdu le mot était CALCULER
Exemple 2 :
Mot de l’ordinateur : GENERALE Le mot commence par : G
Premier essai GENETIKE GENE****
Deuxième essai GOULOIRE G******E
Troisième essai GENERALE Bravoooo
Travail demandé :
1. Décomposer le problèmes en utilisant des fonctions,
2. Ecrire l’algorithme du programme principal ainsi que les algorithmes de chaque fonction,
3. Implémenter le programme en python.
Analyse de problème :
Motus
Mot aléatoire Chaîne 2 Mot, Chaîne
Vrai/faux
Chaîne
Fonction
Fonction Commun
Générer Fonction
Vérifier
Prof : Noureddine Najeh
6
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Algorithme de programme principal : Algorithme de la fonction générer :
Algorithme Motus fonction generer():chaîne de caractères
Début début
mot←generer( ) s←" "
écrire ("Le mot commence par : ",mot[1]) pour i de 1 à 8 faire
nb←0 n←aléa(65,90)
repeter s←s+chr(n)
écrire("entrer une chaine de 8 lettres majuscules :") fin pour
lire(ch) retourner s
nb← nb+1 fin
si (verif(ch)= faux) alors T.D.O. locaux
écrire("la chaine doit être formée de 8 lettres majuscules ") objet Type/nature
sinon si (mot=ch) alors s Chaîne de caractères/variable
écrire("Bravoooo ") i, n Entier/variable
sinon
écrire(commun(mot,ch))
fin si
jusqu’à (nb>8)ou(mot=ch)
si nb>8 alors
écrire("jeu perdu et le mot était ", mot)
fin si
fin
T.D.O. globaux
objet Type/nature
Mot,ch Chaîne de caractères/var
Nb Entier/variable
Generer, verif, commun fonction
Prof : Noureddine Najeh
7
CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes
Algorithme de la fonction verif : Algorithme de la fonction commun :
Fonction verif(s :chaîne de caractères):booléen Fonction commun(s1,s2 :chaîne de
début caractères):chaîne de caractères
i←0 Début
test←vrai s←" "
répeter pour i de 1 à 8 faire
si s[i]>=’A’ et s[i] <='Z' alors si s1[i]=s2[i]alors
i←i+1 s←s+s1[i]
sinon sinon
test←faux s←s+'*'
fin si fin si
jusqu’à test=faux ou i>8: retourner s
retourner test fin
fin
T.D.O. locaux T.D.O. locaux
objet Type/nature objet Type/nature
s Chaîne de caractères/variable s Chaîne de caractères/var
i Entier/variable i Entier/variable
test Booléen/variable
Prof : Noureddine Najeh