begin process at 2008 07 20 04:35:11
1 213 129 membres
50 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[BASES] BOOLÉENS, TABLE DE VERITÉS, SYNTAXE DELPHI


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 22/02/2006 14:40:11 Vu : 5 277 fois

Note :
9,4 / 10 - par 5 personnes
9,40 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Voici un petit memo sur les booléens dans delphi.

Tutorial

Sommaire

    Valeurs des booléens
    Tables de vérité des operateurs booléen
    Operateurs relationnel et d'ensemble
    Exemple d'opérations complexe et tables de vérité
    Exemple d'écriture de code grâce aux operateurs booléen
    Ecriture des booléens dans les conditions

 

Valeurs des booléens


Les booléens on par défaut des valeurs binaire pour définir leurs états (0 ou 1).
Dans de nombreux langages, ces valeurs sont remplacées par des mots  plus "parlant", c'est à dire faux (0) ou vrai (1) (false,true).

Un booléen ne peu avoir que deux états unique donc, vrai ou faux. Ils sont comparables a une lampe qui serait soit allumée, soit éteinte mais ne peut être dans les deux états a la fois. Il faut comprendre par la  que le booléen ne peut pas être "presque" vrai ou "presque" faux, il est soit l'un, soit l'autre...


Tables de vérité des operateurs booléens


NOT (non)

       R = 1 (true) si l'expression est fausse.

       Syntaxe Delphi : NOT A

       A      R
       0      1
       1      0
 

AND (et)                   

       R = 1 (true) si toutes les expressions sont vraies.

       syntax Delphi : (A AND B)

       A      B      R
       0      0      0
       1      0      0
       0      1      0
       1      1      1
 

NOT AND (non-et)

       R = 1 (true) si l'une ou toutes les expressions sont fausse.

       syntax Delphi : NOT (A AND B)

       A      B      R
       0      0      1
       1      0      1
       0      1      1
       1      1      0


OR (ou)

       R = 1 (true) si l'une ou toutes les expressions sont vraie.

       syntax Delphi : (A OR B)

       A      B      R
       0      0      0
       1      0      1
       0      1      1
       1      1      1
 

NOT OR (non-ou)

       R = 1 (true) si toutes les expressions sont fausses.

       syntax Delphi : NOT (A OR B)

       A      B      R
       0      0      1
       1      0      0
       0      1      0
       1      1      0


XOR (ou exclusif)

       R = 1 (true) exclusivement si une seule expression est vraie

       syntax Delphi : (A XOR B)

       A      B      R
       0      0      0
       1      0      1
       0      1      1
       1      1      0


NOT XOR (non-ou exclusif)

       R = 1 (true) exclusivement si une toutes les expressions sont vraie ou fausse

       syntax Delphi : NOT (A XOR B)

       A      B      R
       0      0      1
       1      0      0
       0      1      0
       1      1      1

Operateurs relationnel et d'ensemble

    >      supérieur a
    <      inferieur a
    >=     supérieur ou égale a   //   est un sous-ensemble de
    <=     inferieur ou égale a   //   est un sous-ensemble de
    <>     différent de              
    =      égale a                  
    IN     est dans l'ensemble


Exemple d'opérations complexe et tables de vérité

R := (A AND B) OR (C AND D);

       R = 1 (true) si l'expression AB ou l'expression CD est vraie.

       A      B      C      D      R
       0      0      0      0      0
       0      0      0      1      0
       0      0      1      0      0
       0      0      1      1      1 (par CD)
       0      1      0      0      0
       0      1      0      1      0
       0      1      1      0      0
       0      1      1      1      1 (par CD)
       1      0      0      0      0
       1      0      0      1      0
       1      0      1      0      0
       1      0      1      1      1 (par CD)
       1      1      0      0      1 (par AB)
       1      1      0      1      1 (par AB)
       1      1      1      0      1 (par AB)
       1      1      1      1      1 (par AB ou CD)
                          

R := (A AND B) OR (NOT(C AND D));

       R = 1 (true) si l'expression AB est vrai ou si l'expression CD est fausse

       A      B      C      D      R
       0      0      0      0      1 (par CD)
       0      0      0      1      1 (par CD)
       0      0      1      0      1 (par CD)
       0      0      1      1      0
       0      1      0      0      1 (par CD)
       0      1      0      1      1 (par CD)
       0      1      1      0      1 (par CD)
       0      1      1      1      0
       1      0      0      0      1 (par CD)
       1      0      0      1      1 (par CD)
       1      0      1      0      1 (par CD)
       1      0      1      1      0
       1      1      0      0      1 (par AB ou CD)
       1      1      0      1      1 (par AB ou CD)
       1      1      1      0      1 (par AB ou CD)
       1      1      1      1      1 (par AB)                          


