Académique Documents
Professionnel Documents
Culture Documents
Cours 2024
Cours 2024
Les tableaux
Activité 1 :
Nous voulons calculer puis trier dans l'ordre décroissant les moyennes de cinq élèves. A première vue, nous
allons utiliser cinq variables de type réel Moy1, Moy2, Moy3, Moy4 et Moy5. Nous remarquons que ce nombre
de variables deviendra encore beaucoup plus grand si nous avons 30 élèves et dans le tri nous serons amenés à
manipuler autant de variables. Cela rendra les algorithmes très complexes et les tris impossibles. Cependant, ces
variables moyennes ont toutes le même rôle (moyenne d'un élève); nous pouvons les regrouper sous le même
nom MOYENNE, nous les distinguerons avec des indices de 1 à 5.
Ce regroupement formera une nouvelle structure dite tableau ou vecteur de 5 éléments.
MOYENNE
indice 1 2 3 4 5
Définition :
Un tableau (ou encore une variable indicée) est une structure de données permettant de ranger un nombre fini
d'éléments de même type.
Un tableau est caractérisé par :
• Un nom servant d'identificateur
• Une taille
• Le type des éléments qu'il contient
1ère méthode :
Tableau de déclaration des objets (T.D.O)
Objet Type/Nature
Nom_Tableau Tableau de taille et de type_éléments
Exemple : T Tableau de 30 réels
2ème méthode :
Tableau de déclaration des nouveaux types (T.D.N.T)
Nom_Type_Tableau = Tableau de taille et de type_éléments
Exemple : Tab = Tableau de 20 chaînes de caractères
from numpy import array Pour une telle déclaration, on peut prévoir le tableau suivant :
T = array ([int( )] * 8)
T 45 13 -7 0 84 -3 34 2
0 1 2 3 4 5 6 7
N.B. :
• L’indice de la 1ère case d’un tableau est, par défaut, égal à Zéro ;
• Pour accéder à un élément d’indice « i » d’un tableau : Nom_Tableau [ i ] ;
• Tous les éléments dans un numpy.array sont de même type (entier, réel, caractère,...) ;
• La taille du tableau est constante (il n’est pas possible d’insérer ou de supprimer un élément).
Application :
Dans l’objectif d’améliorer le travail collectif au sein de la classe, une institutrice à l’école a désigné
un groupe d’élèves composé de six membres pour présenter chacun d’eux une partie de cours dans
un jour différent.
Pour aider l’institutrice à affecter aléatoirement
les élèves aux jours, on se propose d’écrire un
programme en python qui :
• Demande les prénoms de six élèves,
• Remplir un tableau par les six jours de
cours de la semaine,
• Afficher pour chaque élève son jour
aléatoire de présentation de l’exposé.
Constatation :
Cette solution est un peu laborieuse. Les conditions se ressemblent plus ou moins, et surtout on
oblige la machine à examiner 4 tests successifs alors qu’ils portent tous sur un même objet, la
moyenne annuelle MA. Il serait intéressant de disposer les tests de la manière suivante :
Si (MA < 12)
Alors Mention ← “Passable”
Sinon Si (MA < 14)
Alors Mention ← “Assez bien”
Sinon Si (MA < 16)
Alors Mention ← “Bien”
Sinon Mention ← “Tres bien”
FinSi
Si condition1 if condition1 :
Alors Traitement 1 Traitement 1
Sinon Si condition2 # Seul le traitement qui correspond elif condition2 :
Alors Traitement 2 à la première condition vraie Traitement 2
Sinon Si condition3 rencontrée sera exécuté. elif condition3 :
Alors Traitement 3 Si les (n-1) premières conditions Traitement 3
… sont fausses, c'est le traitement n …
Sinon Traitement n qui sera exécuté. else :
Fin Si Traitement n
Activité 2 :
Utiliser la syntaxe de la structure conditionnelle généralisée pour rédiger un algorithme solution
de la question2 de l’activite1.
Algorithme Decision_Mention
Début
Ecrire ("Donner la moyenne annuelle d’un élève :") ; Lire(MA)
Si (MA < 10)
Alors DEC ← "Redouble"
ME ← ""
Sinon DEC ←"Admis"
Si (MA < 12)
Alors ME ← "Passable"
Sinon Si (MA < 14)
Alors ME ← "Assez Bien"
Sinon Si (MA < 16)
Alors ME ← "Bien"
Sinon ME ← "Très Bien"
FinSi
FinSi
Ecrire ("La décision est : ", DEC, "La mention est : ", ME )
Fin
T.D.O.
Objet Type/Nature
MA Réel
ME Chaîne de caractères
DEC Chaîne de caractères
Applications :
1) Ecrire un algorithme puis un programme Python permettant de chercher puis d’afficher le
plus grand (ou le maximum) de trois réels donnés.
2) Ecrire un algorithme puis un programme Python permettant de résoudre une équation au
premier degré de la forme ax + b = 0.
3) Ecrire un algorithme puis un programme Python qui, à partir du numéro d’un mois, permet
d’afficher la saison.
Algorithme Saisons
Début
Ecrire ("Donner le numéro du mois") ; Lire (mois)
Si (mois ∈ [3..5])
Alors Saison "Printemps"
Sinon Si (mois ∈[6..8])
Alors Saison "Eté"
Sinon Si ( mois ∈ [9..11])
Alors Saison "Automne"
Sinon Si ( mois ∈ [12,1,2])
Alors Saison "Hiver"
Sinon Saison "Numéro du mois invalide"
FinSi
Ecrire (Saison)
Fin
N.B. :
• Le sélecteur (soit une variable soit une expression) doit être de type scalaire (entier, caractère, booléen).
• L’ensemble des valeurs doit être des constantes de même type que le sélecteur.
• La partie sinon est facultative.
Activité 3 :
Reprenez l’application3 de la structure conditionnelle généralisée. Utiliser la syntaxe de la
structure conditionnelle à choix pour rédiger un algorithme solution de l’activite3.
Algorithme Saisons mois=int(input("Donner le numéro du mois"))
Début match mois :
Ecrire ("Donner le numéro du mois") ; Lire (mois) case 3|4|5 : Saison = "Printemps"
Selon mois case 6|7|8 : Saison = "Eté"
3,4,5 : Saison "Printemps" case 9|10|11 : Saison = "Automne"
6,7,8 : Saison "Eté" case 12|1|2 : Saison = "Hiver"
9,10,11 : Saison "Automne" case _ : Saison = "Numéro du mois invalide"
12,1,2 : Saison "Hiver"
Sinon Saison "Numéro du mois invalide" print (Saison)
Fin Selon
Ecrire (Saison)
Fin
Applications :
1) Ecrire un algorithme et un programme en Python qui affiche selon le cas, la nature d’un
caractère (consonne, voyelle, chiffre, opérateur ou symbole) correspondant à une touche
saisie.
2) Ecrire un algorithme et un programme en Python qui saisit le numéro du mois et affiche le
nombre de jours de ce mois. Pour le cas de février, on lit l'année, si l'année est bissextile, le
nombre de jours est 29, sinon c'est 28 jours.
D’après ces exemples, vous pouvez remarquer l’existence de deux types de structures itératives :
1) La structure itérative complète où le nombre d’itérations est connu à l’avance.
2) Les structures itératives à condition d’arrêt où le nombre d’itérations est inconnu à l’avance.
Activité 1 :
Soit l’algorithme suivant :
Algorithme Premier
Début
Ecrire ("Introduire un entier naturel strictement supérieur à 1 "), Lire (n)
d←0
Pour i de 1 à n Faire
Si n mod i = 0
Alors d←d + 1
FinSi
FinPour
Si d = 2
Alors Ecrire ("Le nombre", n, "est premier")
Sinon Ecrire ("Le nombre", n, "n’est pas premier")
FinSi
Fin
Activité 2 :
On se propose de déterminer le PGCD de deux entiers naturels A et B en utilisant la méthode
de la différence :
PGCD (a, b) = a ou b si a = b
PGCD (a, b) = PGCD (a-b, b) si a > b
PGCD (a, b) = PGCD (a, b-a) si b > a
Activité 3 :
Ecrire un algorithme puis son implémentation en python qui cherche si une valeur V existe dans un
tableau T. T est composé de N réels. V est une valeur réelle donnée. Le programme affichera un
message de la forme :
"V existe dans T"
ou "V n'existe pas dans T".
Application1 :
Ecrire un programme en Python qui permet de jouer contre l’ordinateur le jeu de devinette.
Le principe du jeu est le suivant :
• L’ordinateur choisit au hasard un entier entre 1 et 100.
• L’utilisateur propose un entier.
• Le programme affiche le message « plus grand » ou « plus petit ».
• Le jeu s’arrête lorsque l’utilisateur devine le nombre ou il atteint 7 essais.
Application2 :
Tout nombre positif de deux chiffres ab, tel que a≠b, possède une liste appelée "liste vers 9".
Le principe est le suivant : on calcule la différence entre ab et son symétrique ba ; le résultat trouvé
subit le même traitement ; on répète ce processus jusqu’à obtenir une différence = 9. L’ensemble
constitué par le nombre initial et les résultats des différences est appelé "liste vers 9".
Exemple :
Soit X = 18 ; |18-81|=63 ; |63-36|=27 ; |27-72|=45 ; |45-54|=9 fin du traitement
La liste vers 9 est : 18 63 27 45 9
Ecrire un programme en Python qui permet de saisir un nombre positif composé de deux chiffres
différents, de générer sa "liste vers 9" et enfin de l’afficher.
LES SOUS-PROGRAMMES
Activité 1 :
Soit à saisir un entier naturel N (avec 0 ≤ n ≤ 99). On se propose de calculer et d’afficher la somme
des factorielles des chiffres de N.
Exemples :
Soit n = 30
→ 3! + 0! = 7
Soit n=5
→ 5! = 120
En voici deux programmes en Python, proposés par deux élèves de vos camarades :
Constatations :
Pour résoudre des problèmes complexes, il est souvent préférable de les décomposer en sous
problèmes. Ces derniers sont à leur tour décomposés selon le besoin. La décomposition s'arrête
aux sous problèmes relativement simples à résoudre. Par la suite, on associe à chaque sous
problème un module assurant sa résolution. Un module peut être une fonction ou une procédure.
L'algorithme résolvant le problème initial présentera un ensemble d'appels aux modules
envisagés.
Une telle approche s'appelle analyse modulaire. Elle repose sur le vieil adage "Diviser pour
régner".
Programme
principal
Niveau 1 de
décomposition SP1 SP2 SP3
Niveau 2 de
SP3_2 décomposition
SP3_1
Le recours à cette méthode de résolution présente des avantages indéniables tels que :
• Présenter des solutions claires en évitant la redondance des codes dans un programme.
• Simplifier la résolution du problème initial en supposant que les différents modules
prévus sont déjà résolus.
• Se concentrer sur la résolution d'un sous problème à la fois.
• Détecter facilement les parties à consulter ou à modifier.
LES FONCTIONS
• Définition :
Une fonction est un sous-programme qui permet la résolution d’un sous-problème précis et retourne
(renvoie) un seul résultat de type simple (entier, caractère, réel, booléen, chaîne de caractères)
au programme appelant.
• Syntaxe :
En algorithmique En Python
FONCTION Nom_fonction (pf1:type1, …, pfn:typen) : Type_Résultat def Nom_fonction ( pf1 , … , pfn ) :
DEBUT Instruction 1
Instruction 1 Instruction 2
Instruction 2 Instruction N
Instruction N return Résultat
Retourner Résultat
FIN
• L’appel d’une fonction : doit être intégré dans une expression (affectation, calcul, affichage,
comparaison).
En Algorithmique En Python
Objet Nom_fonction (pe1, …, pen) Objet = Nom_fonction (pe1, …, pen)
Exemples, pour de fonctions prédéfinies
• Ch2 Majus(ch) • Ch2 = ch.upper()
• Si Pos (ch1, ch2) ≠ 0 Alors ............ • if ch2.find(ch1) !=0 : …………………
• y 5 * RacineCarré(x+3) • y = 5 * sqrt (x+3)
• Ecrire (Long(ch)) • print ( len(ch))
N.B.
Les paramètres effectifs (pe1,…, pen) et les paramètres formels (pf1, …, pfn) doivent
s’accorder de point de vue ordre, nombre et type.
LES PROCEDURES
• Définition :
Une procédure est un sous-programme qui permet la résolution d’un sous-problème précis et qui
peut transmettre de zéro à plusieurs résultats au programme appelant.
• Syntaxe :
En algorithmique En Python
PROCEDURE Nom_procédure (pf1 : type1, …, pf2 : typen) def Nom_procédure (pf1, …, pfn) :
Début Instruction 1
Instruction 1 Instruction 2
Instruction 2 Instruction N
Instruction N
Fin
• L’appel d'une procédure : Pour appeler une procédure, il suffit d’écrire son nom suivi des
paramètres effectifs, dans une instruction et non pas dans une expression.
En algorithmique En Python
Nom_procédure (pe1, …, pen) Nom_procédure (pe1, …, pen)
Exemples, pour de procédures prédéfinies
Lire (x) x = input()
Ecrire (a, b) print(a, b)
N.B. :
Le passage de paramètres par adresse (par référence) permet au programme appelant (PP) de
transmettre une valeur à la procédure appelée (SP) et vice versa. Dans ce cas, le paramètre formel est
précédé par le symbole « @ ». Par exemple : PROCEDURE TRAITEMENT( c : Réel ; @ a, b :Entier).
Toute modification d'un paramètre formel dans le sous-programme appelé entraîne (automatiquement)
au moment du retour à l'appelant une modification de la valeur du paramètre effectif correspondant.
En python, le paramètre de type tableau est par défaut passé par référence.
La portée des variables en python :
• Toute variable déclarée au sein d’un module a une portée locale.
• Toute variable déclarée au sein d’un module précédée par le mot clé global a une portée globale.
Par conséquent, elle ne devra pas figurer parmi les paramètres de ce module.
Activité 2 :
Deux nombres entiers strictement positifs M et N sont dits amis, si chacun des deux nombres est
égal à la somme des diviseurs propres de l'autre. On se propose d’écrire un programme qui permet
de déterminer puis d’afficher si deux entiers donnés m et n sont amis ou non.
Travail demandé :
1. Ecrire un algorithme du programme principal, solution à ce problème, en le
décomposant en modules.
2. Ecrire un algorithme pour chaque module envisagé.
ALGORITHME Nombres_Amis
DEBUT
Saisie(m)
Saisie(n)
sdm Som_diviseurs(m)
sdn Som_diviseurs(n)
Affichage (m, n, sdm, sdn)
FIN
Tableau de déclaration des objets globaux
Objet Type/nature
m Entier
n Entier
sdm Entier
sdn Entier
Affichage Procédure
Saisie Procédure
Som_Diviseurs Fonction
Applications :
1) Ecrire en Python :
• une fonction MAX2 qui détermine le maximum de deux entiers ;
• une procédure MAX_MIN3 qui détermine le maximum et le minimum de trois
entiers, en faisant appel à la fonction MAX2.
2) Soit à saisir les moyennes de n élèves (5 < n ≤ 35) dans un tableau. Il s'agit de trouver puis
d'afficher:
• Le nombre d'élèves qui ont réussi.
• La plus basse moyenne.
3) Soit à saisir les moyennes de n élèves (5 < n ≤ 35) dans un tableau T et leurs noms dans un
tableau Nom. Il s'agit d'afficher le nom de chaque élève accompagné de son rang en classe.
Exemple :
Soit n=10
T 10.5 9.75 12.25 14.33 12
1 2 3 4 5
4) Soit à remplir un tableau T par n caractères (avec 6 ≤ n ≤ 30). Il s’agit de repartir ces n
caractères sur trois tableaux et les afficher :
• TL : un tableau de lettres
• TC : un tableau de chiffres
• TS : un tableau de symboles
Exemple :
Soit n=10
T h 4 ! K } 2 r $ 8 d
0 1 2 3 4 5 6 7 8 9
On doit obtenir les tableaux suivants :
TL h K r d
0 1 2 3
TC 4 2 8
0 1 2
TS ! } $
0 1 2