0% ont trouvé ce document utile (0 vote)
5K vues9 pages

Ecercice Corrigé-Algo+python

Ce document décrit un exercice visant à gérer la gestion de projets d'une société de développement web à l'aide d'un programme informatique. Le programme doit permettre la saisie de plusieurs projets, l'affichage des domaines des projets dont le nombre d'employés est inférieur à 22, et l'affichage des noms des chefs de projet ayant travaillé sur un projet en 2020.

Transféré par

morkon
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5K vues9 pages

Ecercice Corrigé-Algo+python

Ce document décrit un exercice visant à gérer la gestion de projets d'une société de développement web à l'aide d'un programme informatique. Le programme doit permettre la saisie de plusieurs projets, l'affichage des domaines des projets dont le nombre d'employés est inférieur à 22, et l'affichage des noms des chefs de projet ayant travaillé sur un projet en 2020.

Transféré par

morkon
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Pensée computationnelle et programmation

Exercice 4 :
Une société de développement web se propose d’informatiser la gestion de ses projets, chaque projet
est caractérisé par :
 Date Création : composée de 3 champs numériques :
 Jour : entier
 Mois : entier
 Année : entier
 Domaine : chaine de 15 caractères au maximum
 Nombre des employés : qui travaillent sur ce projet
 Chef projet : composée de 2 champs :
 Nom : chaine de 15 caractères au maximum
 Numéro de téléphone : chaine de 8 chiffres
L’application doit permettre :
 La saisie de n projets (2 ≤ n ≤ 10).
 L’affichage des domaines des projets dont le nombre des employés est inférieur à 22.
 L’affichage des noms des chefs projet qui ont fait un projet dans l’année 2020.
Écrire un programme qui réalise ces différents traitements en respectant l’ordre mentionné dans
l’énoncé.

Enseignant : AHMED BELHASSEN 1


Pensée computationnelle et programmation

Solution :
Algorithme du programme principal :
Algorithme projets
Début
n  saisir_taille ()
remplir_tableau (t,n)
Ecrire ("Les domaines des projets dont le nombre des employés est inférieur à 22 :")
afficher_domaines (t,n)
Ecrire ("Les noms des chefs projet qui ont fait un projet dans l’année 2020 :")
afficher_chef_projet (t,n)
Fin
Tableau de déclaration des nouveaux types
Types

date = Enregistrement
jour : entier
mois : entier
année : entier
Fin

chef = Enregistrement
nom : chaine de caractères
numéro_tel : chaine de caractères
Fin

projet = Enregistrement
date_création : date
domaine : chaine de caractères
nombre_employés : entier
chef_projet : chef
Fin
Tab = tableau de 10 projets

Enseignant : AHMED BELHASSEN 2


Pensée computationnelle et programmation

Tableau de déclaration des objets globaux (TDOG)


Objet Type/Nature
n Entier
t Tab
saisir_taille Fonction
remplir_tableau Procédure
afficher_domaines Procédure
afficher_chef_projet Procédure

Algorithme de la fonction saisir_taille :


Fonction saisir_taille () : entier
Début
Répéter
Ecrire ("Donner le nombre de projets (>= 2 et <= 10) : ")
Lire (x)
Jusqu’à (x >= 2) et (x <= 10)
Retourner x
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
x Entier

Algorithme de la procédure remplir_tableau :


Procédure remplir_tableau (@ ta : Tab, x : entier)
Début
Pour i de 0 à x-1 faire
Ecrire ("**** Projet num", i+1 ,"****")
Ecrire ("Date de création :")
Ecrire ("Jour : ")
Lire (ta [i].date_création.jour)
Ecrire ("Mois : ")
Lire (ta [i].date_création.mois)
Ecrire ("Année : ")
Lire (ta [i].date_création.année)
Répéter
Ecrire ("Domaine : ")
Lire (ta [i].domaine)
Jusqu’à (vérifier (ta [i].domaine)) et (long (ta [i].nom) <= 15)

Enseignant : AHMED BELHASSEN 3


Pensée computationnelle et programmation

Ecrire ("Nombre des employés : ")


Lire (ta [i].nombre_employés)
Répéter
Ecrire ("Nom : ")
Lire (ta [i].chef_projet.nom)
Jusqu’à (vérifier (ta [i].chef_projet.nom)) et (long (ta [i].chef_projet.nom) <= 15)
Répéter
Ecrire ("Numéro de téléphone : ")
Lire (ta [i].chef_projet.numéro_tel)
Jusqu’à (estnum (ta [i].chef_projet.numéro_tel)) et (long (ta [i].chef_projet.numéro_tel) = 8)
Fin pour
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i Entier
vérifier Fonction

Algorithme de la fonction vérifier :


Fonction vérifier (ch : chaine de caractères) : booléen
Début
Si (long (ch) > 0) alors
Pour i de 0 à long (ch)-1 faire
Si (((ch [i] < "A") ou (ch [i] > "Z")) et ((ch [i] < "a") ou (ch [i] > "z"))) et (ch [i] ≠ " ") alors
Retourner Faux
Fin si
Fin pour
Retourner Vrai
Sinon
Retourner Faux
Fin si
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i Entier

Enseignant : AHMED BELHASSEN 4


Pensée computationnelle et programmation

Algorithme de la procédure afficher_domaines :


Procédure afficher_domaines (ta : Tab, x : entier)
Début
Pour i de 0 à x-1 faire
Si (ta [i].nombre_employés < 22) alors
Ecrire (ta [i].domaine)
Fin si
Fin pour
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i Entier

Algorithme de la procédure afficher_chef_projet :


