Les Sous Programmes

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 26

LES SOUS PROGRAMMES

MINI PROJET
On définit une suite suivante :U0=1
Un+1= 2*Un+1
Le jeu est simple :
• Tu joue contre l’ordinateur deviner un terme de la suite :
• Tu donne une valeur x1 (entre 100 et 1000)
• l’ordinateur la même chose x2
 3 points si la valeur est un terme de la suite
1 points si la différence entre les deux valeurs(valeur donnée et terme le
plus proche) ne dépassera pas 5
0 sinon
• On répété l'étape ci-dessus n fois avec 3<=n<=20
• On affiche le gagnant après les N fois
Saisir n x1 est terme de la suite
(nombre de Nombre de points=3
fois ) ou la différence entre les
termes successive avec
Calculer le
x1<=5 nombres de
nombre de
Utilisateur points=1
points
saisie un Sinon 0
obtenus
nombre x1
avec cette
valeur x1
Calculer un
terme de la suite Afficher le
Comment ? comment? résultat qui à
gagner ou
partie nul
L’ordinate
ur choisie Calculer le x2 est terme de la suite
un nombre nombre de Nombre de points=3
au hasard points ou la différence entre les
x2 obtenus avec termes successive avec
cette valeur x2<=5 nombres de
x2 points=1
Sinon 0
REMARQUES
• Plusieurs traitement se répètent c’est-à-dire qui nécessite le
même code ou les mêmes actions (redondance)
• Le code sera encombré et même illisible( lisibilité)
Donc quel sera la meilleur solution pour résoudre le problème

solution
ANALYSE MODULAIRE
MODULE???

Un module est sous programme indépendant qui est


crée dans un programme et exécuté grâce à un appel
par un programme ou un sous programme.
Un sous programme peut être appeler autant de fois
qu’on veut.
On désire écrire un programme qui permet de saisir 2 valeurs k et n supérieur à 1 et
de calculer et d’afficher le nombre de combinaisons C
Remarque :
-la fonction mathématique factoriel doit être calculer
3 fois pour les nombres n, k et n-k
-donc ce traitement doit être répéter 3 fois
SOLUTION SANS MODULE
SOLUTION AVEC
MODULE FACT
UNE FONCTION
En algorithme une fonction est un sous
programme qui permet retourner un seul résultat
Paramètre
Nom formel
fonction
Définition
de la
fonction

Les objets
retournés
par la
fonction
Liste des paramètre
formels
La déclaration Algorithmique
Fonction Nom_fonction (pf1 : type1, pf2 : type2, … , pfn : typen) : type_résultat
DEBUT
Variable Traitement
résultat à Retourner Résultat FIN
retourner
• L’appel algorithmique
Objet  Nom_fonction (pe1, pe2, …, pen) Liste des
paramètres
Objet de effectifs
type • La déclaration en Python
résultat • L’appel en Python
que la
fonction def Nom_fonction (pf1, pf2, …, pfn ) : Objet = Nom_fonction (pe1, pe2, …, pen)
Traitement
return resultat
LES PROCÉDURE EN ALGORITHME

• transformer le premier traitement en module et puis apporter


les modifications adéquates dans le programme principal.
TRANSFORMATION DE TRAITEMENT EN
MODULE
Algorithme PYTHON :

Procédure saisir( @ n1,n2: entier )


Début

Répéter

Lire (n1,n2)
Jusqu’à n1>0 et N2>0 et N1>n2
LE PROGRAMME DEVIENT

Le module
Saisie
retourne 2
Appel du résultat
module
saisie pour n
et k
LES PROCÉDURES

• Une procédure en algorithme c’est sous programme qui permet de


retourner de zéro à plusieurs résultat,
• En python les procédures n’existe pas
•Les procédures
La déclaration algorithmique
•Procédure Nom_procédure (pf1 : type1, pf2 : type2, …, pfn : typen)
•DEBUT
Traitement
•FIN
L’appel algorithmique
,Nom_procédure (pe1, pe2, …, pen)
• La déclaration en Python
• NB : Eliminer tous les paramètres dont le mode de passage est par référence et les retourner en
résultat.
•def Nom_procédure (pf1, pf2, … , pfn ) :
Traitement
[return resultat]
L’appel en Python
 Dans le cas où la procédure retourne un ou plusieurs résultats :
