Qu'est ce qu'un prédicat?

étant un codeur hobbyiste, je manque de connaissances fondamentales. Ces derniers jours, j'ai lu des trucs et le mot "prédicat" n'arrête pas de réapparaître. J'apprécierais beaucoup une explication sur le sujet.

52
demandé sur Benjamin 2009-08-28 02:09:59

11 réponses

la définition d'un prédicat, qui peut être trouvé en ligne dans diverses sources telles que ici , est:

une expression logique qui évalue à TRUE ou FALSE, normalement pour diriger le chemin d'exécution en code.

Référencement: Tests De Logiciels. Par Mathew Hayden

39
répondu aehlke 2016-05-24 09:07:43

déclaration vraie ou fausse. Dans la programmation, c'est typiquement une fonction qui renvoie un booléen pour une entrée.

Plus souvent (je suppose) utilisé dans le contexte de la fonction d'ordre supérieur. Par exemple: filter est une fonction en plusieurs langues qui prend comme arguments predicate et list et renvoie les éléments dans la liste pour lesquels le predicate est vrai.

exemple dans javascript:

lessThanTen = function(x) { return x < 10; }
[1,7,15,22].filter(lessThanTen) --> [1,7]

la fonction lessThanTen est le prédicat ici, qui est appliqué à chaque élément de la liste. Bien sûr, une expression booléenne pourrait être utilisée comme prédicat à la place d'une fonction, E. g filter(true) renvoie la liste complète, filter(false) une liste vide.

32
répondu JacquesB 2009-08-27 22:21:54

un prédicat n'est pas simplement une expression qui évalue à vrai ou à faux, il y a plus. Le terme "prédicat "est utilisé pour désigner une expression qui détermine si quelque chose est vrai ou faux. Ou en d'autres termes, il fait une assertion et retourne vrai ou faux sur la base de cela.

par exemple (en C#):

/*this is a predicate, as it's sole purpose is to make some 
 assertion about something.*/
bool IsNameBob(string name)
{
   return name == "Bob";
}

/*Whereas this is not a predicate, as it's performing an action
 then evaluating to true if it succeeds. */
bool DoSomethingCool() {
   try 
   {
       ImDoingSomethingCool();
   }
   catch
   {
      return false;
   }
   return true;
}

je comprends ce que j'ai mis ici est purement une différence de sémantique, mais c'est ce que cette question a été sur le droit? La sémantique?

16
répondu Ben Lesh 2009-09-02 19:31:49

Une base de l'évaluation que les résultats dans un booléen 1 de la valeur. Il s'agit souvent d'une fonction ou d'un objet qui représente une évaluation de ce type.

1: booléen utilisé de manière vague, ne se référant pas nécessairement aux variables déclarées bool ou boolean .

4
répondu C. Ross 2014-03-26 12:36:27

Dans la non programmation de termes; une question . Typiquement une question générale avec les porteurs de place (comme il et eux ) qui peut être demandé de beaucoup de choses.

  • Est il rouge?
  • Est il un chien?
  • Est il propriété de eux ?
3
répondu BCS 2009-08-27 22:20:59

Je ne sais pas si je parle dans le bon contexte, mais il y a une classe Predicate dans C# qui est essentiellement un délégué qui, compte tenu d'un élément, détermine si l'objet répond ou non à un ensemble de critères.

par exemple, la méthode suivante, qui est de type Predicate<int> , pourrait être utilisée pour sélectionner tous les entiers supérieurs à 5:

public bool MyPredicate(int x)
{
   return x > 5;
}

Je ne sais pas comment cela se traduit dans le cas plus général, mais c'est un début. Pour plus d'informations, Cliquez ici .

1
répondu jeremyalan 2009-08-27 22:15:58

une fonction qui renvoie un booléen. Les prédicats sont utilisés beaucoup dans la programmation fonctionnelle et OO à sélectionner des sous-ensembles de valeurs des structures de données , en particulier des listes et d'autres collections. Vous trouverez de nombreux exemples dans les bibliothèques standard de Haskell et Smalltalk.

1
répondu Norman Ramsey 2009-08-27 22:35:37

il est probablement utile de considérer le sens grammatical du concept pour extrapoler le concept de programmation.

de wikipedia :

Dans la grammaire traditionnelle, un prédicat est l'une des deux principales parties d'un phrase (l'autre étant le sujet, qui le prédicat modifie). Pour l' phrase simple " John [is yellow]," Jean agit comme le sujet, et est jaune actes du prédicat, un description ultérieure du sujet dirigé par un verbe.

Dans le courant de sémantique linguistique, un prédicat est une expression qui peut être vrai de quelque chose. Ainsi, l' les expressions "jaune" ou "c'est comme brocolis " sont vraies de ces choses qui sont jaunes ou comme le brocoli, respectivement. Cette notion est étroitement liées à la notion de prédicat en logique formelle, qui comprend plus les expressions que l'ancien, comme, par exemple, les noms et les certains types de les adjectifs.

en termes logiques:

un opérateur en logique qui renvoie vrai ou faux.

à partir de MathWorld

1
répondu Gordon Potter 2009-09-07 14:58:43

regardons D'abord un dictionnaire régulier et voyons ce qu'il dit sur ce qu'est un prédicat:

Oxford American Dictionary (1980):

N. une partie d'une phrase qui dit quelque chose sur le sujet grammatical, comme "est court" dans "la vie est courte"

Voici une autre phrase: "John est grand."le prédicat est "grand". Comme vous pouvez le voir modifie ou décrit le sujet, un autre terme qui est similaire à predicate est adjective . En substance, c'est un modificateur.

technologie IBM Glossaire fournit plusieurs définitions, mais, celle qui correspond le mieux est celle-ci:

expression utilisée dans le cadre d'un filtre, consistant en un élément de données, un opérateur et une valeur

voici un exemple D'utilisation de SQL:

SELECT name
FROM tableA
WHERE name = "john";

Le prédicat dans ce code serait name = "john" . Il a tous les composants de la définition IBM et correspond également à la définition régulière de prédicate. Le sujet name et le prédicat étant name = "john" .

1
répondu Robert Rocha 2015-03-05 01:29:34

également quelque peu liés, Il ya des prédicats liés à la base de données:

http://www.tizag.com/sqlTutorial/sqlpredicates.php

0
répondu Jon Onstott 2009-08-27 22:13:20

à Partir de C++ Primer 5ème (§10.3.1):

un prédicat est une expression qui peut être appelée et qui renvoie une valeur qui peut être utilisée comme condition.

également du chapitre termes définis section:

predicate : fonction qui renvoie un type qui peut être converti en bool .

0
répondu Rick 2018-06-26 07:25:04