Procédure afficher_chef_projet (ta : Tab, x : entier)
Début
Pour i de 0 à x-1 faire
Si (ta [i].date_création.année = 2020) alors
Ecrire (ta [i].chef_projet.nom)
Fin si
Fin pour
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i Entier

Enseignant : AHMED BELHASSEN 5


Pensée computationnelle et programmation

Programme en python :
Version dictionnaire :
from numpy import*
def vérifier (ch) :
if (len (ch) > 0) :
for i in range (len (ch)) :
if ((ch [i] < "A") or (ch [i] > "Z")) and ((ch [i] < "a") or (ch [i] > "z")) and (ch [i] !=" ") :
return False
return True
else :
return False
def saisir_taille () :
x=0
while (x < 2) or (x > 9) :
x = int (input ("Donner le nombre de projets (>= 2 et <= 10) : "))
return x
def remplir_tableau (ta,x) :
for i in range (x) :
ta [i] = {}
print ("**** Projet num", i+1 ,"****")
print ("Date de création :")
ta [i]["date_création"] = {}
ta [i]["date_création"]["jour"] = int (input ("Jour : "))
ta [i]["date_création"]["mois"] = int (input ("Mois : "))
ta [i]["date_création"]["année"] = int (input ("Année : "))
ta [i]["domaine"] = ""
while not (vérifier (ta [i]["domaine"])) or (len (ta [i]["domaine"]) > 15) :
ta [i]["domaine"] = input ("Domaine : ")
ta [i]["nombre_employés"] = int (input ("Nombre des employés : "))
print ("Chef projet :")
ta [i]["chef_projet"] ={}
ta [i]["chef_projet"]["nom"] = ""
while not (vérifier (ta [i]["chef_projet"]["nom"])) or (len (ta [i]["chef_projet"]["nom"]) > 15) :
ta [i]["chef_projet"]["nom"] = input ("Nom : ")

Enseignant : AHMED BELHASSEN 6


Pensée computationnelle et programmation

ta [i]["chef_projet"]["numéro_tel"] = ""
while not (ta [i]["chef_projet"]["numéro_tel"].isdigit ()) or (len (ta
[i]["chef_projet"]["numéro_tel"] ) != 8) :
ta [i]["chef_projet"]["numéro_tel"] = input ("Numéro de téléphone : ")
def afficher_domaines (ta,x) :
for i in range (x) :
if (ta [i]["nombre_employés"] < 22) :
print (ta [i]["domaine"])
def afficher_chef_projet (ta,x) :
for i in range (x) :
if (ta [i]["date_création"]["année"] == 2020) :
print (ta [i]["chef_projet"]["nom"])
#programme principal
n = saisir_taille ()
t = array ([{}] * n)
remplir_tableau (t,n)
print ("Les domaines des projets dont le nombre des employés est inférieur à 22 :")
afficher_domaines (t,n)
print ("Les noms des chefs projet qui ont fait un projet dans l’année 2020 :")
afficher_chef_projet (t,n)

Enseignant : AHMED BELHASSEN 7


Pensée computationnelle et programmation

Version classe :
from numpy import*
class date :
jour = 0
mois = 0
année = 0
class chef :
nom = ""
numéro_tel = ""
class projet :
date_création = date ()
domaine = ""
nombre_employés = 0
chef_projet = chef ()
def vérifier (ch) :
if (len (ch) > 0) :
for i in range (len (ch)) :
if ((ch [i] < "A") or (ch [i] > "Z")) and ((ch [i] < "a") or (ch [i] > "z")) and (ch [i] !=" ") :
return False
return True
else :
return False
def saisir_taille () :
x=0
while (x < 2) or (x > 10) :
x = int (input ("Donner le nombre de projets (>= 2 et <= 10) : "))
return x
def remplir_tableau (ta,x) :
for i in range (x) :
ta [i] = projet ()
print ("**** Projet num", i+1 ,"****")
print ("Date de création :")
ta [i].date_création = date ()
ta [i].date_création.jour = int (input ("Jour : "))

Enseignant : AHMED BELHASSEN 8


Pensée computationnelle et programmation

ta [i].date_création.mois = int (input ("Mois : "))


ta [i].date_création.année = int (input ("Année : "))
ta [i].domaine = ""
while not (vérifier (ta [i].domaine)) or (len (ta [i].domaine) > 15) :
ta [i].domaine = input ("Domaine : ")
ta [i].nombre_employés = int (input ("Nombre des employés : "))
print ("Chef projet :")
ta [i].chef_projet = chef ()
ta [i].chef_projet.nom = ""
while not (vérifier (ta [i].chef_projet.nom)) or (len (ta [i].chef_projet.nom) > 15) :
ta [i].chef_projet.nom = input ("Nom : ")
ta [i].chef_projet.numéro_tel = ""
while not (ta [i].chef_projet.numéro_tel.isdigit ()) or (len (ta [i].chef_projet.numéro_tel ) != 8) :
ta [i].chef_projet.numéro_tel = input ("Numéro de téléphone : ")
def afficher_domaines (ta,x) :
for i in range (x) :
if (ta [i].nombre_employés < 22) :
print (ta [i].domaine)
def afficher_chef_projet (ta,x) :
for i in range (x) :
if (ta [i].date_création.année == 2020) :
print (ta [i].chef_projet.nom)
#programme principal
n = saisir_taille ()
t = empty (n , projet)
# t = array ([projet] * n)
remplir_tableau (t,n)
print ("Les domaines des projets dont le nombre des employés est inférieur à 22 :")
afficher_domaines (t,n)
print ("Les noms des chefs projet qui ont fait un projet dans l’année 2020 :")
afficher_chef_projet (t,n)

Enseignant : AHMED BELHASSEN 9

Vous aimerez peut-être aussi