Introduzione alla programmazione
Organizzazione di un calcolatore Un calcolatore e’ composto da due parti: Hardware – la parte che effettua la computazione Software – I programmi che determinano le operazioni eseguite dall’harware
Sistema Operativo Su ogni calcolatore e’ installato il sistema operativo. Il sistema operativo e’ un tipo particolare di programma che controlla l’interazione tra le componenti hardware e l’utente.
Programmazione - Linguaggio macchina Un programma in linguaggio macchina e’ costituito da una sequenza di numeri binari Ogni numero rappresenta un’istruzione Ogni istruzione e’ comprensibile dal calcolatore 00000000 00010101 00010110
Programmazione - Linguaggio assembly Il linguaggio assembly e’ un’astrazione del linguaggio macchina Corrispondenza 1-1 tra istruzioni macchina e istruzioni assembly (comprensibili ad un essere umano) CLR A ADD A ADD B 00000000 00010101 00010110
Programmazione - Linguaggio assembly Il linguaggio assembly viene convertito in linguaggio macchina mediante l’assembler. Sebbene il linguaggio assembly sia molto piu’ chiaro e comprensibile del linguaggio macchina, e’ comunque difficoltoso scrivere programmi in assembly. Ad esempio, il codice assembly per la funzione sqrt() e’ composto da centinaia di istruzioni.
Programmazione - Linguaggi ad alto livello Per superare questi ostacoli sono stati introdotti i linguaggi ad alto livello. Una istruzione di un linguaggio ad alto livello viene mappata su un insieme di istruzioni assembly. Il linguaggio ad alto livello viene convertito in assembly (o in linguaggio macchina) dal compilatore.
Programmazione - Compilazione A = 6 X 3 MOV EAX, 0 // inizializza EAX a 0 MOV EBX, 3 // setta il moltiplicando LABEL1: ADD EAX, 6 // moltiplicatore DEC EBX // decrementa il contatore JNZ LABEL1 // se necessario ripeti ciclo STOR A, EBX // memorizza il risultato in A
Sviluppo di software A parte rare eccezioni, il software e’ sviluppato in linguaggi ad alto livello Il compilatore trasforma il file sorgente (programma nel linguaggio ad alto livello) nel file oggetto (corrispondente programma in linguaggio macchina).
Sviluppo di software Spesso il programmatore utilizza librerie di funzioni (collezioni di funzioni che vengono fornite insieme al compilatore come parte dell’ambiente di sviluppo). Una libreria e’ un file oggetto. Dopo che il codice sorgente e’ stato compilato in codice macchina, il linker risolve i riferimenti incrociati tra diversi file oggetto. I file oggetto vengono “linkati” in un unico file eseguibile.
Sviluppo di software A questo punto il file eseguibile e’ pronto per essere eseguito. Il loader del sistema operativo carica il file eseguibile in memoria e ne avvia l’esecuzione.
Sviluppo di software Compilatore Linker Loader File sorgente File oggetto Altri file oggetto (librerie) Linker File eseguibile Loader
Metodologia di sviluppo del software Specificare il problema. Analizzare il problema. Progettare un algoritmo che risolve il problema. Implementare l’algoritmo. Testare e verificare il programma. Mantenere e aggiornare il programma.