Résolution de problèmes, fonctions et traitements conditionnels
But
Papier crayon à l'honneur pour la résolution de problèmes.
Représentation de la solution avec pseudo-codes et organigrammes.
Retour sur les fonctions.
Traitements conditionnels (if/elif/else).
Énoncé
On essaie de déterminer la catégorie d’une personne et ce que cette personne peut faire dans la société en raison de son âge selon certains critères.
Les critères sont :
Droit de vote : avoir au moins 18 ans
Être à l’école : avoir entre 5 et moins de 50 ans
Pouvoir conduire : avoir 16 ans et plus
Avoir un prix spécial pour la STO: avoir moins de 18 ans ou 65 ans et plus
Avoir sa carte de l’âge d’or: avoir 50 ans ou plus
Notez qu’il est possible d’avoir une fraction d’âge, c’est-à-dire 13.5 ans!
On considère qu’une personne est un ou une :
adulte, si son âge dépasse 18 ans,
adolescent.e, si son âge se situe entre 12 et 18 ans et
enfant, si son âge ne dépasse pas 11 ans.
Votre programme doit donner la possibilité à l’utilisateur d’entrer le nom, le prénom et l'année de naissance d’une personne et, ensuite, de pouvoir afficher, selon son choix, l’âge et la catégorie de cette personne, ce qu’il peut faire en société, ou les deux (3 choix).
Un affichage propre et aligné sera important pour bien voir les réponses.
Voir l'annexe pour un aperçu du résultat d'exécution d'un tel programme.
Résolution
Avant de commencer à écrire un code source, il est primordial de réfléchir et de concevoir une solution par écrit, via des diagrammes (organigramme) ou un pseudo-code.
Notes de cours sur la résolution de problèmes (ne faites pas l’exercice qui est dans ces notes de cours).
Découpage du problème en sous-problèmes -> Identification des fonctions
Question à se poser : Quelles sont les parties distinctes du problème qu'on peut traiter, chacune, indépendamment des autres parties ?
Chacune des parties correspond à une fonction.
Quelles sont les entrées sorties pour chaque sous-problème?
La résolution de chaque sous-problème se fait dans les étapes suivantes.
Une solution incomplète d’un sous-problème vous a été fournie à travers un organigramme et un pseudo-code ainsi qu’un programme en python. Voir les notes de cours pour plus de détails sur les méthodes de présentation d’une solution.

# ************************** Entrées/sorties ****************************
# Entrées (paramètres) : age
# Sorties (retour) : Une chaîne de caractères indiquant la catégorie d'âge de la
# personne "adulte" ou "adolescent"
# ************************** Début pseudo-code **************************
# Début : fonction qui détermine la catégorie
# Si l'age est > 18 alors
# categorie = "adulte"
# Sinon,
# categorie = "adolescent"
# retourner la categorie
# Fin
def categorie_age():
"""
Fonction qui retourne une chaîne de caractères indiquant s'il
s'agit d'un adulte ou non selon l'âge entré en paramètre.
:param age: l'age de la personne (entier positif)
:return: Un string indiquant la catégorie de la personne.
Valeurs attendues : "Adulte" ou "Enfant ou Adolescent"
"""
if age > 18:
categorie = "adulte"
else:
categorie = "adolescent"
return categorie
if __name__ == "__main__":
nom = input("Entrez un prénom : ")
prenom = input("Entrez un nom : ")
À vos marques ...
La fonction
categorie_age
ainsi que le programme principal contiennent des erreurs de syntaxe et d'exécution. Vous devez les corriger afin de faire fonctionner votre programme. Voir les notes de cours sur les traitements conditionnels au besoin.
Testez votre fonction avec les âges : 30, 15, 8. Que constatez-vous?
30
adulte
adulte
15
adolescent
adolescent
8
enfant
adolescent
La fonction ne traite pas le cas où l'âge correspond à celui d'un enfant. Il s'agit d'une erreur de logique que vous allez corriger.
Avant de corriger l'erreur de logique, vous avez besoin de connaître les structures décisionnelles multiples. Prenez le temps de lire les notes de cours.
Complétez l'organigramme et le pseudo-code ci-dessus afin de prendre en compte le cas où l'âge correspond à celui d'un enfant. (utilisez le papier et crayon pour schématiser votre organigramme et écrire votre pseudo-code).
Corrigez ensuite votre fonction et testez la. Assurez-vous d'avoir mis à jour la documentation (docstring) de la fonction.
Maintenant, vous allez compléter la résolution du problème. Pour chacun des sous-problèmes (fonctions) restant(e)s,
créez un algorithme (pseudo-code ou organigramme (papier crayon)),
traduisez votre algorithme en une fonction Python et
testez votre fonction :
Créez un plan de test contenant des valeurs variées.
Testez votre programme pour confirmer son fonctionnement et relevez les erreurs.
Finalisez le programme principal de façon à permettre de donner à l'utilisateur le choix mentionné dans l'énoncé.
Annexe
Voici un exemple de résultat d'exécuté de la totalité du programme :

Last updated