• Non ci sono risultati.

Concetti di Base sulla

N/A
N/A
Protected

Academic year: 2021

Condividi "Concetti di Base sulla"

Copied!
17
0
0

Testo completo

(1)

Concetti di Base sulla Programmazione

Prof.Ing.S.Cavalieri

(2)

Dato un problema INFORMATICO, programmare significa:

 Definire i dati in ingresso e il risultato che si vuole raggiungere

 Definire l’algoritmo risolutivo, che permette di raggiungere il risultato a partire dai dati; l'algoritmo deve essere finito e realizzabile con le risorse disponibili

 Tradurre l’algoritmo nel linguaggio di programmazione scelto, attraverso la particolare tecnica di programmazione scelta, rispettando le regole sintattiche del linguaggio

La Programmazione

(3)

Linguaggi di programmazione:

Linguaggio Macchina

 I primi linguaggi di programmazione coincidevano con l'insieme delle istruzioni eseguibili dall'hardware.

 Le istruzioni hardware sono codificate in codice binario: ogni informazione è rappresentata, all'interno della macchina, come una sequenza di bit.

 Esempio: 00110010, dove 0011 è la rappresentazione interna di un comando e 0010 è un operando

 Enorme sforzo richiesto per codificare algoritmi semplici.

(4)

Linguaggi di programmazione:

Assembly

 Dalla nascita dei primi calcolatori, si è cercato di diminuire lo sforzo e aumentare la produttività dell'utente, anche a costo di caricare la macchina di maggiori compiti.

 E’ meglio risparmiare il tempo dell'uomo anche a costo di sprecare tempo-macchina (traduzione di programmi e scarsa efficienza del programma).

 La prima evoluzione dei linguaggi di programmazione ha

portato ad una codifica di tipo simbolico, anziché binaria, dei programmi.

 Tali versioni simboliche dei linguaggi hardware sono note come linguaggi assembly

(5)

Linguaggi di programmazione:

Evoluzione

Hardware

MicroProgrammi Macchina/binario

Assembly Alto Livello

 Il passo successivo nell’evoluzione dei linguaggi di programmazione tese a rendere la codifica degli algoritmi il più possibile “vicina” al problema da risolvere anziché all'architettura della macchina destinata all'esecuzione del programma.

 Non a caso i primi due linguaggi di alto livello, FORTRAN e COBOL, hanno costrutti fortemente ispirati alla notazione usata per descrivere i

problemi di maggior rilievo per il calcolo automatico degli anni '50, cioè l'elaborazione numerica e quella gestionale.

(6)

Linguaggi di programmazione:

Evoluzione

 Gli anni '70 vedono il fiorire di linguaggi general- purpose:

 il SIMULA 67, l’ALGOL 68, ma soprattutto il PASCAL e il C

 Dagli anni '80 in poi si ha l'affermarsi dei linguaggi orientati agli oggetti (Object-Oriented -OO):

 C++, Java, C#

(7)

 Non è legata ad un linguaggio, anche se alcuni linguaggi sono ideali per essere abbinati ad una specifica tecnica di programmazione

 Esistono tre tecniche:

a) Programmazione NON Strutturata, che produce lo Spaghetti Code

b) Programmazione Strutturata: Sequenza, Selezione, Ripetizione

c) Programmazione ad Oggetti: Classe, Oggetto, Metodo

La Tecnica di Programmazione

(8)

L’obiettivo della programmazione strutturata è di rendere un flusso ordinato il passaggio tra le istruzioni dall’inizio alla fine dei programmi.

 Corrado Böhm e Giuseppe Jacopini hanno dimostrato che tutti i programmi possono essere scritti con l’utilizzo di:

sequenza,

selezione e

iterazione (senza l’uso del salto goto tipico dello Spaghetti Code).

La Programmazione Strutturata

(9)

Bocco d’istruzioni: un insieme d’istruzioni con una sola entrata, da dove inizia sempre l’elaborazione, e una sola uscita, dove termina sempre l’elaborazione del blocco {blocco}.

Il Blocco è essenziale per la Programmazione Strutturata

La Programmazione Strutturata

Da ora in poi, quando si parlerà di istruzione si può riferire ad una singola istruzione o a un blocco di istruzione.

(10)

Sequenza

La Programmazione Strutturata

(11)

Selezione

Selezione

La Programmazione Strutturata

(12)

Iterazione

Iterazione

La Programmazione Strutturata

(13)

File sorgente

Files .h

Generazione File Eseguibile

Editor

Preprocessore

Compilatore

File sorgente

File Oggetto .obj/.o

Avvio del Programma di Compilazione

Avvio del Programma di Linker

(14)

14

 I codici sorgente ed oggetto possono essere suddivisi in più file, il codice eseguibile di un programma risiede in un unico file

File oggetto

Libreria/e File oggetto

File oggetto

File sorgente

File sorgente File sorgente File sorgente

File oggetto

File eseguibile

Compilazione Compilazione Compilazione Compilazione

Link

Generazione File Eseguibile

(15)

 Il compilatore è esso stesso un programma (o un gruppo di programmi)

 Durante la compilazione avviene:

Controllo del codice sorgente da parte di un preprocessore:

interpretare speciali direttive di precompilazione,

Controllo di eventuali errori sintattici (NON LOGICI),

Produzione di un file in codice Assembly,

Trasformazione del file in codice Assembly in un altro file in codice OGGETTO (Macchina): estensione .obj

Il Compilatore

(16)

 Il Linker è generalmente un programma distinto dal compilatore: in alcuni ambienti il programma di link deve essere lanciato separatamente

 Il Linker fa in modo che:

i riferimenti tra diversi file oggetto e con le librerie vengano risolti

i file oggetto creati dal compilatore vengano trasformati in un unico file eseguibile, al quale vengano associate le librerie necessarie all’esecuzione

 Il risultato prodotto dal Linker è un programma eseguibile, che può essere caricato in memoria

Il Linker

(17)

 Il Caricamento di un programma in memoria, avviene nel momento in cui l’utente richiede la sua esecuzione

 Durante la fase di caricamento (o loading), il programma eseguibile viene caricato nella memoria del calcolatore;

 Le Fasi di Compilazione, Linker e Loading sono separate (anche temporalmente)

Attenzione: l’uso dei compilatori crea false impressioni !

La Fase di Caricamento

Riferimenti

Documenti correlati

 Per leggere dati da un file presente sul disco, Per leggere dati da un file presente sul disco, occorre dapprima costruire un oggetto di tipo occorre dapprima costruire un

To do this, we investigated vertical distribution and temporal changes of inorganic nutrient concen- trations, pigment spectra and species composition of the algal sympagic

A two-parameter family of Harnack type inequalities for non-negative solutions of a class of singular, quasilinear, homogeneous parabolic equations is established, and it is shown

Cruise STR06 on R/V Urania was performed in the framework of the ”INGV - DPC V2 - Mon- itoring and research activity at Stromboli and Panarea - Unit V2/03”, and resulted as a

On the other hand, the Tyrrhenian Sea basalts define a trend between the em ii component and a mid-ocean ridge basalt (morb)-like component (Fig. 8), consistent with new

Ora però si stanno preparando per la Festa della Vite che si tiene nel mese di ottobre a Borgo, dove le vie sono strette e quindi la banda sta facendo le prove in fila per 3.. A

Policies targeting integration consist, for example, of extending citizen rights (i.e. dual citizenship) or organizing diaspora summits or diplomatic visits in their

  I codici sorgente ed oggetto possono essere suddivisi in più file, il codice eseguibile di un programma risiede in un unico file.