Année 2022-2023- bac Techniques Les sous programmes Matière : Informatique
Point d'information
Exercice : réécrire le programme (algorithme +
implémentation python) de l’exercice 3 de la série1 (rappel et Intérêts de la décomposition modulaire :
évaluation) en le Décomposant en modules • Plus d’organisation en séparant les
difficultés et les taches.
Point d'information • S’occuper d’un seul problème à la fois.
La décomposition modulaire consiste à diviser un problème • En cas d’erreur la division en module
en sous problème de difficultés moindres. Ces derniers sont permet de savoir quel module à corriger
aussi soumis à cette division jusqu'à ce qu’on arrive à un • Plus facile à faire évoluer.
niveau abordable de difficulté. • Permet d’éviter la répétition d’un même
traitement dans un programme.
On peut utiliser les modules suivants : n
T,n Point d'information
PP
saisir
T La décomposition modulaire
T,n T,n permet de diviser un programme
remplir maximum en plusieurs sous-programmes.
moyenne
(procédures ou une fonctions).
On va avoir la solution suivante :
Algorithmes
Algorithme du programme principal : Algorithme de la fonction moyenne :
Algorithme Classe: fonction moyenne(T:tab,n :entier) :réel
DEBUT Début
Appel d’une
Saisir(n) procédure S0
Appel Remplir(T1, n) Pour i de 0 à n-1 faire
d’une SS+T[i] Type de retour
Moymoyenne(T1,n)
fo nction Paramètres effectifs FinPour de la fonction
Mmaximum(T1,n)
MoyS/n
Ecrire("moy classe=",Moy, "Meilleure moy=",M)
Retourner Moy
FIN Fin
Nouveaux Types [Link]
TAB= tableau de 39 réels Objets Types/Nature
[Link]
i Entier
Objet Type/Nature
s,moy réel
n Entier Algorithme de la fonction maximum :
moy, M réel fonction maximum(T:tab,n :entier) :réel
T1 TAB Début
Saisir, remplir Procédures XT[0] Paramètres formels
Moyenne,maximum fonctions Pour i de 1 à n-1 faire
Si T[i]>M alors XT[i] Finsi
Algorithme de la procédure saisir : FinPour
Procédure saisir(@n :entier)
Retourner X
DEBUT
Fin [Link]
Répéter
Ecrire("Nbre d’élèves="), lire(n) Objets Types/Nature
Jusqu’à 10<=n<=39 i Entier
FIN X réel
Point d'information
Algorithme de la procédure remplir : On distingue deux types de paramètres :
Procédure Remplir(@T:tab,n :entier) 1- Les paramètres formels : qui figurent dans la
Début définition de la procédure ou la fonction.
Pour i de 0 à n-1 faire 2- Les paramètres effectifs : qui figures dans l'appel
Répéter de la procédure ou la fonction et qui sont manipulés
Ecrire("moyenne",i+1,"="), Lire(T[i]) par celle-ci.
Jusqu’à 0<=T[i]<=20
Point d'information
Finpour
Fin Il y a deux modes de passage par (valeur/adresse).
[Link] Si le mode de passage est par référence (par
Objets Types/Nature adresse), on ajoutera le symbole @ avant le nom du
i Entier paramètre.
Page 1
Année 2022-2023- bac Techniques Les sous programmes Matière : Informatique
Point d'information
Remarque : Les paramètres formels et les paramètres effectifs doivent s'accorder de point de vue nombre et ordre
et leurs types doivent être identiques ou compatibles.
Point d'information
En Algorithmique :
Les procédures sont des sous-programmes qui peuvent avoir plusieurs résultats.
Une fonction est un sous-programme qui renvoie une valeur de type simple, ce type sera le type de la fonction..
Implémentations en python
Méthode 1 Méthode 2
from numpy import * from numpy import *
T1=array([float()]*25) T1=array([float()]*25)
def saisir(): def saisir():
valide=False global n
while valide==False : valide=False
n=int(input('Nombres élèves=')) while valide==False :
valide=(10<=n<=39) n=int(input('Nombres élèves='))
return n valide=(10<=n<=39)
def remplir(T,n): def remplir(T,n):
for i in range(n): for i in range(n):
valide=False valide=False
while valide==False : while valide==False :
print("moy", i+1, '=', end=' ') print("moy", i+1, '=', end=' ')
T[i]=float(input()) T[i]=float(input())
valide=(0<=T[i]<=20) valide=(0<=T[i]<=20)
def moyenne(T,n): def moyenne(T,n):
s=0 s=0
for i in range(n): for i in range(n):
s=s+T[i] s=s+T[i]
moy=s/n moy=s/n
return moy return moy
def maximum(T,n): def maximum(T,n):
X=T[0] X=T[0]
for i in range(1,n) : for i in range(1,n) :
if T[i]>X : if T[i]>X :
X=T[i] X=T[i]
return X return X
#programme principal #programme principal
n=saisir() saisir()
remplir(T1,n) remplir(T1,n)
moy=moyenne(T1,n) moy=moyenne(T1,n)
M=maximum(T1,n) M=maximum(T1,n)
print('moy de la classe=',moy,'\nMeilleure moy =',M) print('moy de la classe=',moy,'\nMeilleure moy=',M)
Point d'information Point d'information
La portée des variables en python :
En Python : Un • Toute variable déclarée au sein d’un module a une portée locale.
module (fonction ou • Toute variable déclarée au sein d’un module précédée par le mot clé global a une
procédure) se définit portée globale. Par conséquent, elle ne devra pas figurer parmi les paramètres de ce
en utilisant le mot clé module.
def - Il est possible de définir un sous-programme sans paramètres. La communication
avec l'appelant se produit grâce aux ressources (objets) communes partagées entre
l'appelé et l'appelant.
Page 2
Année 2022-2023-Bac Techniques Matière : Informatique
Rappel et Evaluation de niveau.
SERIE D’EXERCICES - 1
EXERCICE1 : (sans décomposition modulaire)
On désire écrire un programme qui permet de calculer le volume ( V ) d’un cylindre
Sachant que : V= H*S ,
S = la surface de la base =Π * r2
H=la hauteur du cylindre
Exemple :
Pour un cylindre de :
rayon= 2.5 cm
hauteur = 3 cm
le programme doit afficher : le volume du cylindre = 58.875 cm3
EXERCICE2 : (sans décomposition modulaire)
Écrire programme intitulé CUBIQUE qui saisit un entier de 3 chiffres et de vérifier si l’entier saisie estcubique ou non. Un
entier est dit cubique s’il est égal à la somme des cubes de ses chiffres.
Exemple :
L’entier 153 et un entier cubique car 13+53+33 = 153
TAF :
Donner l’algorithme du programme précèdent
EXERCICE3 :
Écrire un programme nommé Classe qui permet de faire les tâches suivantes :
Saisir le nombre d’élèves N (avec 10 ≤ N < 40).
Remplir un tableau T par les moyennes générales des N élèves
Chercher et afficher la meilleure moyenne de la classe.
Calculer et afficher la moyenne de toute la classe.
Page 3