Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

DS Files Piles

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

TaleNSI – PILES & FILES Évaluation

EXERCICE 1 Piles - 10 points

On crée une classe Pile qui modélise la structure d’une pile d’entiers. Le constructeur de la classe
initialise une pile vide. La définition de cette classe sans l’implémentation de ses méthodes est donnée
ci-dessous.

class Pile:
def __init__(self):
"""Initialise la pile comme une pile vide."""

def est_vide(self):

Terminale NSI - Évaluation : Les PILES et FILES


"""Renvoie True si la liste est vide, False sinon."""

def empiler(self, e):


"""Ajoute l'élément e sur le sommet de la pile, ne renvoie rien."""

def depiler(self):
"""Retire l'élément au sommet de la pile et le renvoie."""

Seules les méthodes de la classe ci-dessus doivent être utilisées pour manipuler les objets Pile.

1. (a) Ecrire une suite d’instructions permettant de créer une instance de la classe Pile affectée à une
variable pile1 contenant les éléments 7, 5 et 2 insérés dans cet ordre.
Ainsi, à l’issue de ces instructions, l’instruction pile1.afficher() produit l’affichage : 7, 5,
2.
(b) Donner l’affichage produit après l’exécution des instructions suivantes :

element1 = pile1.depiler()
pile1.empiler(5)
pile1.empiler(element1)
pile1.afficher()

2. On donne la fonction mystere suivante :

def mystere(pile, element):


pile2 = Pile()
nb_elements = pile.nb_elements()
for i in range(nb_elements):
elem = pile.depiler()
pile2.empiler(elem)
if elem == element:
return pile2
return pile2

(a) Dans chacun des quatre cas suivants, quel est l’affichage obtenu dans la console ?

T3.1 - Piles et Files 1/4


TaleNSI – PILES
SPÉCIALITÉ Tale
NSI&–FILES Évaluation

Cas 1 Cas 2
»> pile.afficher() »> pile.afficher()
7, 5, 2, 3 7, 5, 2, 3
»> mystere(pile, 2).afficher() »> mystere(pile, 9).afficher()
Cas 3 Cas 4
»> pile.afficher() »> pile.est_vide()
7, 5, 2, 3 True
»> mystere(pile, 3).afficher() »> mystere(pile, 3).afficher()

(b) Expliquer ce que permet d’obtenir la fonction mystere.

3. Ecrire une fonction etendre qui prend en arguments deux objets Pile appelés pile1 et pile2 et
qui modifie pile1 en lui ajoutant les éléments de pile2 rangés dans l’ordre inverse. Cette fonction
ne renvoie rien.
Terminale NSI - Évaluation : Les PILES et FILES

On donne ci-dessous les résultats attendus pour certaines instructions :

>>> pile1.afficher()
7, 5, 2, 3
>>> pile2.afficher()
1, 3, 4
>>> etendre(pile1, pile2)
>>> pile1.afficher()
7, 5, 2, 3, 4, 3, 1
>>> pile2.est_vide()
True

4. Ecrire une fonction supprime_toutes_occurences qui prend en arguments un objet Pile appelé
pile et un élément element et supprime tous les éléments element de pile.
On donne ci-dessous les résultats attendus pour certaines instructions :

>>> pile.afficher()
7, 5, 2, 3, 5
>>> supprime_toutes_occurences(pile, 5)
>>> pile.afficher()
7, 2, 3

EXERCICE 2 Files - 10 points

1. Laquelle de ces deux situations est associée à une structure de file ?

Situation 1 : « Je cuisine des crêpes. Dès qu’une crêpe est faite, je la place sur un plat. Chaque nou-
velle crête est placée sur la crêpe précédente. Quand je vais manger une de ces crêpes, je commencerai par
la crêpe située en haut de mon plat. »

Situation 2 : « Je dispose d’une imprimante placée en réseau dans ma salle de classe équipée d’ordi-
nateurs, tous en réseau. Tous les élèves présents ont accès à cette imprimante, via le réseau. A la fin de
la séance, les élèves envoient leur production à l’impression. Les documents sont imprimés dans l’ordre
d’arrivée. »

