Boucle while, expressions booléennes (Algorithmes élémentaires)

For ou while ?

Un for peut toujours être simulé par un while et le code machine sera identique. Il suffit d’introduire un compteur de boucle (la variable de boucle du for).
Par convention, les programmeurs préfèrent utiliser un for lorsque le nombre d’itérations est connu à l’avance. Par exemple, pour faire la somme des éléments d’un tableau. Dans le cas contraire, les programmeurs utilisent un while. Par exemple, pour chercher un élément dans un tableau.
Maintenant que nous avons le while, il est possible qu’un programme ne termine jamais (Ctrl-C).

Expressions booléennes

Les conditions employées dans les structures de contrôle (if, for ou while) sont des expressions booléennes, pouvant être Vrai, Faux ou :
des inégalités entre expressions arithmétiques inégalité := e1 < e2 j e1 > e2 j e1 != e2
j e1 <= e2 j e1 >= e2 j e1 == e2
ou des combinaisons logiques d’expressions booléennes : condition := (condition) && (condition) (et)
j (condition) || (condition) (ou)
j !(condition) (non)
j Vrai j Faux j inégalité (cas de base)

Constantes booléennes

Certains langages possédent un type booléen (admettant deux valeurs true et false) pour les expressions booléennes.
En langage C, les expressions booléennes sont de type entier (int), l’entier zéro joue le rôle du Faux, l’entier un joue le rôle du Vrai et tout entier différent de zéro est évalué a vrai.
On se donne deux constantes symboliques :
/* Declaration des constantes et types utilisateur */
# define TRUE 1
# define FALSE 0
int main ()
{
int continuer = TRUE ; /* faut -il continuer ?*/
while ( continuer )
{

Algorithmes : quels outils pour quels problèmes
1. Traiter des cas spécifiques
if else (différencier)
#define constantes symboliques (nommer)
arbre de décision (organiser)
2. Parcourir/générer des cas
boucle for (rarement while)
tableaux
3. Composer des cas
boucles (parcourir/générer)
accumulateur (à initialiser)
3’. Dénombrer des cas
boucles (parcourir/générer)
4. Sélectionner des cas
boucles (parcourir/générer)
if (sélectionner/traiter)
5. Rechercher un cas
boucle while, conditions booléennes, if
2’. Parcourir/générer : une ligne mais aussi une surface, un volume…
imbriquer les boucles (var. 6=)
6. Boucle événementielle
boucle while
7. Attente active
boucle while
Recherche d’un diviseur (test de primalité)

Exemple

Le programme cherche un entier supérieur à 1 qui divise n, s’il n’en trouve pas de plus petit que n, alors n est premier (ou bien n = 1).
31 /* test de primalite */
32 d = 2;
33 while ( premier && (d < n) ) /* sans diviseur < d */
34 {
35 if (n % d == 0) /* d divise n */
36 {
37 printf ( » divisible par %d\n », d);
38 premier = FALSE ;
39 }
40 d = d + 1; /* candidat diviseur suivant */
41 }
42
43 if ( premier )
44 {
45 printf (« %d est premier \n », n);
46 }
47 else
48 {

Boucle principale en programmation événementielle

Le programme lit les événements (les actions de l’utilisateur) et les traite, continuellement, dans une boucle.
Remarque
scanf est un appel système bloquant (processus en attente).
Exemple
Jeu de calcul mental (additionner deux nombres au hasard)
16 int continuer = TRUE ; /* TRUE s’il faut continuer a jouer */
31 while ( continuer ) /* le joueur veut faire un nouvel essai */
32 {
53 printf ( » Continuer (1) ou arreter (0) ?\n »);
54 scanf (« %d », & choix );
55 if ( choix == 0)
56 {
57 continuer = FALSE ;
58 }
59 }

Semestre
L’instruction de contrôle while
Syntaxe
Trace
For ou while ?
Expressions booléennes
Syntaxe
Constantes
Algorithmique élémentaire
Recherche d’un diviseur (test de primalité)
Boucle événementielle
Attente active
Démos
Premier partiel

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *