Informatica 2 Liceo Scientifico Scienze Applicate/Compilare un programma: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Riga 2:
==Compilare i Programmi==
<big>
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. , iI comandi in linguaggio macchina sono lunghe sequenze binarie del tipo 00001010101001010100000011111000 che risultano facili da leggere per il computer ma ostiche alper il programmatore perche' 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 ilquello usato da Dev C++. </br> Il compilatore scelto e' quello adottato ufficialmente nelle Olimpiadi dell'Informatica.
 
[[File:Compilare in c.png|700px|centro|schema per la compilazione di un file in C]]
 
DurantePer la fase di creazione di un programma eseguibile ( i file con estensione .EXE o .COM) ci sono due passaggi principalmente:principali.
* tramiteTramite 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 del.C fileche pere' convenzioneconvenzionalmente delquella linguaggiodei Cfile e'scritti .Cin linguaggio ,C. unUn text editor e' un programma per la scrittura del testo (come notepadNotepad), cosa.</br>Cosa vuol dire che un file e' codificato in ASCII ? significaSignifica 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). notateNotate anche che la sequenza numerica che descrive le lettere dell'alfabeto e' crescente (65, 66 etcecc.), come pure quella delle lettere minuscole (97, 98, etcecc). , laLa tabella asciiASCII 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.
[[File:Ascii Table-nocolor.svg|Ascii Table-nocolor]]
</br>inIn questa tabella ASCII non compaiono le sequenze binarie ma solo i corrispondenti numeri decimali ottali e esadecimali,. notaNota che se scrivi CIAO in pratica hai scritto 4 numeri: 67 73 65 79. seSe ora aggiugi 32 ad ogni numero ottieni 99 105 97 111, cioe' la parola ciao. inIn sostanza per trasformare un testo tutto maiuscolo in minuscolo o viceversa, basta aggiungere o togliere 32 alla codifica di ciascuna lettera. unUn carattere (char) e' memorizzato come un numero intero che puo' assumere valori fra 0 e 255 cioe' fra la sequenza binaria 00000000 e 11111111. unUn carattere nel clinguaggio C e' gestito internamente come un intero, e solo in fase di decodifica di quella sequenza binaria che il numero 65 viene visualizatovisualizzato come 65 o come A *.
 
*laLa compilazione converte le istruzioni in C in istruzioni macchina e le salva in un file con estensione .OBJ. , questoQuesto non e' ancora il file eseguibile, infatti i programmi sono spesso dati dall'unione del vostro file .OBJ con altri file .OBJ (esterni scrittiche oavete dascelto voiindirettamente ospecificando dadelle altriparticolari programmatorilibrerie chescritte possononelle averliprime ancherighe scrittidel inizialmentevostro confile linguaggidi diversitesto, daldel Ctipo e#include poigraphic.h. compilatiQuesti inaltri file .OBJ) esternipossono cheessere avetestati sceltoscritti indirettamenteda specificandovoi delleo particolarida libreriealtri (scritteprogrammatori nelleche primepossono righeaverli delanche vostroscritti fileinizialmente dicon testolinguaggi diversi dal C e delpoi tipocompilati #includein graphic.hOBJ. L'unione dei )diversi ,file l'unione.OBJ avviene mediante un programma chiamato linkerLinker, cheil uniscecui scopo e' quello di unire tutti glii file .OBJ e li trasformatrasformarli 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)*.
</big>