Vous êtes sur la page 1sur 7

1

CURRICULUM 3 SCIENTIFIQUES Leçon 3 : Les Sous Programmes

Activité 1 :
Charger les programmes "jc1.py" et "jc2.py" 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 f1
Ecrire ("Donner le premier entier n : ")
Pour i de 2 à e Faire
ff*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

Vous aimerez peut-être aussi