Sei sulla pagina 1di 32

Programmazione Procedurale

Concetti Introduttivi Linguaggi di Programmazione

versione 3.2
Questo lavoro concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

G. Mecca Universit della Basilicata giansalvatore.mecca@unibas.it

Concetti Introduttivi: Linguaggi >> Sommario

Sommario
Linguaggi
Il

di Programmazione

Sintassi e Semantica

Concetto di Algoritmo Ciclo di Vita del Codice Compilazione del Codice Interpretazione del Codice Metodologia di Programmazione
G. Mecca - Programmazione Procedurale 2

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Linguaggi di Programmazione
Linguaggi

per impartire istruzioni al processore Programma


sequenza di istruzioni normalmente pensato per risolvere un problema di calcolo al programma vengono forniti dei dati il programma calcola eseguendo le istruzioni il programma restituisce i risultati
G. Mecca - Programmazione Procedurale 3

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Evoluzione dei Linguaggi


Esistono

numerosi linguaggi
1974 C 1991 VB 1994 Java

differenti per funzionalit e tecnologia


anni 60 met anni 60 BASIC COBOL

met anni 50 FORTRAN

1968 Pascal

1990 C++ Linguaggi Ibridi

2000 C#, VB.NET Linguaggi Orientati agli Oggetti


4

Linguaggi di Programmazione Procedurale


G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Linguaggi di Programmazione
programmazione procedurale

ATTENZIONE al linguaggio di riferimento

clean C

C++
programmazione orientata agli oggetti

linguaggio di questo corso sostanzialmente equivalente ma pi semplice del C

Java, C#

G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Linguaggi di Programmazione
Attenzione

i linguaggi della stessa famiglia sono normalmente basati sugli stessi concetti
Differenze

alcuni linguaggi forniscono funzionalit che altri non hanno sintassi semantica
G. Mecca - Programmazione Procedurale 6

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Sintassi e Semantica
Simile

al linguaggio naturale

sintassi e semantica
Sintassi

grammatica del linguaggio insieme delle regole che stabiliscono quali frasi (programmi) sono corretti in Italiano: maiuscola dopo il punto in C++: le istruzioni si concludono con ;
G. Mecca - Programmazione Procedurale 7

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Sintassi e Semantica
Semantica

significato del linguaggio insieme delle regole che stabiliscono come il calcolatore esegue i programmi corretti in italiano: andr unazione nel futuro in C++: cout << Ciao;
Attenzione

sintassi e semantica dei linguaggi di programmazione sono rigorose


G. Mecca - Programmazione Procedurale 8

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Sintassi e Semantica
Attenzione

ATTENZIONE al concetto di correttezza

ci sono due diverse nozioni di correttezza


Correttezza

Sintattica

assenza di errori sintattici il programma eseguibile


Correttezza

Semantica (o Logica)

implica la correttezza sintattica il prog. risolve correttamente il problema


G. Mecca - Programmazione Procedurale 9

Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione

Sintassi e Semantica
Verifica

della correttezza sintattica

viene verificata dal compilatore o dallinterprete consente di eliminare gli errori sintattici
Verifica

della correttezza semantica

esecuzione e test del programma prove di funzionamento per controllare che il programma si comporti correttamente (processo pi complesso e delicato)
G. Mecca - Programmazione Procedurale

10

Concetti Introduttivi: Linguaggi >> Il Concetto di Algoritmo

Il Concetto di Algoritmo
Per

programmare questo non basta

necessario conoscere almeno un linguaggio (sintassi e semantica)


Ma

il processo di sviluppo del software complesso necessario un metodo (ovvero una metodologia) per affrontare questa complessit
G. Mecca - Programmazione Procedurale 11

Concetti Introduttivi: Linguaggi >> Il Concetto di Algoritmo

Il Concetto di Algoritmo
Il

punto di partenza

la descrizione del problema, normalmente fornita in linguaggio naturale opportuno analizzarla accuratamente
Il

punto di arrivo

lapplicazione correttamente funzionante


Un

passo intermedio fondamentale

concepire una strategia per la soluzione del problema


G. Mecca - Programmazione Procedurale 12

Concetti Introduttivi: Linguaggi >> Il Concetto di Algoritmo

Il Concetto di Algoritmo
Algoritmo

strategia per la soluzione del problema


Il

problema centrale

capito il problema, decidere attraverso quale sequenza di passi costruire la soluzione un problema ricorrente, che capita in molti altri contesti
Esempio:

lavare i panni
13

G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma

Il Concetto di Algoritmo
Problema di Calcolo -dati in ingresso -risultati attesi Es: lavare i panni dati in ingresso

Algoritmo

Programma

Tecnologia

Es: strategia di lavaggio (colore, delicati)

dati in uscita Es: programmi di lavaggio


14

Es: lavatrice
G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma

Il Concetto di Algoritmo
Strategia

di soluzione del problema

deve essere concretamente eseguibile usando la tecnologia disponibile; es: separa i bianchi dai colorati deve essere corretta es: lava bianchi a 60 gradi deve essere efficiente, ovvero produrre la soluzione utilizzando le minori risorse possibili (es: tempo, memoria) es: lava colorati separatamente (a 30 gradi)
G. Mecca - Programmazione Procedurale 15

Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma

Ciclo di Vita di un Programma


Avendo

concepito lalgoritmo

possibile procedere alla scrittura del codice


Codice

sorgente

istruzioni del linguaggio di programmazione non direttamente eseguibile dal processore


Linguaggio

macchina

linguaggio di comandi eseguibili dal processore (molto semplici)


G. Mecca - Programmazione Procedurale 16

Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma

