Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 1
Programma eseguibile
Un computer esegue solo programmi in linguaggio macchina
ciascuna istruzione/dato è rappresentata/o da sequenze di bit
… programmare in linguaggio macchina implica:
• conoscenza approfondita dell’architettura del calcolatore
• pianificazione dell’impiego delle risorse della macchina
• uso di un numero notevole di istruzioni elementari, anche per semplici operazioni
…. attività di programmazione ardua e complessa …
… necessità di linguaggi più vicini a quello naturale …
… linguaggio naturale non usato perché ambiguo (non deterministico) …
Linguaggi simbolici di programmazione
Sono linguaggi di programmazione più vicini al linguaggio naturale ma con una struttura che elimina ambiguità rendendoli più adatti alla definizione di un algoritmo
… rispetto al linguaggio macchina:
consentono di esprimere un programma sempre secondo rigide regole formali
ma con istruzioni più sintetiche e vicine alla logica del pensiero umano
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 3
Linguaggi simbolici
Ciascun linguaggio di programmazione è caratterizzato da
• lessico
insieme delle parole che formano il linguaggio (vocabolario)
• sintassi
insieme delle regole per la formazione delle frasi (istruzioni)
• semantica
significato da associare ad ogni parola ed istruzione
… esistenza di standard ….
… esistenza di dialetti …
variazioni e/o estensioni dello standard
Linguaggi simbolici
Diversi linguaggi di programmazione
…. alcuni dei più noti e diffusi di tipo ‘imperativo’ … (in ordine cronologico):
• FORTRAN ( FOR mula TRAN slator):
anno progettazione 1959, problemi tecnico-scientifici
• COBOL ( CO mmon B usiness-O riented L anguage):
1959, problemi amministrativi-gestionali
• BASIC (Beginners All-purpose Symbolic Instruction Code) 1965, programmazione per i principianti
• Pascal (dal nome del matematico francese Blaise Pascal) : 1969, strumento didattico
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 5
Linguaggi simbolici
C (evoluzione del BCPL dal quale derivarono B e poi C)
1972, scrittura software di base (il S.O. UNIX è sviluppato in C) C++ (evoluzione di C)
1980, programmazione orientata agli oggetti (Object Oriented) JAVA
prima metà anni 1990, programmazione orientata agli oggetti, indipendenza dalla piattaforma
PROLOG ( PRO gramming in LOGic)
1970, programmazione di tipo logico (non imperativa) HyperText Markup Language (HTML), eXtensible Markup Language (XML)
Linguaggi di Scripting (1993 e successivi), sviluppo di pagine Web (formattazione e specifica di contenuti)
Dal programma sorgente al programma eseguibile
Programma in linguaggio simbolico (Programma Sorgente)
Traduttore
00100101 10101010 00101001 10101010
Programma in linguaggio macchina (Programma Oggetto)
Moduli di Libreria
Collegatore/
Caricatore
--- --- ---
--- 00100101
10101010 00101001 10101010
--- --- --- ---
Programma eseguibile
... i programmi in linguaggio simbolico devono essere tradotti in programmi in linguaggio macchina ...
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 7
Dal programma sorgente al programma eseguibile
Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina
compilatore: la traduzione è effettuata una sola volta e tutta in una volta
inteprete: ciascuna istruzione viene tradotta ed eseguita, ogni volta che si vuole eseguire il programma
linguaggi compilati
FORTRAN, COBOL, PASCAL, C, C++, … linguaggi INTERPRETATI
BASIC, PROLOG, ...
Dal programma sorgente al programma eseguibile
caricatore: provvede a caricare il programma in memoria centrale per poter poi effettuarne l’esecuzione
collegatore: genera il programma eseguibile mediante il collegamento del programma oggetto a componenti di librerie
il programma sorgente è, tipicamente, generato con un text editor (es. blocco note, notepad++, …)
… è un ‘puro’ testo … solo caratteri ASCII senza alcuna formattazione
o usando un IDE (Integrated Development Environment): un ambiente di sviluppo di programmi che integra text editor, complitatore, debugger, ecc. (es. DevC++, CodeBlock, Eclipse)
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 9
Sviluppatore sw
Soluzione TRADUZIONE/
INTERPRETAZIONE Programma oggetto
ESECUZIONE
Esecutore
Sviluppo di un programma
Problema ANALISI
Comprensione e Caratterizzazione del problema
STESURA PROGRAMMA
Programma sorgente Definizione Algoritmo
Sviluppo di programmi
Analisi:
Comprensione e caratterizzazione del problema da risolvere
Definizione della specifica del programma Caratterizzazione in termini di funzioni e dati
Definizione del problema:
specificare cosa l’elaborazione deve produrre
senza ancora indicare come essa sarà svolta
Definizione dei dati del problema:
I: insieme dei dati di ingresso (dati iniziali del problema) Pi: insieme di precondizioni sui dati di ingresso
U: insieme dei dati di uscita (risultati da produrre) Pu: insieme di postcondizioni sui dati di uscita
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 11
Nome variabile Descrizione Tipo
Area_quadrato Area del quadrato Reale
Definizione di un dizionario dei dati
Una tabella in cui riportare, per ciascu dato:
Nome variabile (Attributo), Descrizione,
serve a specificare meglio l’attributo e a descrivere il contesto in cui il dato viene usato
Tipo
Sviluppo di programmi
Sviluppo di programmi
Definizione dell’algoritmo:
Descrizione (in linguaggio naturale) dei principali passi elaborativi:
descrizione di come si vuole risolvere il problema, ovvero dell’algoritmo che si utilizzerà per risolvere il problema;
definizione della sequenza (finita) di istruzioni necessarie possono essere introdotti/utilizzati ulteriori dati, diversi da quelli di ingresso e uscita, questi vanno anch’essi specificati come gli altri
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 13
Esempio
Problema:
Calcolare quanti litri d’acqua può contenere un recipiente con la forma di un parallelepipedo, di cui si conoscono le lunghezze dei lati
Esempio
Definizione della specifica del programma
Calcolare il volume, in dm
3, di un parallelepipedo di cui è nota la lunghezza dei lati
Definizione dei dati del problema:
I: I lati del parallelepipedo: Lunghezza e altezza base, altezza parallelepipedo
Pi: I lati devono avere lunghezze maggiori di zero U: Volume del parallelepipedo
Pu: il volume è maggiore di zero
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 15
Esempio
Nome variabile Descrizione Tipo
Volume Volume del parallelepipedo Reale
Tabella delle informazioni di ingresso
Tabella delle informazioni di uscita
Nome variabile Descrizione Tipo
LBase Lunghezza base parallelepipedo Reale ABase Altezza base parallelepipedo Reale H Altezza del parallelepipedo Reale
Esempio
Precondizioni informazioni di ingresso (LBase > 0) , (ABase > 0) , (H > 0) Postcondizioni informazioni di uscita:
Volume > 0
Modello della soluzione:
Volume = Area_Base * H
con Area_Base = LBase * ABase
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 17
Esempio
Definizione dell’algoritmo :
• Leggi il valore in dm da assegnare a Lbase
• Leggi il valore in dm da assegnare a Abase
• Leggi il valore in dm da assegnare a H
• Calcola Area_Base = LBase * ABase;
• calcola Volume = Area_Base * H;
• visualizza il valore di Volume.
… e le pre/post condizioni ?