Linguaggi di programmazione



Похожие документы
Corso di Fondamenti di Informatica Linguaggi di Programmazione

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

INFORMATICA 1 L. Mezzalira

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Linguaggi e Paradigmi di Programmazione

FONDAMENTI di INFORMATICA L. Mezzalira

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

La Macchina Virtuale

Linguaggi di programmazione

Corso di Informatica

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

CPU. Maurizio Palesi

Richiami di informatica e programmazione

Architettura del calcolatore

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Introduzione. Informatica B. Daniele Loiacono

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Organizzazione della memoria principale Il bus

Dispensa di Informatica I.1

Esame di INFORMATICA

Organizzazione della memoria

Variabili e tipi di dato

Architettura di un calcolatore

Corso di Laurea in Informatica Architetture degli Elaboratori

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Architettura di un computer

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Ing. Paolo Domenici PREFAZIONE

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Lezione 8. La macchina universale

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Base di dati e sistemi informativi

Che cosa è un VIRUS?

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

C. P. U. MEMORIA CENTRALE

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Origini e caratteristiche dei calcolatori elettronici

la scienza della rappresentazione e della elaborazione dell informazione

Architettura hardware

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Codifica: dal diagramma a blocchi al linguaggio C++

Software di base. Corso di Fondamenti di Informatica

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Informazione analogica e digitale

Programmazione ad Oggetti. Java Parte I

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Metodologie di programmazione in Fortran 90

Sistema operativo: Gestione della memoria

Programmi. Algoritmi scritti in un linguaggio di programmazione

Fasi di creazione di un programma

Approccio stratificato

Automazione Industriale (scheduling+mms) scheduling+mms.

Note per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Corso di: Abilità informatiche

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Il Sistema Operativo (1)

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

01/05/2014. Dalla precedente lezione. Ruolo dei sistemi operativi. Esecuzione dei programmi

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

LINGUAGGI DI PROGRAMMAZIONE

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Informatica - A.A. 2010/11

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Laboratorio di Informatica

Protezione. Protezione. Protezione. Obiettivi della protezione

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Corso di Sistemi di Elaborazione delle informazioni

Транскрипт:

Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore che realizzano un particolare algoritmo, ma Linguaggio macchina ma quali sono le caratteristiche di tale linguaggio? è codificato tramite sequenze di bit accede ai dati tramite gli indirizzi di memoria o i registri interni della CPU ogni istruzione può compiere solo azioni molto semplici non gestisce direttamente i tipi di dati di interesse è strettamente legato alla particolare macchina su cui è definito Non a caso viene definito linguaggio macchina

Scrivere un programma Se si volesse implementare un dato algoritmo attraverso la scrittura di un programma sarebbe quindi necessario: conoscere dettagliatamente tutti i codici operativi e la loro codifica decidere in quali registri (di memoria o interni alla CPU) vadano memorizzati i dati determinare, per ogni singola operazione richiesta dall algoritmo, la sequenza di istruzioni in linguaggio macchina che la realizzano definire un opportuna tecnica di codifica per ogni tipo di dati considerato limitarsi a utilizzare solo i calcolatori per cui esista una tale competenza, tenendo comunque presente che il programma scritto per un certo calcolatore non è eseguibile su altre macchine Impresa difficile, ma non impossibile Il gap semantico Esecutore umano linguaggio naturale gestione completa dei tipi istruzioni semanticamente ricche Calcolatore linguaggio rigido e complicato gestione dei tipi quasi nulla istruzioni estremamente semplici

Linguaggio di programmazione Esecutore umano linguaggio naturale gestione completa dei tipi istruzioni semanticamente ricche Orientato al problema Linguaggio di programmazione linguaggio formale, con costrutti precisi per la definizione dei dati e delle operazioni gestione completa dei tipi fondamentali; possibilità di definire tipi strutturati istruzioni che realizzano le principali azioni elaborative richieste Orientato alla macchina Calcolatore linguaggio rigido e complicato gestione dei tipi quasi nulla istruzioni estremamente semplici Vantaggi L uso di un linguaggio di programmazione permette di : realizzare un programma che implementa l algoritmo in maniera precisa ed in un linguaggio ad alto livello trascurare tutti i dettagli relativi alla rappresentazione dei dati nei registri definire un programma che non dipende dal particolare calcolatore su cui è stato realizzato