T3.1 - Piles et Files 2/4


TaleNSI – PILES
SPÉCIALITÉ Tale
NSI&–FILES Évaluation

On modélise la gestion de l’attente à une caisse de supermarché. Les clients sont associés à une file. Les per-
sonnes prioritaires passeront devant les autres clients sans attendre. Nous ne tenons pas compte dans cet
exercice de graduation dans les « priorités ». Nous ne tenons pas compte également de personnes arrivant
ensemble en caisse : il y aura toujours un des deux clients avant l’autre. On appelle « première personne »
dans la queue la première personne qui est juste derrière le client en train de payer ses articles en caisse.
En d’autres termes, le client qui règle ses articles ne compte plus, puisqu’il n’attend plus dans la queue.

Voici les règles appliquées :


• la première personne arrivée se place dans la queue ;
• le contrôleur « relations clients » du supermarché vérifie les priorités « clients » ;
• si une personne dispose d’un accès prioritaire, elle passe en position 1 et, de ce fait, tout le reste des
clients dans l’attente rétrograde d’une place ;
• si deux personnes sont prioritaires, la deuxième arrivée se placera derrière la première arrivée « prio-
ritaire » et ainsi de suite avec tout nouveau prioritaire.

Terminale NSI - Évaluation : Les PILES et FILES


Exemple : à un instant t, la file est dans l’état ci-dessous :

5 4 3 2 1

Client4 Client3 Prioritaire Client2 Client1

La réorganisation grâce au contrôleur « relations clients » se met en place : les clients Client1 et Client2 font
un pas de côté, de même pour les personnes derrière le client Prioritaire en respectant leur ordre d’arrivée
:

Client4 Client3 Client2 Client1

Prioritaire

Le client Prioritaire s’avance et se retrouve en position 1. Puis la file finale se réorganise :

Client4 Client3 Client2 Client1 Prioritaire

Nous utiliserons uniquement les quatre fonctions primitives suivantes pour la suite des questions :

Structure de données abstraite : File


Utilise : Elément, Booléen
Opérations :
• creer_file_vide : ; → File
creer_file_vide() renvoie une file vide
• est_vide : File → Booléen
est_vide(F) renvoie True si la file F est vide, False sinon
• enfiler : File, Elément → ;
enfiler(F, element) ajoute element en entrée de la file F
• defiler : File → Elément
defiler(F) renvoie l’élément en tête de la file F (premier élément) en le retirant de la
file F

T3.1 - Piles et Files 3/4


TaleNSI – PILES
SPÉCIALITÉ Tale
NSI&–FILES Évaluation

2. On considère que le contenu de la file F est le suivant :

Queue Tête

Client4 Prioritaire Client3 Client2 Client1

(a) On considère la file V définie à l’aide du code ci-dessous :

1 V = creer_file_vide()
2 val = defiler(F)
3 while not est_vide(F) and val != 'Prioritaire':
4 enfiler(V, val)
5 val = defiler(F)
Terminale NSI - Évaluation : Les PILES et FILES

Quels seront les contenus des files V et F et de la variable val à l’issue de ces instructions ?
(b) On considère la fonction longueur_file ci-dessous. Le but de cette fonction est de renvoyer
le nombre d’éléments d’une file donnée en paramètre. A la fin du programme, cette file doit
avoir retrouvé son état d’origine. Compléter cette fonction.

1 def longueur_file(F):
2 V = creer_file_vide()
3 n = 0
4 while not est_vide(F):
5 n = ..........
6 val = defiler(F)
7 enfiler(V, val)
8 while not est_vide(V):
9 ..........
10 ..........
11 return n

(c) Ecrire une fonction compter_prio qui prend en paramètre une file F. Cette fonction renvoie le
nombre de personnes prioritaires dans la file d’attente à l’instant t. La file F doit être identique
à celle du départ en fin d’exécution de la fonction.

T3.1 - Piles et Files 4/4

Vous aimerez peut-être aussi