Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    esercizio java

    ciao a tutti avrei bisogno di una mano per risolvere un esercizio..non so da dove iniziare
    1.Scrivere il codice di una funzione java o C che implementi una funzione booleana con i seguenti mintermini:
    3, 4, 5, 7, 12, 15, 18.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: esercizio java

    Originariamente inviato da spider550
    1.Scrivere il codice di una funzione java o C che implementi una funzione booleana con i seguenti mintermini:
    3, 4, 5, 7, 12, 15, 18.
    In sostanza devi fare un metodo (Java) o funzione (C) che ha come tipo di ritorno un "booleano" e che ritorni un "true" quando l'input rappresenta uno dei mintermini che hai elencato. O "false" in qualunque altro caso.

    Ora .. è solo questione di capire come ti è stato chiesto di passare l'input alla funzione. Se fosse un normale valore intero ... sarebbe banale/stupido come esercizio. Quindi sarei portato a pensare che l'input debba essere composto da N valori booleani, ognuno che rappresenta un "bit" che forma il valore con un peso 2^n. Visto il massimo che è 18, hai bisogno di almeno 5 bit.

    Questo però dovresti saperlo tu ... non io. Non so cosa ti è stato chiesto precisamente di fare a livello tecnico ... e se il testo dell'esercizio che hai citato è tutto lì, è molto poco chiaro/completo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    infatti penso non si tratti di inserire interi poichè bisognerebbe semplicemente confrontare l'intero passato come argomento con i vari mintermini....quindi bisognerebbe utilizzare i bit...ma come?
    un altra domanda: il metodo mi deve restituire true se i bit sono uguali ai bit di uno dei mintermini o devo passare al metodo una sequenza di bit uguale a tutti i mintermini?

    mi spiego meglio... se passo il valore 5 al metodo mi deve dare true perchè fa parte dei mintermini o mi deve dare false perchè 5 è diverso dalla sequenza 3,4,5,7 ecc...?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da spider550
    infatti penso non si tratti di inserire interi poichè bisognerebbe semplicemente confrontare l'intero passato come argomento con i vari mintermini....
    Appunto ... sarebbe scontato.

    Originariamente inviato da spider550
    quindi bisognerebbe utilizzare i bit...ma come?
    Fai un metodo che ha N parametri booleani e come ho detto prima, minimo 5. In sostanza, in Java:

    public static boolean miaFunzioneBooleana(boolean b4, ....altri....., boolean b0) { ..... }

    Originariamente inviato da spider550
    un altra domanda: il metodo mi deve restituire true se i bit sono uguali ai bit di uno dei mintermini o devo passare al metodo una sequenza di bit uguale a tutti i mintermini?

    mi spiego meglio... se passo il valore 5 al metodo mi deve dare true perchè fa parte dei mintermini o mi deve dare false perchè 5 è diverso dalla sequenza 3,4,5,7 ecc...?
    Devi restituire 'true' se la combinazione di bit passata in input rappresenta uno dei mintermini. Altrimenti false.
    Tu sai per quali mintermini devi restituire true, quindi nel metodo andrai a testare i bit in input. E ovviamente (e questo è l'esercizio) devi conoscere l'algebra booleana.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Fai un metodo che ha N parametri booleani e come ho detto prima, minimo 5. In sostanza, in Java:

    public static boolean miaFunzioneBooleana(boolean b4, ....altri....., boolean b0) { ..... }
    in pratica dovrei far leggere i mintermini come sequenza di booleani (bit)...inserire i bit al metodo come parametro e confrontarli...giusto?

  6. #6
    public class Mintermini {
    static int []leggiBit(int a) {
    int t[]= new int [6];
    for (int pos = 5; pos <= 0; pos--){
    if ((a &(1<< pos)) !=0){
    t[pos] = 1;
    }
    else{
    t[pos] = 0;
    }
    }
    return t;
    }
    static boolean mintermini(int a){
    boolean sequenza = false;
    if (leggiBit(a)== leggiBit(4)||leggiBit(a)== leggiBit(5)||leggiBit(a)== leggiBit(7)||leggiBit(a)== leggiBit(3)||leggiBit(a)== leggiBit(12)||leggiBit(a)== leggiBit(15)||leggiBit(a)== leggiBit(18)){
    sequenza = true;
    }
    return sequenza;
    }
    }

    avevo pensato di fare una cosa del genere anke se è sbagliata....come ti sembra?

  7. #7
    public class AlgebraBool {
    public static boolean funzione(boolean b4,boolean b3,boolean b2,boolean b1,boolean b0){
    boolean mintermine = false;
    if (b4 == false && b3== false && b2 == false && b1 == true && b0 == true){
    mintermine = true;
    }
    if (b4 == false && b3== false && b2 == true && b1 == false && b0 == false){
    mintermine = true;
    }
    if (b4 == false && b3== false && b2 == true && b1 == false && b0 == true){
    mintermine = true;
    }
    if (b4 == false && b3== false && b2 == true && b1 == true && b0 == true){
    mintermine = true;
    }
    if (b4 == false && b3== true && b2 == true && b1 == true && b0 == false){
    mintermine = true;
    }
    if (b4 == false && b3== true && b2 == true && b1 == true && b0 == true){
    mintermine = true;
    }
    if (b4 == true && b3== false && b2 == false && b1 == true && b0 == false){
    mintermine = true;
    }
    return mintermine;
    }
    }

    penso ke l'esercizio kieda questo no?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da spider550
    penso ke l'esercizio kieda questo no?
    Ci sono diverse cose da farti notare:

    1) Il 5° test non è il mintermine 12, controlla bene il valore binario!

    2) Testare con == se è un boolean è true o false ovviamente sì, è corretto. Ma superfluo!! Un boolean già da solo rappresenta la condizione true/false e se vuoi negarlo usa l'operatore ! (che dovresti conoscere).

    3) Non ci sarebbe bisogno di usare una variabile, una prima semplificazione potrebbe essere far ritornare subito true se un if dà true e alla fine far ritornare false. Una semplificazione estrema è far ritornare direttamente il valore della espressione di test dei mintermini messi in OR, quindi senza alcun if!

    4) Non so se conosci le tecniche di "minimizzazione" di una funzione booleana e in caso affermativo se ti è stato chiesto/proposto di usarle. Minimizzare significa ridurre la funzione in modo che abbia il minor numero possibile di mintermini e di variabili.

    Ti faccio l'esempio. Data la tavola della verità:

    codice:
    ABC  O
    000  1
    001  1
    010  0
    011  0
    100  0
    101  0
    110  1
    111  1
    La funzione è certamente:
    codice:
               ___   __      _
    f(A,B,C) = ABC + ABC + ABC + ABC
    Ma è lunga e ridondante!! Cosa noti dei primi due valori? A e B sono sempre a 0 e C "non conta" nel senso che in ogni caso il risultato è 1.

    Quindi si può riscrivere come:
    codice:
               __
    f(A,B,C) = AB + AB
    E nel tuo caso si può minimizzare .... e probabilmente forse è anche quello l'esercizio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Originariamente inviato da andbin
    Ci sono diverse cose da farti notare:

    1) Il 5° test non è il mintermine 12, controlla bene il valore binario!

    2) Testare con == se è un boolean è true o false ovviamente sì, è corretto. Ma superfluo!! Un boolean già da solo rappresenta la condizione true/false e se vuoi negarlo usa l'operatore ! (che dovresti conoscere).

    3) Non ci sarebbe bisogno di usare una variabile, una prima semplificazione potrebbe essere far ritornare subito true se un if dà true e alla fine far ritornare false. Una semplificazione estrema è far ritornare direttamente il valore della espressione di test dei mintermini messi in OR, quindi senza alcun if!

    4) Non so se conosci le tecniche di "minimizzazione" di una funzione booleana e in caso affermativo se ti è stato chiesto/proposto di usarle. Minimizzare significa ridurre la funzione in modo che abbia il minor numero possibile di mintermini e di variabili.

    Ti faccio l'esempio. Data la tavola della verità:

    codice:
    ABC  O
    000  1
    001  1
    010  0
    011  0
    100  0
    101  0
    110  1
    111  1
    La funzione è certamente:
    codice:
               ___   __      _
    f(A,B,C) = ABC + ABC + ABC + ABC
    Ma è lunga e ridondante!! Cosa noti dei primi due valori? A e B sono sempre a 0 e C "non conta" nel senso che in ogni caso il risultato è 1.

    Quindi si può riscrivere come:
    codice:
               __
    f(A,B,C) = AB + AB
    E nel tuo caso si può minimizzare .... e probabilmente forse è anche quello l'esercizio.
    1) hai ragione non me ne ero accorto
    2) come dovrei fare con "!"?
    3)si forse sarebbe meglio mettere le espressioni con gli or
    4)si conosco le tecniche di minimizzazione ma penso ke il testo non lo kieda
    5) grazie di tutto

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da spider550
    2) come dovrei fare con "!"?
    Esempio:

    a && !b && c && !d

    vale 'true' se i 4 boolean hanno rispettivamente T F T F
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.