# liste # Programme liste-src # Exercices de base sur les Listes # Ajouter un élément # On peut ajouter un élément à une liste grâce à la commande Ajouter_a. # La commande Longueur retourne le nombre d’éléments de la liste passée en argument # Programme ajouter_a (Declarer ma_liste De_type "liste") (Affecter_a ma_liste (Liste)) (Afficher ma_liste) (Ajouter_a ma_liste 42) (Afficher ma_liste) (Afficher (Longueur ma_liste)) (Ajouter_a ma_liste "bonjour") (Afficher ma_liste) (Afficher (Longueur ma_liste)) (Ajouter_a ma_liste Vrai) (Afficher ma_liste) (Afficher (Longueur ma_liste)) # Vous pouvez faire quelques expériences en modifiant le programme ci-dessus. # Lire un élément # On peut accéder à la valeur d’un élément d’une liste grâce à la commande Nieme. # Cette commande se prononce « énième » (comme « deuxième », « troisième »… mais # avec un « n » au début). # Attention, on numérote les éléments à partir de 1. # Programme nieme (Declarer ma_liste De_type "liste") (Affecter_a ma_liste (Liste "a" "b" "c" "d" "e")) (Afficher ma_liste) (Afficher (Nieme ma_liste 1)) (Afficher (Nieme ma_liste 5)) # Même chose, vous pouvez faire quelques expériences en modifiant le programme ci-dessus. # Algo mystère # Que fait l’algorithme suivant ? # Programme mystere_1 (!!! "Algo mystère n°1") (Declarer liste_nombres var_mystere De_type "liste") (Declarer i De_type "nombre") (Affecter_a liste_nombres (Liste -3 1 17 -12 50 -1 0 31 -17 -2 6)) (Afficher "Voici une liste de nombres :") (Afficher liste_nombres) (Affecter_a var_mystere (Liste)) (Afficher var_mystere) (Affecter_a i 1) (Tant_que (<= i (Longueur liste_nombres)) Faire (Ajouter_a var_mystere (Nieme liste_nombres i)) (Affecter_a i (+ i 1)) ) (Afficher var_mystere) (!!! "Fin algo mystère n°1") # Dès que vous avez trouvé, appelez le professeur sans hurler la réponse. # Algo mystère 2 # Que fait l’algorithme suivant ? # Programme mystere_2 (!!! "Algo mystère n°2") (Declarer liste_fruits De_type "liste") (Declarer var_mystere De_type "texte") (Declarer i De_type "nombre") (Affecter_a liste_fruits (Liste "pomme" "poire" "banane" "kiwi")) (Afficher "Voici une liste de fruits :") (Afficher liste_fruits) (Affecter_a var_mystere "") (Affecter_a i 1) (Tant_que (<= i (Longueur liste_fruits)) Faire (Affecter_a var_mystere (Concatener var_mystere (Nieme liste_fruits i))) (Affecter_a i (+ i 1)) ) (Afficher var_mystere) (!!! "Fin algo mystère n°2") # Dès que vous avez trouvé, appelez le professeur sans hurler la réponse. # Comment le modifier pour qu’il affiche quelque chose de lisible ? # Copie positive # Modifier l’algorithme de copie ci-dessous pour que la liste copiée ne # contienne que les nombres positif de la liste originale. # # Programme copie (!!! "Algo copie") (Declarer liste_nombres copie De_type "liste") (Declarer i De_type "nombre") (Affecter_a liste_nombres (Liste -3 1 17 -12 50 -1 0 31 -17 -2 6)) (Affecter_a copie (Liste)) (Afficher copie) (Affecter_a i 1) (Tant_que (<= i (Longueur liste_nombres)) Faire (Ajouter_a copie (Nieme liste_nombres i)) (Affecter_a i (+ i 1)) ) (Afficher copie) (!!! "Fin algo copie") # Dès que c’est fait, appelez le professeur. # Si vous êtes en avance, essayez d’écrire un algorithme qui crée une copie # de la liste originale, mais à l’envers. # Affectation à un endroit précis d’une liste # Reprenons la liste du début de ce fichier. # On peut modifier la valeur d’un élément grâce à la commande Affecter_a # (la même que d’habitude) mais avec le mot-clé En_position. # Programme affectation_positionnelle (Declarer ma_liste De_type "liste") (Affecter_a ma_liste (Liste 42 "bonjour" Vrai)) (Afficher ma_liste) (Affecter_a ma_liste "salut" En_position 2) (Afficher ma_liste) (Affecter_a ma_liste 7 En_position 1) (Afficher ma_liste) # Remarquez qu’on a remplacé le premier élément (en position 1) par un 7. # Dans la fenêtre suivante, écrire un algorithme qui modifie liste_nombres # de façon à remplacer les nombres négatifs par des zéros. # Attention : il faut modifier la liste et non en créer une copie. # Dès que c’est fait, appelez le professeur. # Programme annuler_negatifs (Declarer liste_nombres De_type "liste") (Affecter_a liste_nombres (Liste -3 1 17 -12 50 -1 0 31 -17 -2 6)) (Afficher liste_nombres) (!!! "...votre code ici...") (Afficher liste_nombres) # Tirage de dés # Programme tirage (!!! "Algo dés") (Initialiser@ 0) (Declarer i De_type "nombre") (Affecter_a i 1) (Tant_que (<= i 60) Faire (Afficher (Entier@ 1 6)) (Affecter_a i (+ i 1)) ) (!!! "Fin algo dés") # L’algorithme précédent affiche 60 entiers tirés au sort entre # 1 et 6 compris (comme un dé à 6 faces). On veut compter le nombre # de tirages de chaque face, mais plutôt que d’utiliser six compteurs, # on va utiliser une liste de six entiers valant tous 0 au départ de l’algo. # Modifiez cet algorithme pour qu’il affiche la liste contenant les compteurs # à l’issue du tirage des 60 dés. # Indice : utiliser (Affecter_a compteurs (Liste 0 0 0 0 0 0)). # Vous pouvez maintenant passer à listes_2 cette page.