Accueil

Listes

Objectifs du TD : étudier la structure de données élémentaire des listes

Nous avons vu qu'il est important de réfléchir à la bonne organisation des séquences d'instructions en utilisant correctement les conditionnelles, les itérations et les fonctions. Cela répond à la question : quel traitement effectuer ?
Mais il est aussi primordial de réfléchir à la façon de stocker les données qui sont manipulées par le programme. Dans ce chapitre, nous allons voir une structure de données très largement utilisée : les listes.

PROBLEMES

  1. Produit matriciel Ecrire un programme qui permet de lire une matrice m, un vecteur v et de calculer le produit de m par v. Aide : décomposer le problème en plusieurs fonctions. Il faut lire la matrice et la renvoyer, il faut lire le vecteur et le renvoyer, il faut appeler la fonction qui calcule le produit et le renvoie.
    Produits matriciel
    nb lignes de la matrice 3
    nb colonnes de la matrice 3
    lecture d'une matrice d'entiers de taille ( 3 , 3 )
    ligne de taille 3 : 1 2 3
    ligne de taille 3 : 1 2 3
    ligne de taille 3 : 1 2 3
    vecteur d'entiers de taille 3 : 1 1 1
    le produit est:  [6, 6, 6]
    encore o/n ? o
    
    nb lignes de la matrice 4
    nb colonnes de la matrice 2
    lecture d'une matrice d'entiers de taille ( 2 , 4 )
    ligne de taille 2 : 1 2
    ligne de taille 2 : 1 2
    ligne de taille 2 : 1 2
    ligne de taille 2 : 1 2
    vecteur d'entiers de taille 2 : 4 5
    le produit est:  [14, 14, 14, 14]
    encore o/n ? o
    
    nb lignes de la matrice 4
    nb colonnes de la matrice 2
    lecture d'une matrice d'entiers de taille ( 2 , 4 )
    ligne de taille 2 : 1 2
    ligne de taille 2 : 3 4
    ligne de taille 2 : 5 6
    ligne de taille 2 : 7 8
    vecteur d'entiers de taille 2 : 1 1
    le produit est:  [3, 7, 11, 15]
    encore o/n ? n
    
  2. Ecrire une fonction permute qui effectue une permutation circulaire aléatoire des lettres d'un mot, c'est à dire qui fait "tourner" le mot vers la gauche à partir d'un indice tiré au hazard. Par exemple, pour le mot bonjour, si l'indice tiré est 2 on obtient njourbo et si l'indice tiré est 4 on obtient ourbonj. Utiliser cette fonction pour lire une liste de mots et afficher la permutation de chacun de ces mots.

  3. Gestion d'un stock de CD. Vous devez gérer un stock de CD qui sont stockés dans une liste de la forme suivante :
    [["Suites violoncelle seul","Bylsma","classique",23.50,1], ["No love","Eminem","rap",25.60,5], ["J'appuie sur la gâchette","NTM","rap",13.50,10], ["Symphonie du nouveau monde","Dvorak","classique",30.70,1], ["Adieu tristesse","Arthur H.", "chanson francaise",15.2,10], ["Mister mystère","M","chanson francaise",25.2,3], ["Je dis M","M","chanson francaise",25.2,3],["Pacific 231","Raphaël","chanson francaise",28.6,8]]

    Chaque élément de la liste est un CD représenté par une liste contenant :

    Vous devez fournir un menu qui permet : L'utilisateur doit pouvoir enchainer ces actions tant qu'il ne souhaite pas sortir du menu. Quand il quitte le menu, on affiche un récapitulatif de ses commandes avec le montant total.

    Evidemment, vous devez gérer les cas de mauvaise utilisation, par exemple si l'on commande un CD de Chantal Goya, ou si l'on commande 3 exemplaires puis 4 exemplaires du CD No love de Eminem.
    Pour les plus avancés, vous pouvez aussi gérer un panier. Dans ce cas, les CD qui sont dans le pannier doivent être momentanément supprimés du stock (pour ne pas commander un CD qui n'existe plus) mais doivent être rajoutés au stock si l'utilisateur les retire de son pannier ou ne passe pas sa commande.
    Aide : les fonctions sont indispensables !!!