[C] Les boucles et conditions


Par maxrider Imprimer le tutorial Voir son profil

Introduction


Le deuxième tutorial en C est enfin là !! Ce tutorial va vous faire découvrir les différentes boucles et conditions qui existent en C. Pour celà, je m'appuierais sur un algorithme de tri simple.

Cadre


Il existe une multitude de technique de tri : tri à bulle, quick sort, tri par sélection, tri par insertion, tri par dichotomie...
voir http://fr.wikipedia.org/wiki/Algorithme_de_tri
Ici, je vais m'intéresser à un tri simple, i.e. un tri par sélection.
voir http://fr.wikipedia.org/wiki/Tri_par_s%C3%A9lection
Pour information, je ne reprend pas l'algorithme donné dans wikipedia.

Description de l'alogrithme de tri sélectif


Nous disposons d'un tableau de 6 entiers. Pourquoi 6 ? Hummm pourquoi pas ! biggrin.gif
Ce tableau contient des valeurs quelconques.
Nous voulons les ordonnées de manière croissante, nous allons donc faire un tri.
Comment ?
Premièrement, il nous faut une valeur référence du minimum, généralement la première valeur du tableau.
On parcour ensuite le tableau à la recherche d'une valeur plus petite. Si une valeur est plus petite, nous la mettons dans la première case du tableau et cette valeur est prise comme nouveau minimum.
L'ancienne valeur du minimum est mise à la place de la valeur du nouveau minimum dans le tableau.
Nous recommencons le parcour du tableau à la recherche d'une valeur plus petite. Si oui..
Etc... jusqu'à la fin du tri

L'alogrithme en C


Note: un tableau va de 0 à MAX -1. Ici de 0 à 5

#include <stdio.h>
int main(void)
{
// Déclaration du tableau
int tab[6];
// Déclaration du minimum
int min;

//variable temporaire
int temp;

//indice de boucle
int i,j;

//initialisation manuelle
tab[0]=5;
tab[1]=14;
tab[2]=8;
tab[3]=2;
tab[4]=6;
tab[5]=4;

//init du minimum
min=tab[0];
// Recherche
for(i=0; i < 6; i++)
{
j=i+1;
while( j != 6)
{
if(tab[j] < min)
{
temp=tab[i];
// Nouveau minimum
min=tab[j];
// mise ds la premiere case
tab[i]=tab[j];
// ex minimum dans la case de la nouvelle
tab[j]=temp;
}
j++;
}
}

// Affichage du résultat
for(i=0; i <6; i++)
{
printf("tab[%i] = %in",i,tab[i]);
}
}


Décryptage


Je ne reviens pas sur la déclaration des librairies vu dans le premier tuto.
Regardons plutot les boucles for et while

for
On définit une boucle for en initialisant la varialbe de boucle i = 0 ici
Ensuite, on définit la borne de la boucle, ie la ou elle doit s'arreter, i < 6 ici
Enfin, on donne de quel maniére est incrémenté la variéalbe de boucle, i++ ici, ie i = i +1

while
la boucle while contient la condition d'arret seulement, ici la boucle s'arrete lorsque j atteint 6.
On notera qu'il est nécessaire d'indrémenter la variable j dans la boucle. Si vous oubliez cela, la boucle tourne en boucle (aucun jeux de mot biggrin.gif)

if
if permet de définir un test, ici si la valeur du tableau est inférieur à notre minimum.
Il est aussi possible de définir supérieur ( > ), supérieur égale ( >= ), inférieur égale (<=), différent ( != ) et égale ( == ).
Il est important de noter que pour égale il faut mettre == et pas =.
= correspond à l'affectation d'une variable.


Conclusion


Pour ceux qui se demandent "comment il fait pour afficher les valeurs du tableau ?". Je leur donne rendez-vous dans le prochain tutorial ou je présenterais les différentes variables proposées en C et comment les affichées.
De plus, pour les opérateurs d'opération je ne donne pas de tutorial donc je les donne ici briévement ( +, * , / et -) pas compliqué ! Il existe aussi la possibilité de récupérer le reste d'une division pour cela il faut employer le modulo ( % ). Je vous invite à tester 4%3. Normalement cela donne 1 biggrin.gif

Le quatrième tutorial sera consacré aux opérateurs logiques "et ou non"
Le cinquième tutorial rentrera enfin dans le vif du sujet en abordant les fameux pointeurs. Une breve explication sur l'architecture de la mémoire d'un programme sera donnée pour mieux comprendre l'intrêt de ces derniers.

Sinon des questions sur ce tutorial ? Dirigez vous vers le forum, je vous attends !


Aucun commentaire(s)

Pas de commentaire pour ce tutorial.

Ajouter un commentaire

Vous devez vous être connecté pour poster des commentaires