Ciclo di Vita di un Programma


Un

passo cruciale due approcci

la trasformazione del codice sorgente in codice macchina


Esistono

compilazione del codice sorgente richiede lutilizzo di uno strumento chiamato compilatore interpretazione del codice sorgente richiede lutilizzo di uno strumento chiamato interprete
G. Mecca - Programmazione Procedurale 17

Concetti Introduttivi: Linguaggi >> Compilazione del Codice Sorgente

Compilazione del Codice Sorgente


Processo

di compilazione

verifica della correttezza sintattica trasforma il codice sorgente in codice oggetto


Processo

di collegamento

collega il codice oggetto a quello delle librerie esterne (es: op. matematiche) produce il codice eseguibile completo dellapplicazione
G. Mecca - Programmazione Procedurale 18

Concetti Introduttivi: Linguaggi >> Compilazione del Codice Sorgente

Compilazione del Codice Sorgente


A

questo punto

lapplicazione eseguibile necessario verificarne la correttezza logica


Fase

di test

esecuzione ripetuta dellapplicazione su dati di test per verificarne il funzionamento


19

G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Compilazione del Codice Sorgente

Compilazione del Codice Sorgente


Analisi del Problema Scelta dell Algoritmo Scrittura del Programma

codice sorgente
errori nella strategia
Compilazione errori e Collegamento sintattici

errori logici

codice eseguibile
Verifica Uso e Manutenzione
20

ATTENZIONE queste fasi non si svolgono in cascata


G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Compilazione del Codice Sorgente

Compilazione del Codice Sorgente


codice sorgente es:primo.cpp Compilazione Compilatore librerie esterne precompilate es: iostream codice oggetto (ling. macchina) es: primo.obj codice eseguibile es: primo.exe

Collegamento Collegatore (linker)

G. Mecca - Programmazione Procedurale

21

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


Il

processo di compilazione principali

di gran lunga il pi diffuso tra i linguaggi di programmazione


Vantaggi

il compilatore individua subito gli errori sintattici inoltre il codice pu essere ottimizzato per lesecuzione rapida sulla macchina
Ma

ci sono alcuni svantaggi


22

G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


Svantaggio

principale

il processo di verifica (test) del codice meno immediato


Infatti

non possibile

scrivere il codice e schiacciare un tasto per eseguirlo sempre prima necessario eseguire passi intermedi (salvare il codice in un file, eseguire il compilatore, e solo dopo la compilazione eseguire il file eseguibile)
G. Mecca - Programmazione Procedurale 23

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


Un

processo molto pi immediato

interpretazione del codice


Idea

il codice viene scritto allinterno di uno strumento apposito, detto interprete che ovviamente supporta anche le funzioni di scrittura (editing di testo) inoltre fornisce un comando Esegui oppure Run
G. Mecca - Programmazione Procedurale 24

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


Allesecuzione

del comando Run

linterprete analizza le istruzioni una per una, a partire dalla prima traduce ciascuna istruzione in linguaggio macchina e chiede al processore di eseguirla poi passa allistruzione successiva
In

altri termini

non necessario salvare il codice in un file non necessario eseguire il comando di compilazione prima dellesecuzione
G. Mecca - Programmazione Procedurale 25

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


Il

collegamento

avviene tipicamente in modo dinamico, ovvero ogni volta che unistruzione del codice lo richiede al momento dellesecuzione di quella istruzione, linterprete localizza la libreria esterna e la collega al codice dellapplicazione per eseguirla
G. Mecca - Programmazione Procedurale 26

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


prossima istruzione
run Editor del Codice

Trasform. in Codice Macchina

codice oggetto (ling. macchina)

librerie esterne precompilate

Eventuale Collegamento

CPU

Interprete del Linguaggio

G. Mecca - Programmazione Procedurale

27

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


Differenza
In

fondamentale

nel ciclo di vita del codice

un linguaggio compilato

la trasformazione del codice sorgente in linguaggio macchina viene fatta tutta assieme prima dellesecuzione il codice non pu essere eseguito se contiene errori sintattici (perch il compilatore non genera leseguibile) distinzione chiara tra errori sintattici e logici
G. Mecca - Programmazione Procedurale 28

Concetti Introduttivi: Linguaggi >> Interpretazione del Codice Sorgente

Interpretazione del Codice Sorgente


In

un linguaggio interpretato

la trasformazione del codice sorgente in linguaggio macchina viene fatta istruzione per istruzione durante lesecuzione il codice pu essere eseguito anche se contiene errori sintattici in questo caso lesecuzione comincia e poi si interrompe al momento in cui viene incontrata listruzione sintatticamente scorretta
G. Mecca - Programmazione Procedurale 29

Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma

Metodologia di Programmazione
Metodo

per affrontare il ciclo di vita

passi e tecniche per analizzare il problema passi e tecniche per scegliere lalgoritmo passi e tecniche per scrivere il codice passi e tecniche per verificare il codice passi e tecniche per manutenere il codice
La

metodologia importante
30

altrettanto che la conoscenza del linguaggio


G. Mecca - Programmazione Procedurale

Concetti Introduttivi: Linguaggi >> Sommario

Riassumendo
Varie

tecnologie per la programmazione

ci concentriamo sulla prog. procedurale sintassi e semantica


Creazione

di un Programma

Problema-Algoritmo-Programma
Compilazione

e Interpretazione Metodologia di Programmazione


G. Mecca - Programmazione Procedurale 31

Termini della Licenza

Termini della Licenza

This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
32

G. Mecca - Programmazione Procedurale

Potrebbero piacerti anche