# Informatica 2 Liceo Scientifico Scienze Applicate/Altre Istruzioni di Scelta o Diramazione

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

## Operatore ? e istruzioni goto

Le istruzioni di scelta/diramazione sono 4, due sono state analizzate if e switch, mancano il famoso operatore ternario ? (si proprio il punto di domanda) e l'istruzione goto.
Vediamo la sintassi dell'operatore ternario ?
(condizionelogica)?(espressionecasovero):(espressionecasofalso)
in pratica l'operatore ? restituisce a seconda che la condizione sia true o false il valore del risultato dell'espressionecasovero o dell'espressionecasofalso.
z=(a>3)?7:9;
* se a>3 e' true allora ? restituisce il numero 7 che viene trasferito nella variabile z, altrimenti
* se a<3 e' false allora ? restituisce il numero 9 che viene trasferito nella variabile z,
nulla vieta che il comando possa assumere la forma parola=(a>3)?"Luca":"Marco"; oppure k=(a%2)?-a:a*a; pensiamo a e k di tipo intero, valutiamo la condizione a%2 cioe' il resto della divisione a/2, il resto se vale zero viene interpretato come falso, se invece il resto vale 1 viene interpretato coe vero, ora se la condizione vale true(numero a dispari) carico in z il valore -a, se la condizione vale false(numero a pari) carico in z il valore a*a.
il ? e' una forma compatta per scrivere un if a due vie in cui viene dato a una stessa variabile due possibili valori. quindi z=(a>3)?7:9; poteva (in modo sicuramente piu' comprensibile) essere scritto come
il vantaggio del ? e' la compattezza del comando e la possibilita' di non dover dichiarare la variabile z se il ? viene combinato in una espressione di calcolo .
Ricordatevi comunque che ? e' il solo operatore ternario

## Istruzione goto

L'istruzione goto e' bellissima e internamente al programma che si scrive utilizzata spessisimo, ha il brutto difetto/vantaggio di consentire un salto incondizionato nell'ordine di esecuzione delle istruzioni.Nel passato era utilizzata molto spesso dai programmatori ma tende a rendere difficile lo studio del codice (cioe' capire come si evolve l'esecuzione delle istruzioni in un programma) destrutturando il codice, per questo motivo e' stata messa al bando (specie durante i corsi di programmazione).Si puo' scrivere un qualsiasi programma senza utilizzarla direttamente (sotto il cofano del programma il goto continua a ruggire) mantenendo semplice e chiara la struttura del programma.
Naturalmente puo' capitare per questioni di velocità nella scrittura dei programmi (specie durante le Olimpiadi Informatica) di doverla usare, vediamo come funziona:
Ho omesso quando ho parlato delle istruzioni in C che davanti ad ogni istruzione e' possibile scrivere una label (etichetta /fermaposto), una volta queste label erano solo numeriche ma poi sono diventate alfanumeriche, posso scrivere allora:
non e' detto che si debba mettere una etichetta davanti a ogni istruzione, va fatto quando serve.Le etichette da sole al pari dei commenti non influenzano il programma.
facciamo un esempio
ora queste istruzioni impostano la variabile k a 1 e stampano la scritta ciao una volta,l'etichetta saltaqua e' per ora ininfluente, io ora vorrei stampare la scritta ciao per 10 volte, modifico il codice in questo modo
l'istruzione goto saltaqua; quando eseguita sposta l'esecuzione delle istruzioni a quella scritta in corrispondenza dell'etichetta saltaqua.Nel nostro caso prima pongo k=1, poi stampo ciao, incremento k di uno (passa a 2), poi eseguo l'if la condizione e' verificata e allora l'istruzione goto saltaqua fa proseguire l'esecuzione dall'istruzione cout (che e' in corrispondenza dell'etichetta saltaqua), stampo per la 2^ volta la scritta ciao e la cosa si ripete .... dopo aver stampato per 10 volte la scritta ciao (nel frattempo l'istruzione goto ha spostato per 9 volte l'esecuzione a saltaqua) k assume il valore 11, la condizione del if diventa false, l'istruzione goto non viene eseguita e si passa all'istruzionesuccessiva;
Il goto e' una istruzione di salto incondizionato che sebbene utile e potente noi non useremo nei nostri programmi (a meno che non siate alle olimpiadi).