• Non ci sono risultati.

ProgrammaeseguibileUn computer eseguesolo programmiin linguaggiomacchinaciascunaistruzione/datoè rappresentata/o dasequenzedibit

N/A
N/A
Protected

Academic year: 2021

Condividi "ProgrammaeseguibileUn computer eseguesolo programmiin linguaggiomacchinaciascunaistruzione/datoè rappresentata/o dasequenzedibit"

Copied!
9
0
0

Testo completo

(1)

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

(2)

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

(3)

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 ...

(4)

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)

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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 ?

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

• verifica che LBase, ABase ed H siano tutti maggiori di 0, altrimenti ripetere la lettura di tali valori;

• Calcola Area_Base = LBase * ABase;

• calcola Volume = Area_Base * H;

• visualizza il valore di Volume.

Riferimenti

Documenti correlati

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una

La conoscenza in forma strutturata (grammatica, lessico …) utilizzata da un sistema rule-based è solitamente memorizzata all’interno del.. sistema, ma potrebbe anche

[r]

valutare la qualità della traduzione e il compito di valutare è affidato ad un gruppo di esperti umani che leggono il testo originale e quello tradotto e li confrontano.

[r]

Durante lo sviluppo del prototipo la valutazione è fatta dagli esperti allo scopo di decidere in che direzione procedere. L’output mostra carenze

• Compilatore: opera la traduzione di un programma sorgente scritto in un linguaggio ad alto livello in un programma oggetto scritto in un linguaggio direttamente eseguibile