# Informatica 2 Liceo Scientifico Scienze Applicate/Operatori Logici

Informatica 2 Liceo Scientifico Scienze Applicate
Copertina Tutti i moduli · Sviluppo
* Linguaggi di programmazioneInformatica 2 Liceo Scientifico Scienze Applicate/Linguaggi di programmazione
* Compilare un programmaInformatica 2 Liceo Scientifico Scienze Applicate/Compilare un programma
* CiaoMondoInformatica 2 Liceo Scientifico Scienze Applicate/CiaoMondo
* AreaRettangoloInformatica 2 Liceo Scientifico Scienze Applicate/AreaRettangolo
* AreaTrapezioInformatica 2 Liceo Scientifico Scienze Applicate/AreaTrapezio
** Compito1Informatica 2 Liceo Scientifico Scienze Applicate/Compito1
* Programmazione ImperativaInformatica 2 Liceo Scientifico Scienze Applicate/Programmazione Imperativa
* Diagrammi di FlussoInformatica 2 Liceo Scientifico Scienze Applicate/Diagrammi di Flusso
* Operatori AritmeticiInformatica 2 Liceo Scientifico Scienze Applicate/Operatori Aritmetici
* Istruzione ifInformatica 2 Liceo Scientifico Scienze Applicate/Istruzione if
** Esercizio Equazione 2^ gradoInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio Equazione 2^ grado
** Esercizio Calcola lo ScontoInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio Calcola lo Sconto
** Esercizio Calcola lo Sconto2Informatica 2 Liceo Scientifico Scienze Applicate/Esercizio Calcola lo Sconto2
* Operatori LogiciInformatica 2 Liceo Scientifico Scienze Applicate/Operatori Logici
** Esercizio x interno all'intervalloInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio x interno all'intervallo
** Esercizio x esterno all'intervalloInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio x esterno all'intervallo
* Istruzione switchInformatica 2 Liceo Scientifico Scienze Applicate/Istruzione switch
** Esercizio Scelta EquazioneInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio Scelta Equazione
* Altre Istruzioni di Scelta o DiramazioneInformatica 2 Liceo Scientifico Scienze Applicate/Altre Istruzioni di Scelta o Diramazione
* Istruzioni di RipetizioneInformatica 2 Liceo Scientifico Scienze Applicate/Istruzioni di Ripetizione
** Es (do-while) Indovina il numeroInformatica 2 Liceo Scientifico Scienze Applicate/Es (do-while) Indovina il numero
** Es (while) La nonna è stancaInformatica 2 Liceo Scientifico Scienze Applicate/Es (while) La nonna è stanca
** Es (for) Somma di 5 numeriInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Somma di 5 numeri
** Es (for) Analisi sequenza datiInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Analisi sequenza dati
** Es (for) Sequenze NumericheInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Sequenze Numeriche
** Es (for) SupermarketInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Supermarket
** Es (while) Bisca ClandestinaInformatica 2 Liceo Scientifico Scienze Applicate/Es (while) Bisca Clandestina
* Compito2Informatica 2 Liceo Scientifico Scienze Applicate/Compito2
* I vettoriInformatica 2 Liceo Scientifico Scienze Applicate/I vettori
** Es Usiamo i vettoriInformatica 2 Liceo Scientifico Scienze Applicate/Es Usiamo i vettori
** Es2 Usiamo i vettoriInformatica 2 Liceo Scientifico Scienze Applicate/Es2 Usiamo i vettori
** Es3 Supermarket con vettoriInformatica 2 Liceo Scientifico Scienze Applicate/Es3 Supermarket con vettori
** Compito dic 2019Informatica 2 Liceo Scientifico Scienze Applicate/Compito dic 2019
** BubbleSortInformatica 2 Liceo Scientifico Scienze Applicate/BubbleSort
** Ricerca DicotomicaInformatica 2 Liceo Scientifico Scienze Applicate/Ricerca Dicotomica
* Matrici e ArrayInformatica 2 Liceo Scientifico Scienze Applicate/Matrici e Array
** Es matrici battaglia navaleInformatica 2 Liceo Scientifico Scienze Applicate/Es matrici battaglia navale
** Es matrici 1Informatica 2 Liceo Scientifico Scienze Applicate/Es matrici 1
** Es matrici 2Informatica 2 Liceo Scientifico Scienze Applicate/Es matrici 2
* PuntatoriInformatica 2 Liceo Scientifico Scienze Applicate/Puntatori
* StructInformatica 2 Liceo Scientifico Scienze Applicate/Struct
** Es Bubble Sort con StructInformatica 2 Liceo Scientifico Scienze Applicate/Es Bubble Sort con Struct
* FunzioniInformatica 2 Liceo Scientifico Scienze Applicate/Funzioni
* Funzioni Void e non VoidInformatica 2 Liceo Scientifico Scienze Applicate/Funzioni Void e non Void
** esercizi1 funzioniInformatica 2 Liceo Scientifico Scienze Applicate/esercizi1 funzioni
** esercizi2 funzioniInformatica 2 Liceo Scientifico Scienze Applicate/esercizi2 funzioni
** esercizi3 funzioniInformatica 2 Liceo Scientifico Scienze Applicate/esercizi3 funzioni
* BacktrackingInformatica 2 Liceo Scientifico Scienze Applicate/Backtracking
* TemplateInformatica 2 Liceo Scientifico Scienze Applicate/Template
* FileInformatica 2 Liceo Scientifico Scienze Applicate/File
** File di TestoInformatica 2 Liceo Scientifico Scienze Applicate/File di Testo
** File BinariInformatica 2 Liceo Scientifico Scienze Applicate/File Binari
** File RecordsInformatica 2 Liceo Scientifico Scienze Applicate/File Records
** Es FilesInformatica 2 Liceo Scientifico Scienze Applicate/Es Files
* Esercizi VacanzeInformatica 2 Liceo Scientifico Scienze Applicate/Esercizi Vacanze
** Esercizi1Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi1
** Esercizi2Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi2
** Esercizi3Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi3
* Olimpiadi Informatica
** NobileChimicoInformatica 2 Liceo Scientifico Scienze Applicate/NobileChimico
** Sunnydale
** MappaAnticaInformatica 2 Liceo Scientifico Scienze Applicate/MappaAntica
Modifica il sommario

## Gli operatori Logici

Quando si devono scrivere delle condizioni logiche possiamo usare gli operatori di confronto <,<=,>,>=,==,!= per poter però costruire delle condizioni logiche piu' complesse dobbiamo usare gli operatori logici AND,OR,NOT.
Pensiamo alla situazione di dover trovare un fidanzato, Maria dice io voglio un fidanzato bello, Elena interviene e dice io voglio un fidanzato bello ma anche intelligente, Mattia dice invece io la fidanzata la voglio carina o simpatica ( mi va bene anche se e' carina e simpatica contemporaneamente ,e i compagni ridono), Luca dice io la fidanzata non la voglio bassa perché io sono alto un metro e 90, francesco che interviene per ultimo dice io la voglio bella ricca e famosa e stefano ribatte dicendo guarda che Belen e' gia' impegnata con me .
Ora se analizziamo le singole condizioni troviamo che
* per Maria deve essere aspetto == bello
* per Elena deve essere aspetto == bello e contemporaneamente cervello == intelligente
* per Luca non deve essere bassa cioè non statura==bassa
* per Mattia deve essere aspetto == carina oppure carattere=simpatica , in questo caso l'oppure e' da intendersi come carina e/o simpatica
* per Francesco deve essere aspetto == carina e contemporaneamente statosociale == ricca e contemporaneamente popolarita'== famosa
Ora queste condizioni risultano piu' complesse perché date dall'unione di piu' condizioni logiche o dalla negazione di una condizione logica. L'operatore AND serve per congiungere piu' condizioni logiche fra loro, imponendo che tutte siano verificate perché la condizione complessiva sia verificata.
L'operatore OR serve per disgiungere piu' condizioni logiche fra loro, imponendo che basta che una delle condizioni sia verificata perché la condizione complessiva sia verificata.
L'operatore NOT serve per negare una condizione, la condizione negata ribalta la condizione di partenza (se e' true diventa false e viceversa)
Proviamo quindi a scrivere le condizioni per trovare la fidanzata usando questi nuovi operatori, L'AND nel C ha come simbolo il && l'OR ha come simbolo || e il NOT ha come simbolo il ! .
* per Maria visto che c'e' una sola condizione basta scrivere (aspetto=="bello")
* per Elena visto che ci sono 2 condizioni che devono essere verificate contemporaneamente uso l'operatore di congiunzione, e ho (aspetto=="bello") && (cervello=="intelligente")
* per Luca la condizione e' singola e negata allora ho !(statura=="bassa")
* per Mattai le condizioni sono 2 ma basta che una sola delle 2 sia verificata perché la condizione complessiva sia accettata (vera) allora ho (aspetto=="carina") || (carattere=="simpatica")
* per Francesco le condizioni sono 3 e si vuole che tutte siano vere, allora scrivo (aspetto="carina") && (statosociale=="ricca") && (popolarità=="famosa")
Mentre per un informatico un valore booleano e' un valore true/false cioe' vero o falso per un elettronico un valore booleano e' 0/1 zero rappresenta assenza di tensione/corrente e uno rappresenta presenza di tensione/corrente nel circuito, e per esprimere il comportamento degli operatori AND OR e NOT si utilizzano delle tabelle dette tabelle di verita', vediamole,
il simbolo A rappresenta la prima condizione e il simbolo B la seconda condizione
Vediamo la tabella di verita' del AND il cui simbolo nel C è &&
l'operatore && e' binario cioe' lavora su due operandi (le espressioni logiche A e B)
| A | B | A&&B |
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
nelle prime 2 colonne si sono scritte tutte le possibili condizioni che possono capitare, si nota che perché sia verificata la condizione complessiva A&&B bisogna che entrambe le condizioni A e B siano verificate, o detto in modo diverso basta che una delle due sia falsa perché la condizione complessiva sia false.Quando c'e' da valutare 2 o piu' condizioni unite fra loro dall'operatore && (AND) il C si ferma alla prima delle condizioni che trova falsa, senza valutare le successive. Qualche volta si congiungono anche piu' di 2 condizioni con l'operatore &&, si parla allora di AND multiplo e visto che basta che una condizione sia falsa perchéla condizione complessiva sia falsa, se devo calcolare A && B && C && D il linguaggio C procede in questo modo : guarda prima A se questa risulta falsa non valuta le condizioni successive perché sa gia' che il risultato complessivo sarà falso, se invece A e' vero non puo' ancora stabilire il risultato complessivo e deve andare a valutare anche la condizione B e se questa e' vera anche la condizione successiva C e così via.Nel caso quindi di and multiplo il C si ferma alla prima condizione falsa che trova non valutando quelle successive . Questo risulta utile se dobbiamo verificare se n/m sia maggiore di 5, la divisione n/m e' calcolabile infatti solo se m e' diverso da zero e allora io scrivo (m!=0)&&(n/m>5) perché per poter dividere per m devo prima assicurami che sia diverso da zero, se lo fosse non voglio calcolare n/m perché l'operazione non e' possibile e se eseguita produce un errore Division By zero che comporta l'immediata interruzione del programma.
Vediamo la tabella di verita' del OR il cui simbolo nel C è ||
l'operatore || e' binario cioe' lavora su due operandi (le espressioni logiche A e B)
| A | B | A||B |
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
nelle prime 2 colonne si sono scritte tutte le possibili condizioni che possono capitare, si nota che perché sia verificata la condizione complessiva A||B basta che almeno una delle conzioni sia verificata perché sia la condizione complessiva true, e viceversa bisogna che tutte le condizioni siano false perché la condizione complessiva sia falsa.
Vediamo la tabella di verita' del NOT il cui simbolo nel C è !
l'operatore ! e' unario cioe' lavora su un solo operando (le espressione logica A)
| A | !A |
| true | false |
| false | true |
L'operatore ! (NOT) inverte la condizione logica cioè la nega, si può scrivere la stessa condizione in modi diversi ad esempio la condizione la fidanzata deve essere alta la posso anche scrivere come la fidanzata non deve essere bassa, state attenti generalmente che è preferibile la prima espressione perché più chiara. Tutti i circuiti elettronici al loro interno contengono migliaia di componenti detti porte logiche che individualmente realizzano la funzione AND, OR, NOT. Gli elettronici studiano una particolare matematica detta algebra di Boole (L'inventore della notazione e delle sue proprietà) che permette data una funzione (con variabili di tipo binario) di trovarne l'equivalente circuitale mediante port AND, porte OR e porte NOT Gli elettronici che per rappresentare il valore true usano il numero binario 1 e per rappresentare false usano lo 0, pensano all'and come a un prodotto e pensano all'or come a una addizione (binaria).Le tabelle AND OR NOT le potete trovare anche nei libri di elettronica scritte nella seguente forma:
| Porta AND | Porta OR | Testo del titolo |
| Porta AND | Porta OR | Porta NOT |
| A B A AND B 1 1 1 1 0 0 0 1 0 0 0 0 | A B A OR B 1 1 1 1 0 1 0 1 1 0 0 0 | A NOT A 0 1 1 0 |
| Pensiamo ora alla matematica spesso si vuole verificare se un numero appartiene o meno a un certo intervallo, |
| Punto interno a un intervallo, punto esterno a un intervallo |
| ad esempio scrivendo $x\in [a,b[$ si intende che il punto x appartiene all'intervallo $[a,b[$ dove il punto a appartiene all'intervallo e b invece ne e' escluso, scritto in altra forma $a\leqslant x<b$ Se la condizione fosse $2\leqslant x<7$ allora la condizione e' composta da due condizioni che devono valere contemporaneamente, si deve allora usare l'operatore di congiunzione (2<=x)&&(x<7) Se mi interessa sapere se il punto non e' nell'intervallo $[2,7[$ allora la condizione e' quella opposta a quella precedentemente scritta cioe devo negare la condizione opposta cioe' !((2<=x)&&(x<7)) Un punto che non e' nell'intervallo $[2,7[$ è un punto esterno allo stesso cioe' o e' nell'intervallo $]-\infty ,2[$ oppure nell'intervallo $[7,+\infty [$ , mi basta che una delle due sia verificata e la condizione diventa allora (x<2) | (x>=7) |