NEO ::: TEAM
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

NEO ::: TEAM

New Evolution Owner
 
AccueilRechercherDernières imagesS'enregistrerConnexion
-23%
Le deal à ne pas rater :
(Adhérents Fnac) Kit de démarrage 3 ampoules connectées Philips ...
99.99 € 129.99 €
Voir le deal

 

 Structures conditionelles / Boucles

Aller en bas 
2 participants
AuteurMessage
hou$$am
Fondateur
Fondateur
hou$$am


Nombre de messages : 386
Localisation : Tlemcen-Algeria
Date d'inscription : 04/01/2007

Structures conditionelles / Boucles Empty
MessageSujet: Structures conditionelles / Boucles   Structures conditionelles / Boucles Icon_minitimeJeu 4 Jan - 10:02

Les structures de boucle



Notre exemple avance. Maintenant, si nous désirons construire une phrase non plus avec trois mots, mais avec cinq, nous n'allons tout de même pas répéter notre code cinq fois !!!

Pour celà, il suffit d'utiliser une des structures de boucle. Il en existe trois : le For ... to ... do ... (pour <valeur initiale> jusqu'à <valeur finale> faire <ceci>, le while (tant que <condition>) et le repeat ... until (répète <çeci> jusqu'à <condition>).

Le For et le while sont utilisés quand on connait à l'avance le nombre de fois la boucle doit être exécutée. Dans le repeat ... until la condition de fin de boucle est à la fin, et on l'utilise quand la boucle doit au moins être parcourue une fois.

Notre exemple avec un For :

Program MonDeuxiemeProg;

function ConstruitPhrase(phrase:string):string;
var s : string;
begin
readln(s);
ConstruitPhrase:=phrase+', '+s;
end;

var
Phrase : string;
i : integer;
begin
Phrase:=''; {initialiser à chaine vide}

for i:=1 to 3 do begin
writeln('Entrez un mot :');
Phrase:=ConstruitPhrase(Phrase);
end;
{afficher le résultat}
writeln('La phrase complète est :');
writeln(Phrase);

writeln('Appuyer sur <entrée> pour quitter');
readln;
end.


Tout ce qui est entre le begin et le end du For est exécuté en boucle. N'oubliez pas la déclaration de notre nouvelle variable i.

Avec un while :

[...]
i:=1; {initialiser i}
while i<>3 do begin
writeln('Entrez un mot :');
Phrase:=ConstruitPhrase(Phrase);
inc(i); {incrémente i à chaque tour}
end;

{afficher le résultat}
[...]
end.


ATTENTION : Dans ce cas vous voyez que vous êtes vous-même obligé d'incrémenter votre compteur i. Ne pas oublier d'initialiser votre variable ni de l'incrémenter sinon votre programme tournera indéfiniment.

Avec un repeat

[...]
i:=1; {initialiser i}
repeat
writeln('Entrez un mot :');
Phrase:=ConstruitPhrase(Phrase);
inc(i); {incrémente i à chaque tour}
until i>3;

{afficher le résultat}
[...]
end.


On voit bien que dans ce cas, le plus efficace est le For. Mais alors, pourquoi utiliser un while ? Et bien parce que on ne peut mettre dans une boucle For qu'un compteur. Dans un while ou un repeat, la condition pourrait être quelque chose de plus complexe, comme par exemple :

while length(phrase) <= 100; {execute la boucle tant que la longueur de la variable phrase }
{ne dépasse pas 100 caractères}

ou encore :

until length(phrase) > 100; {termine la boucle si la longueur de la variable phrase }
{dépasse 100 caractères}

Si on change les règles du jeux, et que l'on veut demander à l'utilisateur quand il désire s'arrêter, on pourrait utiliser un repeat :

[...]
var
Phrase : string;
reponse : char; {contiendra un caractère}
begin
Phrase:=''; {initialiser à chaine vide}
repeat
writeln('Entrez un mot :');
Phrase:=ConstruitPhrase(Phrase);
writeln('Voulez-vous continuer ? (entrez o pour continuer) ');
readln(reponse);
until Upcase(reponse)<>'O'; {différent de o ou O}

{afficher le résultat}
[...]
end.




Structures de test



Alors, reste un petit problème que vous aurez forcément remarqué : notre phrase commence toujours par une virgule !

Pour corriger ça, il suffit simplement de n'ajouter la virgule que si la chaine n'est pas vide. c'est là toute l'utilité des tests


[...]
function ConstruitPhrase(phrase:string):string;
var s : string;
begin
readln(s);
if phrase = '' then
ConstruitPhrase:=s
else
ConstruitPhrase:=phrase+', '+s;
end;
[...]

Ce qui se traduit en gros par :

Si phrase est vide alors
mettre s dans phrase
sinon
ajouter s à phrase et mettre le tout sans phrase

Remarquez qu'il n'y a pas de point-virgule après la ligne phrase:=phrase+s. En effet, l'instruction du If ne se termine qu'après le else.

On peut aussi utiliser un if sans else :


[...]
function ConstruitPhrase(phrase:string):string;
var s : string;
begin
readln(s);
if phrase <> '' then
phrase:=phrase+', ';
ConstruitPhrase:=Phrase+s;;
end;
[...]
Revenir en haut Aller en bas
Admin
Fondateur
Fondateur
Admin


Nombre de messages : 197
Age : 40
Localisation : Tlemcen ( Algérie )
Date d'inscription : 04/12/2006

Structures conditionelles / Boucles Empty
MessageSujet: Re: Structures conditionelles / Boucles   Structures conditionelles / Boucles Icon_minitimeJeu 4 Jan - 16:24

hay hay it goooooooooooooooodddddddddd
Revenir en haut Aller en bas
https://neo-team.forumactif.com
 
Structures conditionelles / Boucles
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Structures conditionelles
» V : Structures alternatives
» chapitre 3. /Initialisation des structures et des tableaux

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
NEO ::: TEAM :: Informatique :: Languages de programmation :: Turbo Pascal-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser