Oggi vedremo come si possono simulare le porte logiche attraverso il codice sorgente realizzato in C++. Utilizzeremo vari metodi per raggiungere l'obiettivo e far sì di poter tradurre nel nostro nuovo pseudolinguaggio ogni circuito grafico realizzato con le porte logiche.

Per prima cosa andiamo a relizzare il codice sorgente contenente la dichiarazione delle variabili e dei tipi necessari per la nostra progettazione ottimale.
 
#include <iostream>

using namespace std;

typedef unsigned short int Positivo;
typedef bool logico;
const Positivo VERO=1;
const Positivo FALSO=0;

Ora dichiariamo le funzioni ed i metodi richiamati nel main.

Positivo NOT(Positivo A);
logico eUguale(Positivo A,Positivo B);
Positivo OR(Positivo A,Positivo B);
Positivo AND(Positivo A,Positivo B);
Positivo XOR(Positivo A,Positivo B);
Positivo NAND(Positivo A,Positivo B);
Positivo NOR(Positivo A,Positivo B);
Positivo XNOR(Positivo A,Positivo B);

// OR ed AND a TRE ingressi

Positivo OR(Positivo A,Positivo B,Positivo C);
Positivo AND(Positivo A,Positivo B,Positivo C);

// leggiamo gli interessi in modo corretto

Positivo Corretto_INS(Positivo dato)
{
    if(!(dato ==0)) return VERO; // se < DI 0 o > di 0 restituiamo il valore 1 --> VERO
    else return FALSO; // diversamente restituiamo FALSO -->
};​

    Non ci resta altro che realizzare il nostro main per eseguire il nostro programma.
 

   
int main()
    {
        Positivo A,B,C;
        cout<<"Inseriamo i valori degli ingressi A B e C che possono assumere 0 o 1"<< endl;
        cout <<"________________________________________________________________________________________";
        cout<<"I dati correnti sono i seguenti......."<< endl;
        cout <<"________________________________________________________________________________________";
        cout<<"Inserisci il valore dell'ingresso A: ";    cin>>A;   A=Corretto_INS(A);
        cout<<"Inserisci il valore dell'ingresso B: ";    cin>>B;   B=Corretto_INS(B);
        cout<<"Inserisci il valore dell'ingresso C: ";    cin>>C;    C=Corretto_INS(C);
        cout<<"I dati correnti sono i seguenti......."<< endl;
        cout <<"________________________________________________________________________________________";
        /* verifichiamo la corretta dinamica della funzione eUguale tra l'ingresso A e B
        in modo da esaminare se le dichiarazioni delle variabili sono corrette */
        
        cout<<"Il valore dell'ingresso A: ";        cout<<A; cout<<" ...... "<< endl;
        cout<<"Il valore dell'ingresso B: ";        cout<<B; cout<<" ...... "<< endl;
        cout<<"Il valore dell'ingresso C: ";        cout<<C; cout<<" ...... "<< endl;
        cout <<"_______________________________________________________________________________________________";
        
        
        if (eUguale(A,B)) cout<<A << "A è uguale a B" <<endl;
        cout <<"______________________________________________________________________________________________________";
        
        // eseguiamo operazioni ed un ingresso porta NOT
        
        cout << NOT(A) <<" il risultato di NOT(A) " <<endl;
        cout << "________________________________________________________________________________________________________________________________________________";
        
        // eseguiamo a OR B e lo mandiamo in stampa video e così via a 2 ingressi
        
       cout << OR (A,B) <<"il risultato di A OR B  " << endl;
       cout << AND (A,B) <<"il risultato di A AND B " <<endl;
       cout << NAND (A,B) <<"il risultato di A NAND B " <<endl;
       cout << XOR(A,B) <<"il risultato di A XOR B "  <<endl;
       cout << XNOR(A,B) <<"il risultato di A XNOR B " <<endl;
       cout << "_____________________________________________";
       
       // eseguiamo OR e AND  a tre ingressi  e lo mandiamo in stampa video
       
       cout << OR (A,B,C) <<"il risultato di A OR B OR C" <<endl;
       cout << AND (A,B,C) <<" il risultato di A AND B AND C" <<endl;
       cout << "_________________________________________________";
       
       Positivo Y=NOT(OR(A,B));
       cout << " il riultato totale della funzione A OR B tutto negato è: " << Y;
       system ("pause");
       return 0;
       
}       ​

       
       Ora espletiamo in modo completo le funzioni ed i metodi sopra citati nel codice del main.
       
      
Positivo NOT (Positivo A)
       {
           if(A==0) return VERO;
           else return FALSO;
       };
       
       logico eUguale(Positivo A,Positivo B)
       {
         return (A==B);
       };
       
       Positivo OR(Positivo A,Positivo B)
       {
           return (A==1) || (B==1);
       };
       Positivo AND (Positivo A,Positivo B)
       {
             return (A==1) &&  (B==1);
       };
       Positivo XOR(Positivo A,Positivo B)
       {
             return !(A==B);
       };
       Positivo NAND(Positivo A,Positivo B)
       {
              return !((A==1) && (B==1));
       };
       
       Positivo NOR(Positivo A,Positivo B)
       {
             return ! ((A==1) || (B==1));
       };
       Positivo XNOR(Positivo A,Positivo B)
       {
             return  (A==B);
       };
       
       // OR ed AND a TRE ingressi
       
Positivo OR(Positivo A,Positivo B,Positivo C){
         return (A==1) && (B==1) && (C==1);
         }


Positivo AND(Positivo A,Positivo B,Positivo C){
         return (A==1) && (B==1) && (C==1);
         }
        ​

Su 360bitnews.it

360bitnews.it è un sito rivolto a tutti gli appassionati del mondo ICT, esperti e non, che amano questo mondo a 360 gradi.
Programmazione, Progettazione, Reti, Sicurezza, Arduino, RaspBerry e tanto altro: argomenti degli articoli e delle news di ogni giorno, sempre al passo con i tempi, cercando di raccogliere il maggior numero di consensi e riuscire a coinvolgere  un numero sempre maggiore di persone. Come ogni progetto che vuole evolversi, puntiamo all'eccellenza e quindi vogliamo che i migliori professionisti collaborino con noi.

Contattaci

Sede

Ufficio Principale
Via Walter Tobagi 19 - 87100 CS
Email Consulenze
assistenza@answersandsolutions.it
webmaster@ilportaleinformatico.it

Ultime news

Per i tuoi annunci

Aumenta la visibilità

La tua azienda è del setrore ICT? Vuoi valorizzare ed esporre un tuo servizio o un tuo prodotto? Scrivici.

Flessibilità

Hai bisogno di realizzare soluzioni ICT su misura per la tua azienda? Scrivici.

Collabora con noi

Vuoi scrivere del mondo ICT sul nostro sito? Scrivici ed invia la tua candidatura.

Video or Banner Ads

Vuoi sponsorizzare la nostra iniziativa? Scrivici.