# Informatica 2 Liceo Scientifico Scienze Applicate/Programmazione Imperativa

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

## Programmazione Imperativa

La programmazione imperativa o procedurale e' quella che noi affronteremo usando il C, essa prevede di impartire una serie di comandi che la macchina esegue risolvendo così un problema, gli elementi tipici di questa programmazione ruotano attorno ai concetti di: assegnazione, ordine sequenziale di esecuzione, diramazione nell'ordine di esecuzione delle istruzioni, ripetizione dei comandi, uso di procedure. Esistono anche altri tipi di programmazione ad esempio quella ad oggetti ( C++, Java, C# etc) che e' quella che oggi si e' affermata specie nello sviluppo di programmi complessi, poi c'e quella di tipo logica (Prolog ,SQL) in cui noi non scriviamo il programma risolutivo ma specifichiamo solo una base di dati e stabiliamo i legami logici fra gli stessi e poi poniamo delle interrogazioni a cui il "compilatore" darà risposta.E poi c'e' quella funzionale legata a linguaggi storici come LISP etc, in cui la centralita' sono le funzioni.
Spesso per far capire cos'e' un programma si ricorda agli studenti come si prepara la torta della zia Cecilia :
* prendo gli ingredienti
* peso 400 grammi di farina
* mescolo la farina con 3 uova e un cucchiaio di burro
* aggiungo 100 grammi di zucchero
* mescolo per 20 volte l'impasto
* se e' troppo denso aggiungo un po' di latte altrimenti 2 cucchiai di nutella
* lascio lievitare per 20 minuti
* metto nello stampo
* cucino a 200 gradi per 3 ore
* e finalmente la torta e' pronta e la si regala a qualche parente
ora a parte il non fidarsi della ricetta, che e' chiaramente giustificato, si nota che la preparazione del dolce e' molto vicina alla struttura di un programma in C, vediamo le analogie:
* in entrambi i casi (ricetta per preparare un dolce e programma di tipo imperativo) si tratta di eseguire una sequenza di istruzioni, l'esecuzione sequenziale delle istruzioni nella programmazione imperativa e' un suo tratto distintivo
Esecuzione sequenziale significa che le istruzioni vengono eseguite una dopo l'altra.
* poi notiamo il "se e' troppo denso aggiungo un po' di latte altrimenti 2 cucchiai di nutella" questo comando e' inserito nella struttura sequenziale di esecuzione delle istruzioni ma la condizione "se e' troppo denso" permette di decidere se aggiungere il latte o in alternativa la nutella, in questo caso si parla di istruzione di scelta, il flusso di esecuzione del programma, cioe' l'ordine con cui vengono eseguite le istruzioni presenta in questo punto una diramazione che durante l'esecuzione del programma sarà risolto procedendo con le istruzioni del blocco vero(yes) o del blocco falso(no)
dal disegno vediamo che si vengono a delineare 2 possibili percorsi (alternativi fra di loro in fase di esecuzione), se la spesa e' maggiore di 50 euro si ha uno sconto del 10% altrimenti uno del 5%, si noti che dopo la diramazione il flusso si ricongiunge alla fine dei due tratti che sono in alternativa fra loro.la possibilita' di istruzioni di scelta/diramazioni (sono 2 aspetti della stessa istruzione) e' il secondo tratto caratteristico dei programmi in C e della ricetta
alcune volte e' comodo, invece di scrivere piu' volte lo stesso comando, farlo ripetere un certo numero di volte, "mescolo per 20 volte l'impasto", l'istruzione di ripetizione e' il terzo elemento in comune con la programmazione in C
in questa immagine le istruzioni in giallo vengono ripetute 10 volte, c'e' una variabile che si chiama conta che inizialmente vale 1 e poi dopo ogni ripetizione viene incrementata di un'unita'. Il blocco a forma di rombo controlla ogni volta se conta e' minore o uguale a 10, se la condizione e' verificata le istruzioni in giallo sono ripetute e la variabile conta viene incrementata, se la condizione risulta falsa si termina l'istruzione ciclica e si passa alle istruzioni successive (non presenti nel disegno).
Per quanto riguarda l'assegnazione consiste nell'attribuire a una variabile il valore di una espressione (magari anche molto semplice) ad esempio se scrivo a=7+2; prima viene risolta l'espressione a destra dell'operatore di assegnazione (simbolo =), e una volta che e' stato possibile calcolare il risultato questo viene caricato nella variabile messa a sinistra dell'operatore di assegnazione.Un esempio piu' semplice è
b=7; e uno piu' reale è a=12; b=a+1; c=a*b/2;
in cui ho 3 assegnazioni, state attenti che l'istruzione di assegnazione viene risolta in due fasi temporali distinte, per evidenziare questo concetto pensiamo che a=2; e impartiamo il comando a=a+1; in matematica questa espressione non ha senso, non dovete confondere l'assegnazione (del C) con l'uguaglianza matematica fra 2 espressioni.Dico 2 fasi temporali perché la variabile a ha un primo valore (2)durante la valutazione delle espressione a destra dell'operatore di uguaglianza, per poi assumere il valore 3 quando il valore dell'espressione valutato viene trasferito in a. attenzione poi che 3=a; e' un errore, a sinistra dell'operatore ci va sempre una singola variabile.