Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    la tautologia e gli operatori logici

    Allora, buongiorno mondo!
    sono nuovo, e sto imparando PHP.

    Ho aperto questo topic perchè studiando sul manuale, è uscito l'argomento della tautologia discutendo degli operatori logici.

    Un esempio pratico è:

    Codice PHP:
    (($statement_1 and $statement_2 and $statement_3) xor
      ((!(
    $statement_1 and $statement_2)) or
      ((!(
    $statement_1 and $statement_3)) or
      ((!(
    $statement_2 and $statement_3))
    )) 
    Tautologia = nel senso che è sempre vera qualunque siano i valori delle variabili della dichiarzione.

    Ora, non è che mi è stato tanto chiaro questo esempio e cosa volesse dire.

    capisco che il risultato dovrebbe essere TRUE o FALSE, ma non comprendo perchè dovrebbe essere per forza TRUE

    la prima definzione di and con xor, definisce che una di questi $statement deve essere vero, ma non tutti gli statment sono veri

    ora non capisco se ciò vuol dire che possa essere TRUE TRUE FALSE o che debba essere una soluzione con un solo TRUE e 2 FALSE

    dopo il codice fa un controllo per vedere chi di queste è TRUE o FALSE

    ma non mi è tanto chiaro l'utilizzo di !

    ringrazio tutti per la gentile risposta in anticipo

  2. #2
    Ciao !
    Allora..non ho ben capito quale sia il nesso tra il PHP e questo esercizio...che è un esercizio più rivolto allo studio delle reti logiche !!
    Cmq...ad "occhio e croce" sembra essere sempre vera ciò la funzione logica che hai scritto.

    Provatela a scrivere un poco meglio

    il blocco a sx è la AND di abc
    il blocco a dx quei negati fanno diventare il blocco una somma di somme negate [(!a+!b)+(!a+!c)+(!b+!c)]

    {[(abc)]XOR[(!a+!b)+(!a+!c)+(!b+!c)]}

    il blocco a sinistra ricordando che la AND è vera solo se tutti sono veri sarà vera solo nel caso in cui abc valgono tutti valore 1 ; ma quando abc valgono tutti e tre 1 il blocco a dx ha valore zero.

    Essendo la XOR vera quando uno dei due è vero ma non contemporaneamente...la funzione è vera.

    Nel caso in cui non sono tutti e tre 1 i lblocco a sx sarà sempre pari a 0 e il blocco a dx verrà sempre 1 , quindi anche in questo caso la XOR darà come risultato 1 , cioè vero.

    Avrò fatto una confusione infinita...ma almeno ci ho provato !

    PS. In che senso nn ti è chiaro l'uso di !
    serve a considerare la variabile o l'intero blocco in complemento , negato...a=1 ; !a=0


  3. #3
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Gli operatori logici si comportano come operatori algebrici (algebra di bool appunto); una volta imparate le regole ti puoi divertire a risolvere le espressioni come quelle che ci davano alle medie!!!

    L'utilità starebbe nel ricondursi a espressioni più semplici
    o più 'economiche' (tempo oppure costo oppure complessità,...in ambito elettronico è ben più importante che in ambito software!)

    Non so se la notazione ti piace comunque facciamo finta di usare i simboli &(AND), |(OR), ^(XOR), !(NOT)

    Scrivo quello che hai postato

    codice:
    (a & b & c) ^ ( !(a&b) | !(a&c) | !(b&c) )
    
    i)nota che !(a&b) = !a | !b 
    
    (a & b & c) ^ (!a | !b | !a | !c | !b | !c)
    
    ii)inoltre !a | !a  è ancora uguale a !a quindi
    
    (a & b & c) ^ (!a | !b | !c)
     
    per la i) riscriviamo (!a | !b | !c) = !(a & b & c)
    
    poniamo per semplicità x = (a & b & c) quindi 
    tutto si riconduce a
    
    x^(!x)
    
    p XOR q è FALSO quando p e q sono uguali ma x non potrà 
    mai essere uguale al suo negato quindi l'espressione 
    è sempre vera qualsiasi sia il valore di x quindi
    qualsiasi sia il valore di a,b e c
    
    uff...
    Bei manuali di piaccapì che leggi comunque...complimenti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.