Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Scheme
Scheme Forum d'entraide sur la programmation en langage fonctionnel Scheme
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/11/2012, 15h16   #1
densetsu
Invité de passage
 
Inscription : novembre 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 1
Points : 0
Points : 0
Par défaut Valeurs booléennes

Bonjour à tous ,
Je suis en train de m'entrainer à la programmation en Scheme.
Mais il y a certaines choses que je n'ai pas compris sur les expressions booléennes.
Je fais des questions d'entrainement, mais comme il n'y a aucun corrigé, je suis un peu perdu, donc je ne sais pas si j'ai tort ou pas voici une des questions:

écrire un ensemble de fonctions pour manipuler les valeurs booléennes usuelles à partir des définitions suivantes:
1. a ⇒ b est égal à ((non a) ou b)
2. a ⇔ b est égal à (a ⇒ b) et (b ⇒a)

voici ce que j'ai fait:
1. ;;; implique: bool*bool → bool
;;; (implique ab) rend true lorsque a vaut false ou lorsque b vaut true
2. ;;; implique: bool*bool → bool
;;;(implique ab) rend true lorsque a vaut true ou lorsque b vaut true

Et ils ont rajouté un 3 plus difficile; écrire une fonction qui prend 2 booléens a et b en arguments et qui vérifie l'expression (a ⇒ b) ⇔ ((non b) ⇒ (non a))
là je ne sais pas faire peut-être:
;;; not implique (la fonction implique existe est-ce que j'ai le droit de faire not implique?)
donc ;;; not implique: bool*bool → bool
;;; (not implique ab) rend true lorsque a vaut false ou lorsque b vaut false

Qu'en pensez vous? auriez vous fait la même chose?

merci d'avoir lu
densetsu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 17h04   #2
ceciestunpseudo
Membre du Club
 
Inscription : août 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 38
Points : 51
Points : 51
Salut,

pense à utiliser la balise CODE, ça aidera à la présentation de ton code

Citation:
Envoyé par densetsu Voir le message
un ensemble de fonctions pour manipuler les valeurs booléennes usuelles à partir des définitions suivantes:
1. a ⇒ b est égal à ((non a) ou b)
2. a ⇔ b est égal à (a ⇒ b) et (b ⇒a)

voici ce que j'ai fait:
1. ;;; implique: bool*bool → bool
;;; (implique ab) rend true lorsque a vaut false ou lorsque b vaut true
2. ;;; implique: bool*bool → bool
;;;(implique ab) rend true lorsque a vaut true ou lorsque b vaut true

Et ils ont rajouté un 3 plus difficile; écrire une fonction qui prend 2 booléens a et b en arguments et qui vérifie l'expression (a ⇒ b) ⇔ ((non b) ⇒ (non a))
là je ne sais pas faire peut-être:
;;; not implique (la fonction implique existe est-ce que j'ai le droit de faire not implique?)
donc ;;; not implique: bool*bool → bool
;;; (not implique ab) rend true lorsque a vaut false ou lorsque b vaut false

Qu'en pensez vous? auriez vous fait la même chose?

merci d'avoir lu
Je ne suis pas sûr de comprendre l'exercice.
Mais il me semble que tu dois coder des opérateurs logiques comme "et" "ou" "non" puis "implique" "equivalent". Là j'ai l'impression qu'en plus tu ne fais pas de Scheme... me trompes-je ou faisais-tu du OCaml avant ?

Donc là tu veux coder les fonctions suivantes
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(define (non a) 
  ;; Bool -> Bool
  'a-faire)
(define (et a b) 
  ;; Bool * Bool -> Bool
  'a-faire)
(define (ou a b) 
  ;; Bool * Bool -> Bool
  'a-faire)

(define (implique a b) 
  ;; Bool * Bool -> Bool
  'a-faire)

(define (equivalent a b) 
  ;; Bool * Bool -> Bool
  'a-faire)
Ces opérateurs sont définis par les tables de vérité que tu trouves dans tous les livres de logiques. Mais les deux derniers se définissent par rapport aux autre (en fait "et" se définit aussi par "ou" et "non")... code les trois premiers directement et les deux autres en utilisant les trois premiers.
Après tu fais l'autre fonction avec les opérateurs déjà définis.
Je suppose que c'est ça l'exercice.
ceciestunpseudo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h49.


 
 
 
 
Partenaires

Hébergement Web