Documente Academic
Documente Profesional
Documente Cultură
AVANCE LANGAGE C
TCSRIT LICENCE 1
KONAN HYACINTHE
rfrence: type dont le domaine de dfinition est l'ensemble des adresses mmoire.
-Valeur de lattribut tte(attribut curseur) : adresse de la case mmoire o est stocke la cellule
de tte de liste (cellule courante)
-Reprsentation graphique : une flche
dbut
saisir(uneVal) ; cpt0
tant que uneValvalStop faire
cptcpt + 1
insrerAprs(cible ; uneVal)
saisir(uneVal)
ftq
premier(cible){replace le curseur en tte}
afficher(La nouvelle liste contient , cpt, cellules.)
fin
Saisie d'une liste : simulation
Procdure afficherListe(cible : Liste)
{Affiche toutes les valeurs contenues dans la liste cible.}
paramtre(D) cible : Liste
variable copieCible : Liste
dbut
copieCible cible{copie de la cible, pour permettre modification du curseur}
premier(copieCible){place le curseur en tte}
tant que non horsListe(copieCible) faire
{arrt quand curseur hors liste}
afficher(info(copieCible)){rcupre la valeur de la cellule courante et l'affiche}
copieCible.suivant() {place le curseur sur la cellule suivante}
ftq
fin
Exemple dalgorithme
Algorithme ManipListes1
{Saisie et affichage dune liste.}
constante (VALSTOP : entier) 0
variable listeA: Liste
dbut
saisirListe(listeA)
afficher("Liste saisie : ")
afficher(listeA)
fin
Exemple de fonction utilisant la liste.
Fonction valMin(uneListe) retourne rel
{retourne la plus petite valeur contenue dans une liste de relssuppose non vide}
Paramtre
(D) uneListe : ListeRel
Fonction inverse(uneListe) retourne Liste
{cre une nouvelle liste, en y affectant les valeurs de la listeuneListemais dans l'ordre inverse. La
liste uneListeest suppose non vide}
Paramtre
(D) uneListe : Liste
Procdure supprimerGlobal(uneVal, uneListe)
{supprime toutes les cellules de la liste uneListequi contiennent la valeur uneVal. Replace le
curseur en tte.}
Paramtre
(D/R) uneListe: Liste
(D) uneVal: Info
Algorithme ManipListes2
{Exemple dalgorithme manipulant les listes.}
constante (VALSTOP : entier) 0
variables listeA, listeB, listeC : Liste
dbut
saisir(listeA)
afficher("listeA: ")
afficher(listeA)
si nonlisteA.vide() alors
listeB inverse(listeA)
afficher("listeBcontient les lments de lalisteAen ordreinverse : ")
afficher(listeB)
supprimerGlobal(0,listeA)
afficher("ListeA sans zros: ")
afficher(listeA)
afficher("Plus petite valeur delisteA:" , valMin(listeA) )
fsi
fin
2.4 Files et Piles
Dans beaucoup d'applications, on peut se contenter de modes d'accs trs restreints la structure
de donnes.
Avantages:
le programme n'a pas se proccuper de dtails de gestion (des rfrences, par exemple)
traitements plus simples et moins rigides (moins d'oprations)
2.4.1 Reprsentation d'une file par une liste chane
10
11
procdure ajouterEnFin(val)
{Cre une nouvelle cellule, y affecte la valeur val, et l'insre aprs la dernire cellule.
Si file tait vide, elle contient maintenant lunique cellule qui vient d'tre cre.}
Paramtre
(D/R) cible : File ; (D) val : Info
fonction supprimerEnTte() retourne Info
{Supprime la premire cellule de la file et retourne la valeur quelle contient. Si la file ne
contenant qu'une seule cellule, la file devient vide. Erreur si la file est vide.}
Paramtre
(D/R) cible : File
Procdure saisirFile(cible : File)
{Saisit des valeurs (de type Info), jusqu' une valeur d'arrt (constante dfinie dans l'algorithme
appelant), et cre au fur et mesure autant de cellules que ncessaire, en y affectant les valeurs
saisies.}
paramtre
(R) cible : File
variables uneVal : Info, cpt : entier
dbut
saisir(uneVal) ; cpt0
tant que uneValVALSTOP faire
cptcpt + 1
ajouterEnFin(cible ; uneVal)
saisir(uneVal)
ftq
afficher("La nouvelle file contient", cpt, "cellules. ")
fin
Procdure afficherFile(cible : File)
{Affiche toutes les valeurs contenues dans la file cible.}
paramtre(D) cible : File
variablesuneVal: Info
copieCible : File
dbut
copieCible cible
tant que non vide(copieCible) faire
uneVal supprimerEnTte(copieCible)
afficher(uneVal)
ftq
fin
12
13
Procdure saisirPile()
{Saisit des valeurs (de type Info), jusqu' une valeur d'arrt (constante dfinie dans l'algorithme
appelant), et cre au fur et mesure autant de cellules que ncessaire, en y affectant les valeurs
saisies}
Paramtre
(R) cible : Pile
Variables uneVal: Info
cpt : entier
dbut
saisir(uneVal) ; cpt0
tant que uneValVALSTOP faire
cptcpt + 1
empiler(cible; uneVal)
saisir(uneVal)
ftq
afficher("La nouvelle pile contient", cpt, "cellules.")
fin
Procdure afficherPile(cible : Pile)
{Affiche toutes les valeurs contenues dans la pile cible.}
Paramtre
(D) cible : Pile
variables
uneVal : Info
copieCible : Pile
dbut
copieCible cible
tant que non vide(copieCible) faire
uneVal dpiler(copieCible)
afficher(uneVal)
ftq
fin
14