Variable(s) = Nom_procédure (pe1, pe2, …, pen)
 Dans le cas où la procédure ne retourne aucun résultat :
•Nom_procédure (pe1, pe2, …, pen)
NOTION DES PARAMÈTRES
NOTION D’OBJETS

Avec la résolution des problèmes avec des modules on deux type


d’objets ou de variable :
• Les variables locaux
• Les variables globaux
Objet locale : un objet local est objet déclaré et connu seulement a l’intérieur
d’un sous programme.
Objet globale : un objet global est déclaré dans la partie déclarative d’un
programme . Cet objet est utilisé par le PP et par les différents autres sous-
programmes.
Remarque on Python il faut procéder la variable par le mot clé global
MODE DE PASSAGE DES PARAMÈTRES

La substitution (le remplacement) des paramètres effectifs aux paramètres formels

s’appelle passage de paramètres. Il s’agit d’un appel entre PP et les sous programmes appelé.

Il existe deux modes de passage de paramètres :

Si le programme appelé ne change par la valeur d’un paramètre formel c’est mode de
passage par valeur.

Si le programme appelé change la valeur d’un paramètre formel et le programme


appelant à besoin de cette nouvelle valeur c’est un mode de passage par variable.
MODE DE PASSAGE DES PARAMÈTRES

Remarque : (algorithme )

• Chaque paramètre formel passé par variable doit être précédé par le symbole @ en
algorithme,

• Chaque paramètre formel doit être précéder par son mode de passage et suivi par

son type en algorithme


EXERCICES
Fonction deviner (a, b : entier): entier
Début
répéter
si (a>b) alors a a-b
sinon b b-a
jusqu’à a=b
deviner  a
Fin
1- Ce code ci-dessus donne une
erreur avec maxi une fonction qui
calcul le maximum entre deux 1- calculer deviner (15,50)
nombres x et y ? 2- calculer deviner (18,7)
2- corriger le code s’il contient des 3- quel est le rôle de la fonction deviner
erreurs 4- écrire un programme qui permet de
3-Modifier le code pour qu’il calcul et saisir deux entiers x et y et d’afficher le
affiche le maximum entre 4 entiers résultat de la fonction deviner
saisies,
Fonction deviner (x , y: entier):entier
Début
z0 1- calculer deviner (2,3)
tant que x ≠ 0 faire 2- calculer deviner (15,5)
si ( x mod 2 =0) alors 3- quel est le rôle de la fonction deviner
x x div 2 4- écrire un programme qui permet de
y 2*y saisir deux entiers n1 et n2 positifs et
sinon d’afficher le résultat de la fonction
x x-1 deviner.
z  z+y
fin si
deviner  z
Fin
SOIT L’ALGORITHME
SUIVANT LES ENTÊTES Entête du module
DES MODULES ET TDOG
Procédure remplir(@ V :tab ; k:entier)

Programme principal Type

Tab=tableau de 5 entier
Algorithme :deviner
Lire (N) Objets Type /nature

remplir ( TDOG T
N
Tab
Entier
……………………) saisir procédure
remplir procédure
Fin Affiche procédure
Questions:
1-Compléter les parties manquantes du programme
2- modifier la saisie de l’objet N en module avec N dans [5,20] et
apporter les modifications nécessaire au programme,
3- Développer le module remplir qui permet de remplir un tableau
dont les éléments sont dans l’intervalle [-20..20]
5-Ajouter au programme pour qu’il calcul et affiche le produit
cartésien entre deux tableau T1 et T2 = ∑ T1[i] * T2[i](avec i[0..n-
1])
Avec T1 et T2 deux tableaux d’entier de même taille,

Vous aimerez peut-être aussi