# Informatica 2 Liceo Scientifico Scienze Applicate/Compilare un programma

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

## Compilare i Programmi

Un programma e' una serie di comandi che, se eseguiti dal computer, permettono di risolvere un problema o di far muovere il braccio di un robot. Il computer e' in grado di eseguire comandi in linguaggio macchina compatibili con la CPU utilizzata. I comandi in linguaggio macchina sono lunghe sequenze binarie del tipo 00001010101001010100000011111000 che risultano facili da leggere per il computer ma ostiche per il programmatore perché basta invertire per sbaglio anche un solo bit della sequenza per impartire un comando diverso da quello voluto. Nel linguaggio C i comandi sono del tipo if (a>5) b=34; una specie di inglese povero e molto matematico. Per far eseguire le istruzioni dal computer abbiamo bisogno di convertire i comandi espressi nel linguaggio C nel linguaggio macchina del computer e, questa traduzione e' svolta da particolari programmi chiamati compilatori, nel nostro caso il compilatore usato è GCC, ovvero quello usato da Dev-C++. Il compilatore GCC e' anche quello adottato ufficialmente nelle Olimpiadi dell'Informatica.
Per la creazione di un programma eseguibile (i file che su Microsoft Windows hanno estensione .EXE o .COM) ci sono due passaggi principali.
* Tramite un TEXT EDITOR si scrive il programma in C e lo si salva come file codificato in ASCII, ma invece di usare l'estensione dei file .TXT si usa l'estensione .C che e' convenzionalmente quella dei file scritti in linguaggio C. Un text editor e' un programma per la scrittura del testo (come Notepad). Cosa vuol dire che un file e' codificato in ASCII? Significa che le lettere che abbiamo digitato sulla tastiera sono state scritte ciascuna come un numero binario a 8 bit, ad esempio se abbiamo scritto la lettera A maiuscola questa e' diventata la sequenza binaria 01000001 (che nel sistema decimale equivale al numero 65), se si premeva B la codifica diventava 01000010 (numero 66). Notate anche che la sequenza numerica che descrive le lettere dell'alfabeto e' crescente (65, 66 ecc.), come pure quella delle lettere minuscole (97, 98, ecc). La tabella ASCII stabilisce la corrispondenza fra le lettere e le codifiche binarie, e spesso questa tabella viene ampliata scrivendo anche l'equivalente numero decimale o esadecimale della sequenzaq binaria.
In questa tabella ASCII non compaiono le sequenze binarie ma solo i corrispondenti numeri decimali ottali e esadecimali. Nota che se scrivi CIAO in pratica hai scritto 4 numeri: 67 73 65 79. Se ora aggiugi 32 ad ogni numero ottieni 99 105 97 111, cioe' la parola ciao. In sostanza per trasformare un testo tutto maiuscolo in minuscolo o viceversa, basta aggiungere o togliere 32 alla codifica di ciascuna lettera. Un carattere (char) e' memorizzato come un numero intero che puo' assumere valori fra 0 e 255 cioe' fra la sequenza binaria 00000000 e 11111111. Un carattere nel linguaggio C e' gestito internamente come un intero, e solo in fase di decodifica di quella sequenza binaria il numero 65 viene visualizzato come 65 o come A.
* La compilazione converte le istruzioni in C in istruzioni macchina e le salva in un file con estensione .OBJ. Questo non e' ancora il file eseguibile, infatti i programmi sono spesso dati dall'unione del vostro file .OBJ con altri file .OBJ esterni che avete scelto indirettamente specificando delle particolari librerie scritte nelle prime righe del vostro file di testo, del tipo #include graphic.h. Questi altri file .OBJ possono essere stati scritti da voi o da altri programmatori che possono averli anche scritti inizialmente con linguaggi diversi dal C e poi compilati in .OBJ. L'unione dei diversi file .OBJ avviene mediante un programma chiamato Linker, il cui scopo e' quello di unire tutti i file .OBJ e trasformarli finalmente nel file .EXE.
Mentre con un compilatore a riga di comando i due ordini di compilazione e di link sono separati, nel Dev C++ per comodita' sono richiamati in rapida successione tramite un unico tasto (nella configurazione del DevC++ potete trovare il comando di link impartico e aggiungere anche delle opzioni o specificare i file OBJ da aggiungere).