Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 1
Linguaggio macchina
Un computer esegue solo programmi in linguaggio macchina ciascuna istruzione/dato rappresentato da sequenze di bit
… programmare in linguaggio macchina implica:
• conoscenza 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 …
… MA 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
Diversi linguaggi di programmazione
…. alcuni dei più noti e diffusi:
• 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
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 LOG ic)
1970, programmazione di tipo logico (non imperativa)
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 5
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 …
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/
--- --- ---
--- 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
collegatore: genera il programma eseguibile mediante il collegamento del programma oggetto a componenti di librerie caricatore: provvede a caricare il programma eseguibile in memoria per poterne effettuare l’esecuzione
il programma sorgente è, tipicamente, generato con un text editor
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 9
Problema ANALISI
ANALISI Caratterizzazione del problema + Modello di soluzione
STESURA
DESCRIZIONE Descrizione Programmatore
Soluzione INTERPRE-
INTERPRE- TAZIONE
Descrizione interpretata
ESECUZIONE ESECUZIONE
Esecutore
Sviluppo di un programma
Sviluppo di programmi
… mediante una serie di passi … Analisi:
Comprensione del problema da risolvere
Definizione della specifica del programma Caratterizzazione
Definizione del problema:
specificare cosa l’elaborazione deve produrre
senza 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)
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 11
Sviluppo di programmi Descrizione (testuale) dell’algoritmo:
descrizione di come si vuole risolvere il problema, ovvero dell’algoritmo che si utilizzerà per risolvere il problema;
definizione della sequenza(finita) di istruzioni
possono essere introdotti/utilizzati altri dati, diversi da quelli di ingresso e uscita, questi vanno anch’essi specificati come gli altri
Nome variabile Descrizione Tipo
A Coefficientie dell’equazione Reale
Definizione di un dizionario dei dati Una tabella il cui schema è:
Attributo (nome del dato/variabile), Descrizione, Tipo
La descrizione serve a specificare meglio l’attributo e a descrivere il contesto in cui il dato viene usato
Sviluppo di programmi
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 13
Esempio
Problema:
Calcolare quanti litri d’acqua può contenere un recipiente con 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
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
Descrizione del metodo di elaborazione:
• sono letti i valori, in dm, dei lati ed assegnati alle variabili LBase, ABase, H;
• Si calcola l’area di base: Area_Base = LBase * ABase;
• Si calcola il Volume = Area_Base * H;
• Si visualizza il valore del Volume calcolato.
… e le pre/post condizioni ?
Esempio
Descrizione del metodo di elaborazione:
• sono letti i valori, in dm, dei lati ed assegnati alle variabili LBase, ABase, H;
• Si verifica che LBase, ABase ed H siano tutti maggiori di 0, altrimenti si ripete la lettura di tali valori;
• Si calcola l’area di base: Area_Base = LBase * ABase;
• Si calcola il Volume = Area_Base * H;
• Si visualizza il valore del Volume calcolato.
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 19
Sviluppo di un programma
P ROBLEMA
A NALISI S I OLUZIONE
NFORMALE
F ORMALIZZAZIONE
S OLUZIONE F ORMALE
ALGORITMO
P ROGRAMMAZIONE ( sorgente ) P ROGRAMMA
T RADUZIONE ( macchina ) P ROGRAMMA (EDITOR, AMBIENTI DI SVILUPPO)
E SECUZIONE
E SECUTORE DEL LINGUAG GIO MACCHINA (HW) S ISTEMA I NFORMATICO : STRUMENTI DI SUPPORT O