Exemple d'écriture de code grâce aux operateurs booléen

Cette fonction renvois true si V est supérieur ou égale à VMin ET inferieur ou égale à VMax

       function InRange(const V, VMin, VMax :integer) : boolean;
       begin
        result := (V >= VMin) and (V <= VMax);
       end;
 
cette fonction renvois true si V est inferieur a VMin OU superieur a VMax

       function OutRange(const V, VMin, VMax : integer) : boolean;
       begin
         result := (V < VMin) or (V > VMax);
       end;

 
Grace  a cela on peut également remplacer beaucoup de condition IF, Case Of, et de gagner beaucoup de temps, exemple :


Exemple 1 :

       if X = 2 then R := true else R := false;

       on remplacera par :

       R := X = 2;

Exemple 2 :

       Case X of
          0,1,4,5 : R := false;
          2,3,6   : R := true;
       End;

       on remplacera par :

       R := (X = 2) OR (X = 3) OR (X = 6);

       our encore (pour les trés longues méthodes case ou if), on peu utiliser les ensembles :

       R := X IN [2,3,6];


Attention toute fois, les ensemble [a,b,c,d] ne supportent que les types scalaires.


Ecriture des booléens dans les conditions

Beaucoup font l'erreur d'ecrire leur conditions If, While, Repeat de cette manière :

  if booleen = true then
  while booleen = true then
  repeat ... until booleen = true;

