begin process at 2010 03 19 23:15:12
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Tutoriaux

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

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


 Information sur le tutoriel

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

 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;

 Historique

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

Commentaires

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.

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

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.

Commentaire de f0xi le 28/02/2006 20:36:04 administrateur CS

tu as raison, j'ajoute le truc

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 ...

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.

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.

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 :)

Commentaire de f0xi le 19/03/2006 14:02:31 administrateur CS

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

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)

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




Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,078 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales