C++ #1 Esercizi con blocchi condizionali

Obiettivo: Sono riportati in seguito una serie di esercizi utili per testare le proprie conoscenze nell’ambito dei linguaggi di programmazione strutturata relativamente all’utilizzo dei blocchi condizionali.
Gli esercizi,  a complessità crescente, possono essere risolti utilizzando blocchi condizionali, blocchi condizionali nidificati e blocchi condizionali che prevedono l’utilizzo della logica booleana.

Per la risoluzione degli esercizi si suggerisce l’utilizzo del compilatore online:


https://www.onlinegdb.com/online_c++_compiler

ESERCIZI CON SELEZIONE SEMPLICE – IF ELSE

1) Realizzare un programma che permetta di inserire due numeri interi e determini il numero maggiore.

2) Realizzare un programma che permetta di inserire un numero e determinare il suo valore assoluto. (Un numero negativo deve diventare positivo, un numero positivo deve restare positivo).

3) Realizzare un programma che permetta di inserire l’età di un utente e determini se l’utente è maggiorenne oppure no.

4) Realizzare un programma che permetta di inserire il valore di un carattere e determini se il valore inserito è una vocale (ATTENZIONE: utilizzare il tipo dati char).

5) Realizzare un programma che permetta di inserire i coefficienti a, b, c di un’equazione di secondo grado e ne calcoli, se possibile, le soluzioni.

6) Realizzare un programma che permetta di inserire due differenti orari espressi nella forma ore, minuti e secondi (CONSIGLIO: utilizzare tre differenti variabili, una per le ore, una per i minuti, ed una per i secondi) e riporti quale dei due orari viene prima.

7 NEW) Realizzare un programma che permetta di inserire un numero intero e che determini se il numero inserito è positivo, negativo oppure zero.

ESERCIZI CON SELEZIONE NIDIFICATA

8) Realizzare un programma che permetta di inserire tre numeri interi e determini se questi numeri possano rappresentare le lunghezze dei lati di un triangolo. Ricorda: affinché un triangolo possa essere tale, la somma di ogni coppia lati deve essere maggiore dell’altro.

9) Realizzare un programma che legga tre valori rappresentanti le lunghezze dei lati di un triangolo e riporti se il triangolo è scaleno, isoscele o equilatero.

10) Realizzare un programma che permetta di inserire tre numeri interi e determini il valore maggiore.

11) Realizzare un programma che permetta di inserire tre numeri interi e determini il valore minore.

12) Realizzare un programma che permetta di inserire tre numeri interi (i.e., A, B, e C) e determini se B è compreso tra A e C.

13) Realizzare un programma che permetta di applicare gli sconti applicati da un negozio. Nello specifico, se il prezzo degli acquisti è minore di 50€ il negozio effettuo lo sconto del 10%. Se il prezzo degli acquisti è maggiore di 50€ e minore di 100€, il negozio effettua lo sconto del 20%. Se il prezzo degli acquisti è maggiore di 100€, il negozio effettua lo sconto del 30%. Il programma deve chiedere all’utente di inserire il prezzo relativo ai propri acquisti e mostri a schermo lo sconto ed il prezzo finale da pagare.

Spesa Totale Sconto Applicato
totale<50 10%
50<=totale<=100 20%
totale>100 30%

14) Gli abbonamenti della metropolitana di Milano possono essere settimanali (S), mensili (M), o annuali (A) e valgono per la sola zona centrale (tipo 1), per la sola zona periferica (tipo 2) o per entrambe le zone (tipo 3). I costi sono quelli riportati nella seguente tabella. Realizzare un algoritmo che calcola il costo dell’abbonamento a partire dalla durata e dal tipo.

Tipo Settimanale Mensile Annuale
1 10 Euro 30 Euro 250 Euro
2 5 Euro 20 Euro 150 Euro
3 15 Euro 40 Euro 300 Euro

15) Realizzare un programma per determinare le tasse pagate da un lavoratore sulla base delle aliquote IRPEF 2022.
Nello specifico la percentuale di tasse viene determinata in funzione del reddito percepito come riportato nella seguente tabella.

Reddito imponibile Aliquota Imposta dovuta
redditi fino a 15.000 euro 23% 23% sull’intero importo
da 15.001 fino a 28.000 euro 25% 3.450 euro + 25% sul reddito che supera i 15.000 euro fino a 28.000 euro
da 28.001 fino a 50.000 euro 35% 6.700 euro + 35% sul reddito che supera i 28.000 euro fino a 50.000 euro
oltre 50.001 euro 43% 14.400 euro + 43% sul reddito che supera i 50.000 euro




ARDWARE #15 Sintesi di Circuiti Logici – Prodotto di Somme

Obiettivo: Imparare a sintetizzare il comportamento di un circuito combinatorio partendo da una specifica tabella di verità mediante il prodotto di somme.

Componenti elettronici:

  • Porte Logiche (i.e., AND, OR, e NOT)

TeoriaUn circuito combinatorio è costituito da una serie di porte logiche opportunamente collegate tra loro con l’obiettivo di implementare una specifica funzione logica. Alcune delle porte logiche più utilizzate nell’ingegneria dell’informazione sono le porte: AND OR e NOT.

Le principali operazioni associate ad una rete logica sono due:

  • Analisi di una rete logica: dato un circuito combinatorio vengono determinate la funzione logica e la tabella di verità.
  • Sintesi di una rete logica: data la tabella di verità viene determinato il circuito combinatorio che implementa la rete.

Nel corso di questa lezione l’attenzione sarà focalizzata sulla sintesi di una rete logica. Nello specifico, la tecnica presentata per effettuare la sintesi di una rete logica viene denominata Prodotto di Somme e consiste in una procedura algoritmica che può essere facilmente applicata a tutte le differenti tabelle di verità.

Un’altra tecnica utilizzata per la sintesi di una rete logica è la somma di prodotti. Maggiori dettagli sono forniti al seguente link:


ARDWARE #14 Sintesi di Circuiti Logici – Somma di Prodotti


Il PRODOTTO DI SOMME (PoS – Product of Sum) è costituito dal prodotto logico dei maxtermini associati alle righe della tabella nella quale l’uscita assume valore 0.
Nel dettaglio un maxtermine è definito come la somma logica delle variabili booleane prese in forma diretta o negata a seconda se assumono valore 0 o 1.
A seguire, viene riportata la tabella dei maxtermini.

A B C Maxtermine
0 0 0 A+B+C
0 0 1 A+B+C
0 1 0 A+B+C
0 1 1 A+B+C
1 0 0 A+B+C
1 0 1 A+B+C
1 1 0 A+B+C
1 1 1 A+B+C

In analogia alla tabella di verità, è importante considerare che date n variabili di input il numeri di maxtermini è pari a 2n.

Esempio:
Al fine di illustrare in dettaglio il processo di prodotto di somme viene riportato un esempio specifico partendo dalla seguente tabella di verità:

A B C Y
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0

1) Si prendono in considerazione solamente le uscite pari a 0 della tabella di verità, per ogni uscita si prendono i maxtermini di riferimento.

Input: 1 0 0 -> Maxtermine: A+B+C

Input: 1 1 1 -> Maxtermine: A+B+C

2) Si moltiplicano le somme precedentemente determinate per ottenere la funzione logica che implementa la tabella di verità di partenza.

Y= (A+B+C)*(A+B+C)

3) Si rappresenta la rete logica che implementa la funzione logica precedentemente determinata.

Circuito combinatorio di sintesi mediante prodotto di somme

Esercizi di Approfondimento:

Vengono in seguito riportati alcuni esercizi che possono essere facilmente eseguiti al fine di comprendere se i concetti presentati sono stati opportunamente acquisiti. Pertanto si chiede di determinare la rete combinatoria legata alle seguenti tabelle di verità:

  • Esercizio 1

A B C Y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1

  • Esercizio 2

A B C Y
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0

Considerazioni:

Le principali tecniche utilizzate per la sintesi di una rete logica, sono la somma di prodotti (SoP) ed il prodotto di somme (PoS). Sebbene il procedimento applicato possa sembrare analogo e pertanto la scelta del metodo di sintesi possa risultare ad appannaggio del progettista, in realtà i due metodi presentano differenti vantaggi computazionali in base alla tabella di verità da sintetizzare.
Nello specifico per tabelle di verità la cui uscita assume più facilmente un valore pari ad 1 è opportuno utilizzare la somma di prodotti.
Differentemente per tabelle di verità la cui uscita assume più facilmente un valore pari ad 0 è opportuno utilizzare il prodotto di somme.




ARDWARE #14 Sintesi di Circuiti Logici – Somma di Prodotti

Obiettivo: Imparare a sintetizzare il comportamento di un circuito combinatorio partendo da una specifica tabella di verità mediante la somma di prodotti.

Componenti elettronici:

  • Porte Logiche (i.e., AND, OR, e NOT)

TeoriaUn circuito combinatorio è costituito da una serie di porte logiche opportunamente collegate tra loro con l’obiettivo di implementare una specifica funzione logica. Alcune delle porte logiche più utilizzate nell’ingegneria dell’informazione sono le porte: AND OR e NOT.

Maggiori informazioni in merito a queste porte logiche possono essere reperite nei seguenti link.


ARDWARE #3 Porta Logica NOT 74HC04



ARDWARE #5 Porta Logica OR 74HC32



ARDWARE #4 Porta Logica AND 74HC08


Le principali operazioni associate ad una rete logica sono due:

  • Analisi di una rete logica: dato un circuito combinatorio vengono determinate la funzione logica e la tabella di verità.
  • Sintesi di una rete logica: data la tabella di verità viene determinato il circuito combinatorio che implementa la rete.

La tecnica illustrata nel corso di questa lezione per effettuare la sintesi di una rete logica viene denominata Somma di Prodotti e consiste in una procedura algoritmica che può essere facilmente applicata a tutte le differenti tabelle di verità.
Nello specifico, la SOMMA DI PRODOTTI (SoP – Sum of Product) è costituita dalla somma logica dei mintermini associati alle righe della tabella nella quale l’uscita assume valore 1.
Nel dettaglio un mintermine è definito come il prodotto logico delle variabili booleane prese in forma diretta o negata a seconda se assumono valore 1 o 0.
A seguire la tabella dei mintermini.

A B C Mintermine
0 0 0 A B C
0 0 1 A B C
0 1 0 A B C
0 1 1 A B C
1 0 0 A B C
1 0 1 A B C
1 1 0 A B C
1 1 1 A B C

In analogia alla tabella di verità, è importante considerare che date n variabili di input il numeri di mintermini è pari a 2n.

Esempio:
Al fine di illustrare in dettaglio il processo di somma di prodotti viene riportato un esempio specifico partendo dalla seguente tabella di verità:

A B C Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0

1) Si prendono in considerazione solamente le uscite pari ad 1 della tabella di verità, per ogni uscita si prendono i mintermini di riferimento.

Input: 0 1 1 -> Mintermine: A B C

Input: 1 0 0 -> Mintermine: A B C

2) Si sommano i mintermini precedentemente determinati per determinare la funzione logica che implementa la tabella di verità di partenza.

Y: A B C + A B C

3) Si rappresenta la rete logica che implementa la funzione logica precedentemente determinata.

Circuito combinatorio di sintesi

Esercizi di Approfondimento:

Vengono in seguito riportati alcuni esercizi che possono essere facilmente eseguiti al fine di comprendere se i concetti presentati sono stati opportunamente acquisiti. Pertanto si chiede di determinare la rete combinatoria legata alle seguenti tabelle di verità:

  • Esercizio 1

A B C Y
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0

  • Esercizio 2

A B C Y
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0




ARDWARE #12 Analisi di Circuiti Logici – Circuito Combinatorio

Obiettivo: Imparare ad analizzare il comportamento di un circuito combinatorio costituito dalla connessione di più porte logiche.

Componenti elettronici:

  • Porte Logiche (i.e., AND, OR, e NOT)

TeoriaUn circuito combinatorio è costituito da una serie di porte logiche opportunamente collegate tra loro con l’obiettivo di implementare una specifica funzione logica.
E’ importante considerare che le reti logiche combinatorie sono quelle reti in cui lo stato d’uscita dipende solamente dal valore degli ingressi assunto in quel determinato istante.

Al fine di poter analizzare un circuito combinatorio è opportuno conoscere il funzionamento delle singole porte logiche che costituiscono il circuito stesso.


ARDWARE #3 Porta Logica NOT 74HC04



ARDWARE #5 Porta Logica OR 74HC32



ARDWARE #4 Porta Logica AND 74HC08


Viene in seguito riportato un esempio di circuito combinatorio. Tale circuito sarà analizzato considerando tutte le possibili combinazioni di valori assunti dai differenti input del sistema con l’obiettivo di determinarne la tabella di verità della rete logica combinatoria.
Nello specifico il circuito presenta tre differenti ingressi: l’ingresso A, l’ingresso B e l’ingresso C. Pertanto le possibili combinazioni di valore assunte dai vari input del sistema sono 8 (2 elevato alla terza).

Circuito Combinatorio

Viene in seguito riportata la tabella di verità con tutte le possibili combinazioni di valori assunte dall’ingresso. Compito dell’operazione di analisi è determinare il valore Y assunto per ogni specifico valore dell’ingresso.

A B C Y
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Come primo esempio sarà determinato il valore dell’uscita y quando A = 0, B = 0 e C = 0.

Circuito Combinatorio A = 0, B = 0, C = 0

Poichè l’ingresso della porta logica NOT1 risulta essere uguale a 0 il suo valore in uscita sarà pari ad 1. Le stesse considerazioni valgono per la porta logica NOT2. Considerando inoltre la tabella di verità della porta logica AND, l’uscita della porta logica AND1 risulterà essere uguale a 0 e di conseguenza anche l’uscita della porta logica AND2. In conclusione si può facilmente affermare che per l’ingresso A = 0, B = 0, C = 0, il valore dell’uscita Y è pari a 0.

Si analizzerà in seguito il valore dell’uscita per tutte le possibili combinazioni.

Circuito Combinatorio A = 0, B = 0, C = 1

Circuito Combinatorio A = 0, B = 1, C = 0

Circuito Combinatorio A = 0, B = 1, C = 1

Circuito Combinatorio A = 1, B = 0, C = 0

Circuito Combinatorio A = 1, B = 0, C = 1

Circuito Combinatorio A = 1, B = 1, C = 0

Circuito Combinatorio A = 1, B = 1, C = 1

Pertanto, dalla precedente analisi è facilmente determinabile la tabella di verità della suddetta rete logica

A B C Y
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0

Esercizi di Approfondimento

Vengono in seguito riportati alcuni esercizi che possono essere facilmente eseguiti al fine di comprendere se i concetti presentati sono stati opportunamente acquisiti. Pertanto si chiede di determinare le tabelle di verità delle seguenti reti combinatorie.

  • Esercizio 1

Esercizio 1

  • Esercizio 2

Esercizio 2

  • Esercizio 3

Esercizio 3




ARDWARE #11 Realizzare un SOMMATORE a 8 BIT

Obiettivo: Realizzare un SOMMATORE a 8 BIT utilizzando l’integrato 74H283. Un progetto realizzato dall’alunno della classe 1CSA del liceo Enrico Medi di Senigallia: Carlo Tozza.

Componenti elettronici:

  • Arduino
  • 8+8+9 led (utilizzati per visualizzare il valore dei due addenti e della somma risultante)
  • 16 interruttori a scorrimento (slideswitch utilizzati per gestire gli input)
  • 8+8+9 resistenze (100 Ohm) per non fare bruciare i LED
  • 2 circuito integrato 74HC283 (TTL serie)

TeoriaObiettivo di questa esperienza è realizzare un “SOMMATORE a 8 BIT” utilizzando il circuito integrato 74HC283. Nello specifico, Arduino è utilizzato come semplice generatore di tensione.

E” importante considerare che un “SOMMATORE a 8 BIT” può essere ottenuto come semplice composizione di SOMMATORI a 4 BIT.

Nello specifico, è importante considerare che un sommatore a 8 bit permette di effettuare somme con addendi che possono assumere un valore massimo decimale pari a 255.

Un esempio di somma a 8 bit è riportata in seguito.

8 7 6 5 4 3 2 1 0
Carry 1 1
A 1 0 0 0 0 0 1 1
B 0 1 1 0 1 0 0 1
Sum 1 1 1 0 1 1 0 0

In conclusione la somma di A: 10000011 e B:01101001 produce il seguente valore: 11101100.

Nell’esempio trattato in questo articolo, sono stati utilizzati 16 interruttori a scorrimento per gestire gli input del SOMMATORE a 8bit. Se l’interruttore è collegato ai 5 Volt l’input della porta logica è 1, differentemente se l’interruttore è collegato a 0 Volt l’input della porta logica è 0.

Collegamento Circuitale:

TINKERCAD:



E’ facilmente verificabile il comportamento del SOMMATORE a 8 bit modificando la posizione dei 16 differenti interruttori.

Codice:

Non serve codice.




ARDWARE #10 Realizzare un SOMMATORE a 4 BIT

Obiettivo: Realizzare un SOMMATORE a 4 BIT utilizzando l’integrato 74H283.

Componenti elettronici:

  • Arduino
  • 4+4+5 led (utilizzati per visualizzare il valore dei due addenti e della somma risultante)
  • 8 interruttori a scorrimento (slideswitch utilizzati per gestire i tre input)
  • 4+4+5 resistenze (100 Ohm) per non fare bruciare i LED
  • 1 circuito integrato 74HC283 (TTL serie)

TeoriaObiettivo di questa esperienza è realizzare un “SOMMATORE a 4 BIT” utilizzando il circuito integrato 74HC283. Nello specifico, Arduino è utilizzato come semplice generatore di tensione.

Un SOMMATORE a 4 bit è un dispositivo elettronico utilizzato per eseguire somme binarie. Tale dispositivo è realizzato mediante dispositivi FULL ADDER. Pertanto, al fine di comprendere il funzionamento di un “SOMMATORE BINARIO” si rimanda ad alcune delle lezioni precedentemente illustrate e utili a descrivere il comportamento dei circuiti logico-combinatori: HALF ADDER e FULL ADDER.

SOMMATORE BINARIO COME CASCATA DI FULL ADDER

Nelle precedenti lezioni, si è dimostrato come la somma di addendi con dimensione 1 bit possa essere eseguita mediante un FULL ADDER (un circuito elettronico che gestisce sia gli addendi A e B, sia un ipotetico riporto Cin).
Al fine di comprendere meglio il funzionamento di un sommatore binario a 4 bit si prenda in considerazione la seguente somma binaria riguardante due ipotetici addenti A e B caratterizzati dai seguenti valori:

A = 0011

B = 1001

Nello specifico è importante considerare che l’algoritmo utilizzato per eseguire la somma binaria è lo stesso tipicamente impiegato per eseguire somme decimali. Pertanto, dal bit meno significativo (il bit 0) verrà eseguita la somma parziale 1+1 la quale produce il seguente risultato: 10 (riporto: 1 e somma: 0).

4 3 2 1 0
Carry 1
A 0 0 1 1
B 1 0 0 1
Sum 0

A seguire, prendendo in considerazione il bit 1, verrà eseguita la somma parziale 1+1+0 la quale produce il seguente risultato: 10 (riporto: 1 e somma: 0).

4 3 2 1 0
Carry 1 1
A 0 0 1 1
B 1 0 0 1
Sum 0 0

Analogamente, prendendo in considerazione il bit 2, verrà eseguita la somma parziale 1+0+0 la quale produce il seguente risultato: 01 (riporto: 0 e somma: 1).

4 3 2 1 0
Carry 0 1 1
A 0 0 1 1
B 1 0 0 1
Sum 1 0 0

Infine, prendendo in considerazione il bit 3 (il bit più significativo), verrà eseguita la somma parziale 0+0+1 la quale produce il seguente risultato: 01 (riporto: 0 e somma: 1).

4 3 2 1 0
Carry 0 1 1
A 0 0 1 1
B 1 0 0 1
Sum 1 1 0 0

In conclusione la somma di A: 0011 e B:1001 produce il seguente valore: 1100.
Tuttavia, a prescindere dal risultato della somma, quello che si può facilmente notare è la gestione del carry (il riporto). Nello specifico esistono due tipologie di carry: il carry in uscita (ovvero il risultato dell’operazione) ed il carry in ingresso (uno degli addendi dell’operazione). Al termine di ogni singola sotto-operazione il carry in uscita diventa carry in ingresso per l’operazione successiva. Pertanto da un punto di vista elettronico un sommatore a 4 bit può essere facilmente realizzato come cascata di 4 FULL ADDER dove il carry in uscita di ogni singolo FULL ADDER è collegato direttamente al carry in ingresso del dispositivo successivo.

Viene riportato in seguito lo schema a blocchi di un SOMMATORE a 4 bit.

Sommatore a 4 bit

Nell’esempio trattato in questo articolo, sono stati utilizzati 8 interruttori a scorrimento per gestire gli input del SOMMATORE a 4bit. Se l’interruttore è collegato ai 5 Volt l’input della porta logica è 1, differentemente se l’interruttore è collegato a 0 Volt l’input della porta logica è 0.

Collegamento Circuitale:

TINKERCAD:



E’ facilmente verificabile il comportamento del SOMMATORE a 4 bit modificando la posizione degli 8 differenti interruttori.

Codice:

Non serve codice.




ARDWARE #9 Realizzare un FULL ADDER come combinazione di HALF ADDER

Obiettivo: Realizzare un FULL ADDER come combinazione di HALF ADDER

Componenti elettronici:

  • Arduino
  • 2 led (un led rosso per la somma ed un led verde per il riporto)
  • 3 interruttori a scorrimento (slideswitch utilizzati per gestire i tre input)
  • 2 resistenze (100 Ohm) per non fare bruciare i LED
  • 1 circuito integrato 74HC08 (TTL serie)
  • 1 circuito integrato 74HC32 (TTL serie)
  • 1 circuito integrato 74HC86 (TTL serie)

TeoriaObiettivo di questa esperienza è realizzare un “FULL ADDER” utilizzando porte logiche AND (74HC08), XOR (74HC86) e OR (74HC32). Nello specifico, Arduino è utilizzato come semplice generatore di tensione.

Un FULL ADDER è un sommatore binario realizzato attraverso la logica booleana. Nel caso specifico, questo sommatore rappresenta un evoluzione del semplice HALF ADDER presentando tre ingressi: A, B, Cin e due uscite: S (la somma di A + B + Cin) e Cout (il riporto della somma di A + B + Cin). A differenza di un HALF ADDER, il quale presenta due soli input (A e B), il FULL ADDER permette di eseguire operazioni reali che tengono in considerazione anche il riporto ottenuto da una precedente somma. Un FULL ADDER può essere ottenuto come combinazione di due HALF ADDER e di una porta logica OR. Pertanto, le principali operazioni logiche che implementano questo dispositivo sono 3: AND (prodotto logico), OR (somma logica) e XOR. Viene in seguito illustrato nel dettaglio il funzionamento di un FULL ADDER.

HALF ADDER – TABELLA DI VERITA’

La tabella di verità di un FULL ADDER può essere facilmente ottenuta sommando i tre ingressi A, B e Cin. La presenza dell’ingresso Cin è l’elemento fondamentale che contraddistingue un FULL ADDER da un HALF ADDER:

A B Cin Cout S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

HALF ADDER – SIMBOLO CIRCUITALE

Da un punto di vista grafico il dispositivo FULL ADDER è rappresentato mediante il seguente simbolo:

F-ullv Adder – Simbolo circuitale

FULL ADDER COMME COMBINAZIONE DI HALF ADDER

Osservando la tabella di verità si può comprendere come sia possibile utilizzare due HALF ADDER per ottenere un FULL ADDER.

Nello specifico

Schema circuitale di un FULL ADDER

Schema Circuitale di un FULL ADDER a porte logiche

Nell’esempio trattato in questo articolo, sono stati utilizzati tre interruttori a scorrimento per gestire gli input del dispositivo FULL ADDER. Se l’interruttore è collegato ai 5 Volt l’input della porta logica è 1, differentemente se l’interruttore è collegato a 0 Volt l’input della porta logica è 0.

Collegamento Circuitale:

Circuito Elettrico di un FULL ADDER

TINKERCAD:



E’ facilmente verificabile il comportamento del dispositivo FULL ADDER modificando la posizione dei tre differenti interruttori.

Codice:

Non serve codice.




ARDWARE #8 Realizzare un HALF ADDER a Porte Logiche AND e XOR

Obiettivo: Realizzare un Half Adder utilizzando le porte logiche AND e XOR.