voici donc la bonne méthode :

  if booleen then ... (la condition s'execute seulement si le booléen est égale à true)
  if not booleen then ... (la condition s'execute seulement si le booléen est égale à false)

exemple d'application de cette façon d'écrire :

  if checkbox1.checked then label1.caption := 'l''option est cochée';
  if not checkbox1.checked then label1.caption := 'l''option n'est pas cochée';
  if (checkbox1.checked) and (checkbox2.checked) then label1.caption := 'l''option 1 et 2 sont cochées';

on peu également faire :


const

BTC : array[boolean] of string = ('L''option est cochée','L''option n''est pas cochée') ;

Begin

label1.caption := BTC[checkbox1.checked];

end;

22 février 2006 14:44:32 :
au developeur du site > Merci de debuger ce pu**in d'editeur, de lacher ASP et de faire du PHP comme tout le monde ;p
28 février 2006 20:35:23 :
ajout d'un chapitre
13 mars 2006 09:07:06 :
correction de l'erreur d'operande (And pour Or) dans l'exemple OutRange... voir le commentaire de Florenth. ajout de petites choses.
19 mars 2006 14:01:59 :
correction de petits oublis (merci florenth)
06 avril 2007 04:25:58 :
Refonte en DocX
  • signaler à un administrateur
    Commentaire de f0xi le 22/02/2006 14:46:44 administrateur CS

    desolé si la presentation chie un peu ... mais c'est a cause de ce #!!@X[ d'editeur du site.

    Pour ce qui est du tuto, si vous remarquez une erreur ou un oublis ou un manque de precision, merci de poster votre commentaire.

  • signaler à un administrateur
    Commentaire de cirec le 24/02/2006 17:19:58 administrateur CS

    Salut F0xi,
    comme toujours c'est très instructif pour tous ceux qui ne savent pas encore comment ça fonctionne. Peut être qu'une petite source serait la bienvenue, un petit programme c'est souvent bien plus parlant qu'une simple explication statique.

    Un truc du genre :

    procedure TForm1.Button1Click(Sender: TObject);
    Const
      BoolChars         : Array[Boolean] Of String = ('Faux', 'Vrai');
      Var A, B, C, D : Boolean;
    begin
      A:= cb_A.Checked;
      B := cb_B.Checked;
      C := cb_C.Checked;
      D := cb_D.Checked;
      Label1.Caption := BoolChars[(A AND B) OR (NOT(C AND D))];
    end;

    bon c'est qu'une ébauche vite faite mais ça permet de faire les testes soit même.
    Donc je met un 10/10 parce qu'il a encore trop de dévellopeurs qui ne connaissent pas ces bases ça leurs permettera d'évoluer dans le bon sens.

    @+
    Cirec

  • signaler à un administrateur
    Commentaire de CptPingu le 28/02/2006 19:24:38

    Tu as juste oublié un tout petit truc, c'est quelquechose que je vois souvent:
    "If truc = True then ..." peut être remplacé par "If truc then ..."

    Voila, c'est dit.

  • signaler à un administrateur
    Commentaire de f0xi le 28/02/2006 20:36:04 administrateur CS

    tu as raison, j'ajoute le truc

  • signaler à un administrateur
    Commentaire de florenth le 07/03/2006 20:28:57

    Petite remarque sur ta fonction OutRange().
    Comme normalement VMin < VMax alors V ne peut pa sêtre supérieur à VMax et inférieur à VMin en même temps. C'est donc (V < VMin) OR (V > VMax) qu'il faut écrire !!

    Sinon, le tuto est très bien fait. 10 / 10
    ça n'est utilse qu'au débutants mais bon, c'est bien pratique.

    Pour la source que Cirec proposait de faire. Je cros que ce n'est pa sla peine. Japee avait déjà fait quelque chose de similaire il y a quelques temps.

    ++ Flo

    PS: certains mots sont collés dans le tuto. C'est encore une erreur de ce *$!"]- d'éditeur lol.
    Quelques fautes d'orthographe et de grammaire subsistent ...

  • signaler à un administrateur
    Commentaire de f0xi le 13/03/2006 09:17:37 administrateur CS

    hola florenth! como esta?

    en effet V ne peut etre en meme temps Superieur a VMax et inferieur a VMin ...
    donc oui (V < VMin) or (V > VMax), le manque de café surrement ...

    j'ai corriger cela et j'ai egalement mais vainement tenter de remplacer les espaces par des codes &nbsp; ... mais cela ne semble pas resoudre le probleme ...

    APEL A NIX : PUIS-JE AVOIR LE CODE SOURCE DE L'EDITEUR DE TEXTE AFIN DE FIXER LES PROBLEMES DE CODES A LA DREAMWEAVER! je cite une partie du code de la page :

    <o:p></o:p></span></font><p class="MsoNormal"><font face="Courier New" size="2"><span lang="EN-GB"><o:p>&nbsp;</o:p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><font color="#000080">R := (X = 2)</font></span><span lang="EN-GB"><font color="#000080"> <font color="#800080">OR</font> (X = 3)</font></span><span lang="EN-GB"><font color="#000080"> <font color="#800080">OR</font> (X = 6)</font></span><span lang="EN-GB"><font color="#000080">;</font><o:p></o:p></span></font></p><font face="Courier New" size="2">

    c'est meme pas du Dream, on dirait du HTML by MSOFFICE (Word) ... * Bleuuartch! *

    ce que je prefere par dessus tout c'est la certification W3C tout en haut ... pourtant tout le monde sais a quel point cette certification pue un peu (beaucoup) "du mis chemin entre la tete et les pieds" (pour rester poli)...

    Comme dirait l'autre, la certif W3C c'est un trou avec du poil autour. encore des gens qu'on paye a "reflechir pour les autres" sois-disant...

    desolé, coup de geule du matin.

  • signaler à un administrateur
    Commentaire de florenth le 15/03/2006 13:51:38

    L'editeur de tuto est le FreeTextbox. c'est pas du tout dreamviewer mais en meme temps c'est un des seuls à être gratuit sur le web ! Alors on va devoir faire avec.
    Je ne sais pas où tu as vu une certif du W3C mais je tenais à dire que si un organosme du genre n'existait pas, le format html deviendrait propriétaire. Et qui aurait les moyens ?? M.cro..ft ;-)

    Enfin, tu as réussi à corriger le tuto, après tout, c'est l'essentiel.

  • signaler à un administrateur
    Commentaire de florenth le 15/03/2006 13:56:02

    Au fait, je viens de le remarquer: tu as corrigé le code mais pas le texte qu'il y a au-dessus.
    Ca craint pour ceux qui débutent et qui vont se creuser la tête 10 min avant de trouver l'erreur.

    Dépeche toi de modifier cela :)

  • signaler à un administrateur
    Commentaire de f0xi le 19/03/2006 14:02:31 administrateur CS

    voila corrigé! desolé, la fatigue surrement...

  • signaler à un administrateur
    Commentaire de Forman le 27/05/2006 12:09:29

    On pourrait peut-être aussi rajoutter l'opérateur "is" dans la liste des opérateurs donnant des valeurs boolléennes.

    Et préciser que les opérateurs
    + - et * peuvent aussi s'utiliser avec les ensembles (respectivement union, différence et intersection)

  • signaler à un administrateur
    Commentaire de WhiteHippo le 09/12/2006 10:24:02

    Une petite erreur s'est glissée en fin de ce tutoriel "while booleen = true then" au lieu d'un "while booleen = true do".

    Cordialement.

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS