# Informatica 2 Liceo Scientifico Scienze Applicate/Compito1

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

### Descrivi le fasi della compilazione (Indica nella spiegazione anche il ruolo della tabella ascii)

Nello svolgimento di questa domanda viene commesso il seguente errore:
Si pensa che la codifica ascii sia il codice macchina prodotto dalla compilazione. Spieghiamo meglio le cose: tutte le informazioni su un computer sono dei file binari, cioe' lunghe sequenze di 0 e 1 del tipo:
01010010100100100101001010010010100000100101111100101010100100101001010100101 Quindi un file nomefile.mp3, un file nomefile.txt, un file nomefile.c, un file nomefile.doc , un file nomefile.divx, un file nomefile.exe, un file nomefile.obj etc
sono tutti file binari (o detti digitali ).Quello che cambia in funzione dell'estensione del file (txt exe mp3 etc) e la codifica usata per rappresentare informazioni di quel tipo. Quindi in un file di tipo txt la codifica utilizzata e' sintetizzata dalla tabella ascii cioe' ogni carattere diventa una sequenza particolare di 8 bit . Viceversa se vogliamo dato un file di tipo txt scoprire cosa c'e' scritto dentro dobbiamo dividerlo in gruppi di otto bit e per ogni sequenza trovare il carattere corrispondente. Quando prendiamo un file con estensione C la codifica e' ASCII come in un file di tipo txt e i caratteri corrispondenti rappresentano i comandi in linguaggio C del nostro programma. La codifica non e' la codifica in linguaggio macchina che funziona in modo diverso. Il compilatore prende il file con estensione C, usa la tabella ASCII per decodificarlo nei comandi testuali in linguaggio C e dopo aver controllato che non ci siano errori sintattici incomincia a tradurre ciascun comando in comandi in linguaggio macchina che salva sul nostro file prima con estensione .OBJ e poi in quello .EXE Nel linguaggio macchina ad esempio la codifica funziona in questo modo: ogni comando in linguaggio macchina e' una sequenza di 32 bit e questi 32 bit hanno il seguente significato
seq binaria comando ling macchina 000000 00001 00010 00110 00000 100000
i primi 6 bit indicano il tipo di operazione
i successivi 5 bit il primo registro coinvolto
i successivi 5 bit un secondo registro coinvolto
i rimanenti 16 bit l'indirizzo di una cella di memoria coinvolta nell'operazione
si vede subito che la codifica e' completamente diversa da quella ascii

### Spiega cos'e' una variabile e come si dichiara, (descrivi anche la tabella dei tipi)

molti scrivono la tabella ma non danno la spiegazione di dichiarazione di una variabile. Una variabile e' uno spazio di memoria (di una certa dimensione) che contiene una informazione di un certo tipo.
Nel C++ i tipi di variabili possono essere int,long,float,double,string,bool,char .
Per dichiarare una variabile si scrive prima il tipo della variabile e poi si scrive il nome della variabile, ad esempio con :
creo una variabile di tipo int (intera) di nome a
cioe' viene riservata un'area di memoria ( nel caso del tipo int di 4 byte) e associata al nome a, questi 32 bit (8*4) vengono codificati/decodificati a seconda che si faccia una operazione di scrittura/lettura secondo le regole di rappresentazione degli interi se ho piu' variabili dello stesso tipo (pensiamo siano float) invece di usare tante dichiarazioni singole posso dichiarale in questo modo:
dopo questa istruzione in memoria ci sono 3 celle una associata alla variabile b, una alla c, una alla d;
e' possibile dichiarare una variabile e nel contempo anche inizializzarla (cioe' assegnarle un valore) con un comando del tipo
nel caso di variabili di tipo char un valore costante di tipo char viene scritto mettendolo fra singoli apici e allora si ha
nel caso di una variabile bool
nel caso delle stringhe, le stringhe costanti vengono racchiuse fra doppi apici e allora
string parola= "ciao";
dopo questi comandi ho creato la variabile f che adesso vale 3.14 , ho creato la variabile gatto che ha il valore r , ho creato la variabile risposta con il valore true e la variabile parola con il valore ciao
nulla vieta che nel caso di variabili dello stesso tipo alcune siano inizializzate e altre no.
Il C a differenza dei nuovi linguaggi si dice che e' tipicizzato, cioe' richiede una esplicita' dichiarazione della variabile e controlla in fase di compilazione che i valori che diamo a quella variabile siano dello stesso tipo, una variabile si puo' utilizzare solo dopo che e' stata dichiarata . Nei linguaggi moderni si ha una debole tipicizzazione, senza dichiarare una variabile la si puo' immediatamente utilizzare e il programma in base al valore che gli abbiamo assegnato ne decide il tipo.

### Scrivi un programma in linguaggio C che permetta di risolvere il seguente problema

Marco prende 2 articoli al supermarket, poi si reca alla cassa e ne comunica di ciascuno il prezzo.La cassiera sull'importo complessivo applica uno sconto del 10%, e poi visualizza l'importo totale, lo sconto e l'importo totale scontato.
Soluzione

### Errori Vari

Si prendono bit al posto dei byte
* abbiamo 1 bit (la quantita' d'informazione piu' piccola rappresentabile assume i valori 0 o 1) un valore bool richiede un bit
* 1 byte= 8 bit un carattere ascii richiede un byte
* 1 kbyte = 1024 byte un testo di cira 1000 carattery richiede un KByte
* 1 Mbyte = 1024 KByte = circa 2^20 byte un testo di circa un milione di caratteri richiede un MByte
* 1 GByte = 1024 MByte un testo da un miliardo di caratteri o un film divx occupano circa 1Gbyte
* 1 TByte = 1024 GByte questi sono mille miliardi di caratteri , un hard disk attuale e' di circa 3 TByte
si scrive ASCII e non ASCI
OBJ EXE TXT sono tipiche estensioni dei files
il TEXT EDITOR e' un programma per la scritttura dei testi (molto semplice) che permette di salvare il testo in formato ASCII (TXT C CPP)
l'operatore = nel C rappresenta l'operatore di assegnamento a=b+3; e non quello di uguaglianza che e' invece scritto == ad esempio if(a==6) ...
double e non duble
inserzione significa inserire qualcosa (fra 2 oggetti, in un canale, in un flusso di dati)
true e false sono delle costanti e non possono essere sostituite da vero e falso
una stringa costante va scritta sempre fra doppi apici "ci vediamo domani"
un carattere costante va scritto sempre fra singoli apici 'y'
il main e' una funzione
il simbolo della divisione fra due numeri e' / a=6/7; non i :
i nomi delle variabili non possono contenere il simbolo dello spazio arearettangolo va bene, area rettangolo non va bene
L'ordine dei comandi e' sequenziale quindi non posso calcolare l'area del rettangolo prima di aver acquisito da tastiera base e altezza