Flux rss
Collection CommentÇaMarche.net
Caractéristiques

Structures conditionnelles du langage Pascal

 
Bookmark Ajouter aux favoris / Partager

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 cela, 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 <ceci> jusqu'à <condition>).

Le For et le while sont utilisés quand on connaît à l'avance le nombre de fois que 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 à chaîne 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 qu'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; {
	exécute 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 jeu, 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 à chaîne 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 chaîne 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;
[...]

Article écrit par Thierry Cornu



Dernière modification le mardi 14 octobre 2008 à 17:40:36.Ce document intitulé « Structures conditionnelles du langage Pascal » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Langage C - Les structures conditionnelles Qu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent... www.commentcamarche.net/contents/c/ccond.php3
Langage C++ - Les structures conditionnelles Qu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent... www.commentcamarche.net/contents/cpp/cppcond.php3
Les bases du langage Pascal De la structure du langage et des principaux mots-clés Tout d'abord, nous sommes d'accord : notre but est d'écrire un programme; quand notre programme sera suffisamment élaboré, on pourra appeler ça une application (ça fait pro). Tous nos... www.commentcamarche.net/contents/pascal/pascstruct.php3
[Programmation] Comment débuter, quel langage?Comment débuter, quel langage? Introduction Ceux que l'on peut utiliser Delphi/Pascal Java Python .Net Smalltalk Ceux que l'on peut utiliser à la rigueur C/C++ PHP Ada Lisp/Caml/... Ceux que l'on peut ne pas utiliser www.commentcamarche.net/faq/sujet-457-programmation-comment-debuter-quel-langage
Ajouter la langue arabe au clavier français sous WindowsPour ajouter le clavier en arabe sous Windows XP il suffit d'aller dans : Démarrer -> Panneau de configuration -> Options régionales et linguistiques Dans l'onglet "Langue" (ou Clavier et langues), cocher la case "Installer les fichiers pour les... www.commentcamarche.net/faq/sujet-6619-ajouter-la-langue-arabe-au-clavier-francais-sous-windows
[PHP] Rediriger en fonction de la langue du visiteurBeaucoup de sites demandent à ce que l'on choisisse la langue en cliquant sur une icône correspondant au pays. Il est possible de détecter la langue par défaut du visiteur grâce aux informations fournies par son navigateur (langues acceptées :... www.commentcamarche.net/faq/sujet-876-php-rediriger-en-fonction-de-la-langue-du-visiteur
Turbo Pascal : exercices et corrigésBonjour, je cherche un cours en turbo pascal et des exercices corrigés sur les structures de contrôles itératives!!!!! Merci www.commentcamarche.net/forum/affich-11860364-turbo-pascal-exercices-et-corriges
Exercice pascal (Résolu)Bonjour, j'ai un exercice en langage pascal qui permet d'ajouter des articles et les affichees puis il fait la trie de ces articles selon leurs quantites de stoskes mais le probleme que la trie ne marche pas correctement alors si pouver m'aidee... www.commentcamarche.net/forum/affich-4038892-exercice-pascal
Support de cours en Turbo Pascal (Résolu)Bonjour, Je suis à la recherche des supports de cours en Turbo Pascal. Merci d'avance pour votre prompte réponse. Cordialement, www.commentcamarche.net/forum/affich-2075077-support-de-cours-en-turbo-pascal
Télécharger LangOverNe vous est-il jamais arrivé de saisir un texte dans une langue donnée et que le résultat soit différent. C'est énervant quand on ne sait pas d'où ça vient et comment le résoudre. Une des causes principales de ce bug est le clavier qui est mal... www.commentcamarche.net/telecharger/telecharger-34056564-langover
PHP - Structures conditionnellesQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1... www.commentcamarche.net/contents/php/phpcond.php3
Perl - Les structures conditionnellesQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent... www.commentcamarche.net/contents/perl/perlcond.php3
Java: Les structures conditionnellesQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent... www.commentcamarche.net/contents/java/javacond.php3