"LES TABLEAUX"
A quoi ca sert?
Les tableaux servent � faire des calculs math�matiques (les simplifier), de la gestion de donn�es, aux indirections (les pointeurs en langage C), et sont aussi au coeur du principe du ruban Turing (qui les utilisent pleinement).
Et en bash?
Les tableaux en BASH, Bourne n'y avait pas vraiment penser. Ce sont les cr�ateurs du C-Shell qui ont am�lior� le syst�me.
Comment y mettre des variables? (telle que a=1 par exemple).
Rien de plus simple. On cr� un tableau dans lequel on place de valeurs. Imagions que bob[0] soit la premi�re case du tableau.
On pourrait alors avoir quelque chose du type :
bob[0]=B
bob[1]=X
bob[2]=3
bob[3]=4
bob[4]=C
Nous voici donc avec notre tableau � cinq cases.
Mais comment avoir acc�s aux valeurs de chaque case ? On �ffectue simplement un '�cho $(case voulue)'. Par exemple :
�cho ${bob[0]}=B
�cho ${bob[$a]}=X (car a=1 et bob[1]=X).
Exemples :
1�: Calculer la factorielle.
On veut calculer fact[5] et que la valeur du r�sultat soit mise dans la case 5.
En Shell on � alors le programme suivant :
n=$1
i=1
tab[1]=1
while test $n -gt $i
do
j=`expr
$i +1'
k=${tab[$i]}
echo $k
tab[$j]=`expr$j\*$k'
i=$j
done
echo ${tab[$
i]}
Essayez donc de faire tourner ce programme en Shell au Bocal (Vous pouvez d'abord essayer � la main !!) car il est simple. Vous verrez alors que le r�sultat afficher dans la case 5 et bien la valeur 120.
2�: Le tri par bulles.
Le probl�me est de savoir comment ranger des nombres par ordres croissant � l'aide d'un tableau.
Le principe est simple. Il suffit de consid�rer les nombres comme des bulles ,et
utiliser ce principe pour cr�er un programme en Shell capable de trier des nombres par ordre croissant.
Soit en Shell le programme suivant :
n=6
i=
1
while[$i
-le $n]
do
tab[$i]=`expr $n-$i'
i=`expr $i+1'
done
i=1
while [$i-le $n]
do
echo $(tab[$i])
i= `expr $i+1'
done
nb=1
while [$nb -le
$n]
do
i=1
while [$i -le $n]
do
j=`expr $i+1'
if [$(tab[$i])-gt(tab[$j])
then
tmp=$(tab[$i])
tab[$i]=$tab(tab[$j])
tab[$j]=$tmp
fi
done
nb=`expr $nb+1'
done
Le programme tourne jusqu'� la condition d'arr�t. Cela affichera dans l'ordre :
tab[1]=0
tab[2]=1
tab[
3]=2
tab[4]=3
tab[5]=4
tab[6]=5
Il ne faut pas oublier que l'�tat initial �tait
tab[1]=5
tab[2]=4
tab[3]=3
tab[4]=2
tab[5]=1
tab[6
]=0
Le programme permet de comparer a chaque fois les nombres et
de faire remonter le plus grand.
Comme pour le programme des factorielles, essayez de le faire tourner au Bocal...�a marche plut�t bien.
Pr�c�dent : Prolog.
Suite : Smalltalk.
Retour � la page principale.