• Non ci sono risultati.

Linguaggio macchina

N/A
N/A
Protected

Academic year: 2021

Condividi "Linguaggio macchina "

Copied!
10
0
0

Testo completo

(1)

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

(2)

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)

(3)

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

(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

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

(5)

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)

(6)

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

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

(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

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.

(10)

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

Riferimenti

Documenti correlati

• 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

sarò portato a credere che la psiche non sia così contraria, alla precisione ed alla esattezza. Non cre- do al sorriso imperturbabile e misterioso della psiche, ai suoi

La classe di memoria automatica è relativa a quegli oggetti locali ad un blocco (funzione o programma) che viene liberata non appena si raggiunge la fine di quel blocco. La classe

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

- atoi: scrivere in linguaggio macchina una funzione che scriva nel registro R0 il valore intero positivo rappresentato dalla stringa ASCII presente in memoria a

– Nell'istruzione compare l'indirizzo effettivo (fisico) di memoria dove si trova l'operando – MOV AX, [3923:2314].. Modi

All'inizio del ciclo di elaborazione il registro PC (program counter) vale 1, e viene ogni volta incrementato SUBITO DOPO la fase di Fetch: in questo modo, l'esecuzione di

● stddef.h viene incluso indirettamente anche da altri header (es., stdio.h), quindi potrebbe non essere necessario includerlo esplicitamente.. La