Added doc to primitives
This commit is contained in:
parent
c5aa56d9b6
commit
a747ac3ebb
1 changed files with 41 additions and 8 deletions
|
@ -52,39 +52,74 @@ def retirer_debut_file(file):
|
||||||
free(mail)
|
free(mail)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Les files
|
||||||
|
## Primitives
|
||||||
### Définition (tableaux)
|
### Définition (tableaux)
|
||||||
|
La structure de données utilisée sera la suivante :
|
||||||
```
|
```
|
||||||
File struct (
|
File struct (
|
||||||
deb : int
|
deb : int
|
||||||
fin : int
|
fin : int
|
||||||
tab : tableau de X)
|
tab : tableau de X)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Et on implémentera les primitives comme suit :
|
||||||
|
Les indices du tableau bouclent, de sorte que lorsqu'on atteint la fin théorique du tableau, si on a déjà retiré des éléments au début on peut encore en ajouter, et ceux-ci seront ajoutés au début du tableau.
|
||||||
|
Ainsi, la file n'est pleine que lorsque l'indice de fin est juste avant l'indice de début, modulo la taille du tableau.
|
||||||
```python
|
```python
|
||||||
# On considèrera que la constante MAX est définie et correspond à la taille maximale possible d'un tableau
|
# On considèrera que la constante MAX est définie
|
||||||
|
# et correspond à la taille maximale possible d'un tableau
|
||||||
|
|
||||||
def creer_file():
|
def creer_file():
|
||||||
file = File(deb=-1, fin=-1, tab=numpy.empty(MAX))
|
"""
|
||||||
# Checker syntaxe, il manque un paramètre
|
On crée la file en définissant les indices de début à -1
|
||||||
|
et en créant un tableau vide de taille MAX.
|
||||||
|
"""
|
||||||
|
file = File(deb=-1, fin=-1, tab=numpy.empty(MAX, object))
|
||||||
return file
|
return file
|
||||||
|
|
||||||
def file_vide(file):
|
def file_vide(file):
|
||||||
|
"""
|
||||||
|
La file est vide si les deux indices sont à -1.
|
||||||
|
On s'arrangera pour les remettre à -1 si la file devait se vider.
|
||||||
|
"""
|
||||||
return file.deb == -1
|
return file.deb == -1
|
||||||
|
|
||||||
def file_pleine(file):
|
def file_pleine(file):
|
||||||
|
"""
|
||||||
|
La file est pleine si les indices sont consécutifs
|
||||||
|
à la taille du tableau près :
|
||||||
|
si en ajoutant 1 à l'indice de fin on obtient l'indice de début,
|
||||||
|
la file est pleine.
|
||||||
|
"""
|
||||||
return (file.fin + 1) % MAX == file.deb
|
return (file.fin + 1) % MAX == file.deb
|
||||||
|
|
||||||
def ajout_fin_file(file, elt):
|
def ajout_fin_file(file, elt):
|
||||||
|
"""
|
||||||
|
Si la file est vide, on pense à décaler l'indice de début.
|
||||||
|
Puis on décale dans tous les cas l'indice de fin
|
||||||
|
et on ajoute notre élément.
|
||||||
|
"""
|
||||||
if file.deb == -1:
|
if file.deb == -1:
|
||||||
file.deb += 1
|
file.deb += 1
|
||||||
file.tab[file.deb] = elt
|
|
||||||
else:
|
|
||||||
file.tab[file.fin + 1] = elt
|
|
||||||
file.fin += 1
|
file.fin += 1
|
||||||
|
file.fin %= MAX
|
||||||
|
file.tab[file.fin] = elt
|
||||||
|
|
||||||
def debut_file(file):
|
def debut_file(file):
|
||||||
|
"""
|
||||||
|
On retourne simplement la valeur contenue dans la case de début.
|
||||||
|
"""
|
||||||
return file.tab[file.deb]
|
return file.tab[file.deb]
|
||||||
|
|
||||||
def retirer_debut_file(file):
|
def retirer_debut_file(file):
|
||||||
|
"""
|
||||||
|
Si les deux indices sont égaux, ça signifie que la file
|
||||||
|
ne contient qu'un seul élément. En en retirant un, la file devient vide.
|
||||||
|
On met donc à -1 les indices pour nous permettre de le reconnaître.
|
||||||
|
Sinon on incrémente simplement l'indice de début,
|
||||||
|
à la taille du tableau près.
|
||||||
|
"""
|
||||||
if file.deb == file.fin:
|
if file.deb == file.fin:
|
||||||
file.deb = -1
|
file.deb = -1
|
||||||
file.fin = -1
|
file.fin = -1
|
||||||
|
@ -93,8 +128,6 @@ def retirer_debut_file(file):
|
||||||
file.deb %= MAX
|
file.deb %= MAX
|
||||||
```
|
```
|
||||||
|
|
||||||
`TODO : Implémenter ça pour le 1/02`
|
|
||||||
|
|
||||||
## Exercices
|
## Exercices
|
||||||
### Exercice 1
|
### Exercice 1
|
||||||
Écrire un algo qui affiche les éléments d'une file en la conservant.
|
Écrire un algo qui affiche les éléments d'une file en la conservant.
|
||||||
|
|
Loading…
Reference in a new issue