Pre-Requisiti:


ARDWARE #6 Porta Logica XOR 74HC86


Componenti elettronici:

  • Arduino
  • 2 led (un led rosso per la somma ed un led verde per il riporto)
  • 2 interruttori a scorrimento (slideswitch utilizzati per gestire i due input)
  • 2 resistenze (100 Ohm) per non fare bruciare i LED
  • 1 circuito integrato 74HC86 (TTL serie)
  • 1 circuito integrato 74HC86 (TTL serie)

TeoriaObiettivo di questa esperienza è realizzare un “Half Adder” utilizzando porte logiche AND (74HC08) e porte logiche XOR (74HC86). Nello specifico, Arduino è utilizzato come semplice generatore di tensione.

Un Half Adder è un sommatore binario realizzato attraverso la logica booleana. Nel caso specifico, questo sommatore presenta due ingressi: A e B e due uscite: S (la somma di A e B) e C (il riporto della somma di A e B). Le principali operazioni logiche che implementano questo dispositivo sono 2: AND (prodotto logico) e XOR. Viene in seguito illustrato nel dettaglio il funzionamento di un Half Adder.

HALF ADDER – TABELLA DI VERITA’

La tabella di verità di un HALF ADDER può essere facilmente ottenuta sommando i due ingressi A e B. Ovviamente, poiché la somma di 1+1 in binario da come risultato 10 è importante considerare che tale dispositivo prevederà la presenza di due uscite: carry (riporto) e sum (somma senza riporto). Partendo da queste importanti considerazioni, è riportata in seguito la tabella di verità di un HALF ADDER a due ingressi:

A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

HALF ADDER – SIMBOLO CIRCUITALE

Da un punto di vista grafico il dispositivo HALF ADDER è rappresentato mediante il seguente simbolo:

Half Adder – Simbolo circuitale

HALF ADDER – SOMMA DI PRODOTTI

Osservando la tabella di verità si può facilmente comprendere come la colonna del carry è facilmente ottenibile mediante una semplice porta logica AND. Differentemente la colonna della somma è ottenuta sfruttando una porta logica XOR.

Nello specifico

Nell’esempio trattato in questo articolo, sono stati utilizzati due interruttori a scorrimento per gestire gli input del dispositivo half adder. Se l’interruttore è collegato ai 5 Volt l’input della porta logica è 1, differentemente se l’interruttore è collegato a 0 Volt l’input della porta logica è 0.

Collegamento Circuitale:

TINKERCAD:



E’ facilmente verificabile il comportamento del dispositivo HALF ADDER modificando la posizione dei due differenti interruttori.

Codice:

Non serve codice.




ARDWARE #7 Realizzare un HALF ADDER a Porte Logiche AND, OR e NOT

Obiettivo: Realizzare un Half Adder utilizzando le porte logiche AND, OR e NOT.

Componenti elettronici:

  • Arduino
  • 2 led (un led rosso per la somma ed un led verde per il riporto)
  • 2 interruttori a scorrimento (slideswitch utilizzati per gestire i due input)
  • 2 resistenze (100 Ohm) per non fare bruciare i LED
  • 1 circuito integrato 74HC32 (TTL serie)
  • 1 circuito integrato 74HC08 (TTL serie)
  • 1 circuito integrato 74HC04 (TTL serie)

TeoriaObiettivo di questa esperienza è realizzare un “Half Adder” utilizzando porte logiche AND (74HC08), porte logiche OR (74HC32) e porte logiche NOT (74HC04). Nello specifico, Arduino è utilizzato come semplice generatore di tensione.

Un Half Adder è un sommatore binario realizzato attraverso la logica booleana. Nel caso specifico, questo sommatore presenta due ingressi: A e B e due uscite S (la somma di A e B) e C (il riporto della somma di A e B). Le principali operazioni logiche che implementano questo dispositivo sono 3: AND (prodotto logico), OR (somma logica), NOT (complemento). Viene in seguito illustrato nel dettaglio il funzionamento di un Half Adder.

HALF ADDER – TABELLA DI VERITA’