Linguaggio=macchina virtuale In effetti, l utente non deve interagire con la macchina reale e le sue limitazioni, ma vede una macchina virtuale che nasconde le particolarità della macchina reale e con la quale è molto più agevole interagire. Bus di sistema CPU M C M M IF 1 IF2 Unità esterne Dal linguaggio ad alto livello al linguaggio macchina I linguaggi di programmazione ad alto livello sono linguaggi formali, che rispettano delle regole rigide, riguardanti sia il lessico che la sintassi del linguaggio. In tal modo viene eliminata l ambiguità e le ridondanze tipiche del linguaggio naturale ed è possibile realizzare in modo automatico l analisi di un programma scritto in un linguaggio ad alto livello e la sua traduzione in linguaggio macchina.

Programmi traduttori I programmi che svolgono il compito di tradurre un programma in linguaggio ad alto livello in un programma in linguaggio macchina sono detti traduttori e si dividono in due categorie: compilatori interpreti Compilatori I compilatori eseguono la traduzione sull intero programma in linguaggio ad alto livello. La traduzione viene realizzata tramite alcune fasi di analisi durante le quali si possono riscontrare degli errori, cioè delle non rispondenze alle regole formali del linguaggio. In caso di errori la traduzione non viene completata ed il programmatore viene informato sulla natura degli errori riscontrati e sulla loro posizione nel programma. Se non riscontra errori, il compilatore produce il programma in linguaggio macchina, direttamente eseguibile dal calcolatore

Interpreti Anche gli interpreti eseguono una fase di analisi e produzione di linguaggio macchina. La differenza rispetto ai compilatori è che l interprete prende in esame un istruzione alla volta, realizzandone la traduzione e l esecuzione. Quindi, per ogni istruzione del programma in linguaggio ad alto livello, l interprete analizza l istruzione e verifica la presenza di errori in caso di errori, la traduzione viene arrestata; altrimenti, si producono e si eseguono le istruzioni in linguaggio macchina corrispondenti. Differenze tra compilatori e interpreti Dal punto di vista dell efficienza, l esecuzione di un programma compilato è molto più veloce di quella di un programma interpretato. L uso di un interprete potrebbe essere di aiuto nelle prime fasi di sviluppo di un programma, in quanto permette un immediata verifica della funzionalità del codice realizzato.

Fasi di produzione di un programma Le fasi per la produzione di un programma che possa essere eseguito da un calcolatore sono quindi: definizione dell algoritmo e dei dati implementazione dell algoritmo tramite un programma in un linguaggio ad alto livello traduzione in linguaggio macchina esecuzione del programma in linguaggio macchina L ambiente di sviluppo Nelle varie fasi c è l ausilio di opportuni programmi per: la scrittura del programma in linguaggio ad alto livello (text editors) la traduzione (compilatori o interpreti) la verifica in esecuzione (debuggers) Editor Traduttore esecuzione Linguaggio ad alto livello Linguaggio macchina

Editor E un programma che permette la scrittura e la memorizzazione su file delle istruzioni in linguaggio ad alto livello. Il file prodotto è un file di tipo testo: contiene, cioè, i caratteri scritti codificati in codice ASCII. In questo modo, è modificabile da altri programmi di text editing (es. NotePad) e trasferibile tra macchine diverse. Alcuni editors sono orientati al linguaggio, nel senso che organizzano il testo del programma in modo che sia resa più efficace la visualizzazione del codice. Tipiche caratteristiche di tali editors sono: Indentazione Syntax highlighting Debugger E un programma che permette l esecuzione passo-passo del programma eseguibile, visualizzando lo stato corrente dei dati del programma. In questo modo è possibile verificare la rispondenza del codice prodotto all algoritmo da implementare.