• Non ci sono risultati.

Linguaggio macchina

N/A
N/A
Protected

Academic year: 2021

Condividi "Linguaggio macchina "

Copied!
9
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 è rappresentata/o 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 (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

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) HyperText Markup Language (HTML), eXtensible Markup Language (XML)

Linguaggi di Scripting (1993 e successivi), sviluppo di pagine Web (formattazione e specifica contenuti)

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

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 eseguibile in memoria per poterne effettuare 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

(5)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 9

Programmatore

Soluzione TRADUZIONE/

INTERPRETAZIONE Programma oggetto

ESECUZIONE ESECUZIONE

Esecutore

Sviluppo di un programma

Problema ANALISI

ANALISI Caratterizzazione del problema

STESURA PROGRAMMA

Programma sorgente Definizione Algoritmo

Definizione Algoritmo

Sviluppo di programmi

Analisi:

Comprensione 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 il cui schema è:

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

possono essere introdotti/utilizzati altri 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 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

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

• 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