La tabella di verità di un HALF ADDER può essere facilmente ottenuta sommando i due ingressi A e B. Ovviamente, poiché la somma di 1+1 in binario da come risultato 10 è importante considerare che tale dispositivo prevederà la presenza di due uscite: carry (riporto) e sum (somma senza riporto). Partendo da queste importanti considerazioni, è riportata in seguito la tabella di verità di un HALF ADDER a due ingressi:

A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

HALF ADDER – SIMBOLO CIRCUITALE

Da un punto di vista grafico il dispositivo HALF ADDER è rappresentato mediante il seguente simbolo:

Half Adder – Simbolo circuitale

HALF ADDER – SOMMA DI PRODOTTI

Utilizzando la tecnica della Somma di Prodotti (SOP) è possibile sintetizzare un HALF ADDER mediante porte logiche AND, OR e NOT.

Nello specifico la colonna del carry è facilmente ottenibile mediante una semplice porta logica AND. Differentemente la colonna della somma senza riporto è ottenuta sfruttando porte logiche NOT, AND e OR.

Half Adder – Schema circuitale

Nell’esempio trattato in questo articolo, sono stati utilizzati due interruttori a scorrimento per gestire gli input del dispositivo half adder. Se l’interruttore è collegato ai 5 Volt l’input della porta logica è 1, differentemente se l’interruttore è collegato a 0 Volt l’input della porta logica è 0.

Collegamento Circuitale:

E’ facilmente verificabile il comportamento del dispositivo HALF ADDER modificando la posizione dei due differenti interruttori.

Codice:

Non serve codice.




ARDWARE #6 Porta Logica XOR 74HC86

Obiettivo: Utilizzare la porta logica XOR (74HC86)

Componenti elettronici:

  • Arduino
  • 1 led
  • 2 interruttori a scorrimento (slideswitch)
  • 1 resistenza (100 Ohm) per non fare bruciare il LED
  • 1 circuito integrato 74HC86 (TTL serie)

TeoriaObiettivo di questa esperienza è imparare ad utilizzare una porta logica XOR (74HC86) utilizzando degli interruttori e Arduino come semplice generatore di tensione.

La logica booleana rappresenta quel ramo dell’algebra in cui le variabili possono assumere solamente due valori: vero e falso (valori che nelle discipline elettroniche diventano 1 e 0). Le principali operazioni logiche sono 3: AND (prodotto logico), OR (somma logica), NOT (complemento). Tuttavia esistono anche altre porte logiche minori che trovano applicazione in alcuni campi dell’elettronica. Queste porte sono NAND, NOR, XOR. In seguito viene illustrato nel dettaglio il funzionamento di una porta logica XOR.

XOR – TABELLA DI VERITA’

L’operazione XOR restituisce come valore 1 solo se gli input hanno un valore tra loro differente. Tale operazione è anche detta somma senza riporto. In seguito è riportata la tabella di verità dell’operatore XOR nel caso di due entrate:

A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

XOR – SIMBOLO CIRCUITALE

Da un punto di vista grafico la porta XOR è rappresentata mediante il seguente simbolo:

XOR Simbolo circuitale

OR – CIRCUITO INTEGRATO (74HC32)

Da un punto di vista elettronico le operazioni logiche sono implementate grazie all’utilizzo di un circuito integrato. A seguire viene riportata una porzione del datasheet dell’integrato 74HC86 utilizzato per realizzare l’operazione logica XOR.

Questo circuito integrato permette di utilizzare 4 differenti porte logiche. Per funzionare deve essere alimentato a 5 volt. Nel dettaglio, il pin 14 deve essere collegato a VCC mentre il pin 7 al ground (GND). I pin 1-2, 4-5, 10-9, e 12-13 rappresentano gli input delle porte logiche, mentre i pin 3, 6, 8, 11 gli output.

Nell’esempio trattato in questo articolo, è stato utilizzato un interruttori a scorrimento per gestire l’input della porta logica. Se l’interruttore è collegato ai 5 Volt l’input della porta logica è 1, differentemente se l’interruttore è collegato a 0 Volt l’input della porta logica è 0.

Collegamento Circuitale:

E’ facilmente verificabile il comportamento della porta logica XOR modificando la posizione dei due differenti interruttori.

Tinkercad:



Codice:

Non serve codice.

Osservazioni:

  1. Prova a realizzare reti combinatorie con più porte logiche XOR