Linguaggi di programmazione



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

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

Linguaggi e Paradigmi di Programmazione

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

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

Linguaggi di programmazione

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

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

La Macchina Virtuale

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

Corso di Informatica

Programmi. Algoritmi scritti in un linguaggio di programmazione

Dispensa di Informatica I.1

Corso di INFORMATICA 2 (Matematica e Applicazioni)

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

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

Origini e caratteristiche dei calcolatori elettronici

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

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

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Metodologie di programmazione in Fortran 90

Appunti del corso di Informatica 1 (IN1 Fondamenti) 2 Introduzione alla programmazione

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Esame di INFORMATICA

FONDAMENTI di INFORMATICA L. Mezzalira

Architettura di un calcolatore

Lezione 8. La macchina universale

Come ragiona il computer. Problemi e algoritmi

Introduzione. Informatica B. Daniele Loiacono

Richiami di informatica e programmazione

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Architettura del calcolatore

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

INFORMATICA 1 L. Mezzalira

Problemi, Algoritmi e Programmi

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

Ing. Paolo Domenici PREFAZIONE

LINGUAGGI DI PROGRAMMAZIONE

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Strutturazione logica dei dati: i file

Introduzione alla programmazione in C

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

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

C. P. U. MEMORIA CENTRALE

Approccio stratificato

Fasi di creazione di un programma

Informatica - A.A. 2010/11

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

Introduzione ai linguaggi di programmazione

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

CPU. Maurizio Palesi

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

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

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Corso di Informatica

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Informazione e dato. Gabriella Trucco

Progettaz. e sviluppo Data Base

Sistema operativo: Gestione della memoria

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

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

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

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

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

CHE COS È L INFORMATICA

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

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

Struttura del calcolatore

Cos è un Calcolatore?

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

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

DAL PROBLEMA AL PROGRAMMA

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio

Architettura di un computer

Modellazione di sistema

Introduzione alla Programmazione

Cosa è un foglio elettronico

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

Nozione di algoritmo. Gabriella Trucco

INFORMATICA E COMPUTER : INTRODUZIONE

Architettura hardware

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Automazione Industriale (scheduling+mms) scheduling+mms.

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

Architettura dei computer

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

Analizzatore lessicale o scanner

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Laboratorio di Informatica

Per capire meglio l ambito di applicazione di un DWhouse consideriamo la piramide di Anthony, L. Direzionale. L. Manageriale. L.

Transcript:

Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input Elaboratore Elettronico Risultati Output Fondamenti di Informatica 2

Linguaggio di programmazione Insieme di regole per la descrizione formale di un algoritmo eseguibile da un calcolatore: Lessico (alfabeto): insieme dei termini disponibili Sintassi: forma delle frasi Semantica: significato delle frasi Fondamenti di Informatica 3 Algoritmi, programmi e calcolatori Ogni elaboratore è una macchina in grado di eseguire azioni elementari su oggetti detti DATI L esecuzione delle azioni è richiesta all elaboratore tramite comandi elementari chiamati ISTRUZIONI espresse mediante un opportuno formalismo: il LINGUAGGIO DI PROGRAMMAZIONE La formulazione testuale di un algoritmo in un linguaggio comprensibile ad un elaboratore è detta PROGRAMMA Fondamenti di Informatica 4

Programma Un programma è un testo scritto in accordo alla sintassi e alla semantica di un linguaggio di programmazione Un programma è la formulazione testuale, in un certo linguaggio di programmazione, di un algoritmo che risolve un dato problema È composto da un numero finito di istruzioni Ogni istruzione descrive una operazione Fondamenti di Informatica 5 Algoritmo e programma Passi per la risoluzione di un problema: Individuazione di un procedimento risolutivo Scomposizione del procedimento in un insieme ordinato di azioni ALGORITMO Rappresentazione dei dati e dell algoritmo attraverso un formalismo comprensibile dal calcolatore PROGRAMMA Problema Algoritmo Programma Metodo risolutivo Linguaggio di programmazione Fondamenti di Informatica 6

Compiti del programmatore Analizzare il problema riducendolo in termini astratti, eliminando ogni componente non indispensabile e formulando un modello del problema. Individuare una strategia risolutiva e ricondurla ad un algoritmo. Codificare l algoritmo in modo tale da renderlo comprensibile al calcolatore. Analizzare il risultato dell elaborazione evidenziando eventuali errori nella formulazione del problema, nella strategia risolutiva, nella codifica dell algoritmo. Fondamenti di Informatica 7 Competenze ed abilità del programmatore Deve essere in grado di capire i problemi e schematizzarli, distinguendone le diverse componenti (dati in input, parametri del problema, dati in output). Deve essere in grado di risolvere problemi mediante un approccio algoritmico, individuando gli aspetti del problema che possano essere risolti reiterando più volte operazioni simili. Deve conoscere i metodi fondamentali di risoluzione dei problemi, gli approcci più comuni, le strade notoriamente meno convenienti. Deve conoscere a fondo le caratteristiche e le capacità del calcolatore. Deve essere in grado di comunicare con il calcolatore: ne deve conoscere il linguaggio. Fondamenti di Informatica 8

Linguaggi di programmazione Classificati rispetto alle caratteristiche principali: potere espressivo che influenza lo stile di programmazione Fondamenti di Informatica 9 Linguaggi Diversi tipi di linguaggi: Imperativi Funzionali Dichiarativi A oggetti Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina Fondamenti di Informatica 10

Linguaggio Macchina Insieme di istruzioni eseguibili dalla CPU Dipende dalla CPU: cablata al suo interno, ogni istruzione genera una sequenza di segnali di controllo Linguaggio di basso livello si può accedere direttamente alle funzionalità di base del calcolatore Fondamenti di Informatica 11 Linguaggio Macchina Complesso da utilizzare: ogni istruzione esegue un'operazione semplicissima esistono librerie con procedure generali Gli altri linguaggi vengono convertiti in sequenze di istruzioni in linguaggio macchina Fondamenti di Informatica 12

Linguaggio Macchina Il Linguaggio Macchina è estremamente efficiente I programmi sono: più veloci più corti ma più complessi Fondamenti di Informatica 13 Linguaggi - basso livello Il linguaggio macchina specifica solo le operazioni che l'elaboratore può eseguire sintattica molto elementare" diverso per ogni processore dipende dalle caratteristiche architetturali della CPU E' più orientato alla macchina che ai problemi da trattare è infatti definito di "basso livello Le istruzioni devono essere espresse come sequenze di bit! Fondamenti di Informatica 14

Linguaggio Macchina La scrittura è complessa: istruzioni formate da stringhe di 1 e 0: quindi è necessario un insieme di simboli (Linguaggio Assembly) per referenziare le locazioni di memoria è necessario avere delle etichette necessario commentare ogni istruzione Fondamenti di Informatica 15 Linguaggi - basso livello Una prima evoluzione è stata l'introduzione di linguaggi simbolici: linguaggi assemblativi (assembly) ancora orientati alla macchina e non ai problemi più immediati da utilizzare definiscono variabili, simboli,... Fondamenti di Informatica 16

Linguaggi - alto livello Altri linguaggi sono basati su: la descrizione del problema in modo intuitivo, dimenticandosi che verranno eseguiti da un calcolatore obiettivo: fornire un mezzo espressivo per specificare all'elaboratore il compito da eseguire Fondamenti di Informatica 17 Linguaggi - alto livello Caratteristiche: ognuno ha i propri paradigmi che garantiscono forme espressive appropriate per alcuni problemi specifici questa specificità ha favorito la loro proliferazione (fenomeno intrinseco alla natura del linguaggio come forma di comunicazione) Fondamenti di Informatica 18

Linguaggi La programmazione a basso livello è più ardua e meno intuitiva, ma consente di sviluppare programmi efficienti. Ad alto livello la programmazione è più naturale e rapida, ma è possibile che non consenta di produrre software efficiente. Efficienza del programma Programmazione a basso livello Programmazione ad alto livello Facilità e velocità di programmazione Fondamenti di Informatica 19 Tipologie di linguaggi Possiamo aggregare i numerosi linguaggi di programmazione esistenti (ad alto livello) sulla base del modello astratto di programmazione che sottintendono e che è necessario adottare per utilizzarli. Linguaggi di programmazione Imperativi Dichiarativi Procedurali C, Pascal, Fortran Ad oggetti C++, Java Paralleli Funzionali Lisp Logici Prolog Fondamenti di Informatica 20

Linguaggi Imperativi permettono di descrivere operazioni più complesse di quelle che l'elaboratore può eseguire direttamente livello di astrazione più alto risalgono agli anni '50 detti di alto livello di tipo imperativo Es: Basic, Fortran, Pascal, C Fondamenti di Informatica 21 Linguaggi Imperativi Caratteristiche: di utilizzo più semplice indipendenti dall'elaboratore purtroppo ancora legati al modello di Von Neumann: i programmi sono ancora una sequenza di istruzioni; l'evoluzione del calcolo è costituita da una variazione dello stato della memoria Fondamenti di Informatica 22

Linguaggi Imperativi Eseguono 3 tipi di operazioni: trasferimento dati operazioni aritmetiche alterazione del flusso del programma Fondamenti di Informatica 23 Linguaggi Funzionali Non sono legati al modello di Von Neumann ma al concetto di programmazione funzionale Il primo linguaggio funzionale: Lisp (List Processing), fine anni '50 caratteristiche di manipolazione agevole di informazioni di tipo simbolico Fondamenti di Informatica 24

Linguaggi Funzionali Differenze con i linguaggi imperativi: il calcolo è basato sul calcolo di valori e non sull'assegnamento di valori a variabili basato su valori e non su effetti il risultato è il risultato di una funzione, non l'effetto causato dalla esecuzione di una sequenza di operazioni Fondamenti di Informatica 25 Linguaggi Logici Basati sulla logica obiettivo: formalizzare il ragionamento caratterizzati da meccanismi deduttivi Programmare significa: descrivere il problema con formule del linguaggio interrogare il sistema, che effettua deduzioni sulla base delle definizioni Fondamenti di Informatica 26

Linguaggi Logici Programmazione: semplice (occorre solo definire la propria conoscenza del problema) avviene tramite una formulazione dichiarativa Esempio: Prolog Fondamenti di Informatica 27 Linguaggi a Oggetti Sono nati di recente Favoriscono la modularità ed il riutilizzo del codice Modellazione del problema da risolvere come un insieme di oggetti che si scambiano messaggi Es: C++, Java Fondamenti di Informatica 28

Traduzione dei programmi Affinchè un programma scritto in un qualsiasi linguaggio di programmazione sia comprensibile (e quindi eseguibile) da un calcolatore, occorre tradurlo dal linguaggio originario al linguaggio della macchina Questa operazione viene normalmente svolta da speciali programmi detti traduttori Fondamenti di Informatica 29 Traduzione di un programma Il traduttore converte: Il testo di un programma scritto in un particolare linguaggio di programmazione (sorgente) nella corrispondente rappresentazione in linguaggio macchina (programma eseguibile) sorgente X=X+1; If X>0 traduzione eseguibile 0010100 01001.. 10010 Fondamenti di Informatica 30

Compilatori e Interpreti Esistono due categorie di traduttori: i compilatori: traducono l intero programma (senza eseguirlo) e producono in uscita il programma convertito in linguaggio macchina gli interpreti: traducono ed eseguono immediatamente ogni singola istruzione del programma sorgente Fondamenti di Informatica 31 Interprete L interprete: itera più volte questo processo Legge un istruzione del programma sorgente Traduce l istruzione in linguaggio macchina Esegue l istruzione Passa all interpretazione dell istruzione successiva Al termine di questa operazione, del programma in linguaggio macchina non rimane alcuna traccia (la traduzione non viene memorizzata) Se il programma torna più volte su una stessa istruzione, questa verrà tradotta (ed eseguita) ogni volta. È necessario disporre dell interprete per poter eseguire il programma. Fondamenti di Informatica 32

Compilatore Compilatore: esegue una sola volta il processo Legge tutte le istruzioni del programma sorgente e le traduce in linguaggio macchina. Memorizza su disco il programma eseguibile tradotto in linguaggio macchina. Al termine della compilazione avremo un programma eseguibile in linguaggio macchina. La traduzione di ogni istruzione del programma avviene una sola volta, anche se una stessa istruzione viene ripetuta più volte all interno del programma. Non ho bisogno di avere il compilatore ed il sorgente per eseguire il programma: mi basta il programma eseguibile Fondamenti di Informatica 33 Compilatori e Interpreti sorgente X=X+1; If X>0 traduzione eseguibile 0010100 01001.. 10010 esecuzione Nel caso del compilatore, lo schema precedente viene percorso una volta sola, prima dell esecuzione Nel caso dell interprete, lo schema viene invece attraversato tante volte quante sono le istruzioni che compongono il programma Fondamenti di Informatica 34

Compilatori e Interpreti Tipicamente, l esecuzione di un programma compilato è più veloce dell esecuzione di un programma interpretato Fondamenti di Informatica 35 Esecuzione dei programmi Nel caso dei compilatori, l'esecuzione di un programma scritto con un linguaggio ad alto livello è preceduta dai seguenti passi: 1. traduzione in linguaggio macchina 2. collegamento con programmi di supporto (calcoli, comunicazione con periferiche, ) 3. caricamento in memoria Fondamenti di Informatica 36

Traduzione in linguaggio macchina: compilatore Viene suddivisa in 2 passi: analisi (lessicale, grammaticale, contestuale) trasformazione del programma sorgente in programma oggetto (forma più vicina al linguaggio macchina): creazione tabella simboli ottimizzazioni (rimozione ripetizioni, eliminazione cicli, sfruttamento registri, ); livelli di ottimizzazione Fondamenti di Informatica 37 Collegamento con programmi di supporto linker Il codice oggetto così formato: può ancora contenere dei simboli irrisolti riferimenti esterni a programmi di servizio (accesso alle periferiche, calcoli matematici,...) contiene indirizzi relativi Il linker serve per collegare diversi moduli oggetto, e formare un unico programma eseguibile Fondamenti di Informatica 38

Caricamento in memoria: loader Il Loader serve per caricare in memoria un programma Nel caricamento vengono fissati tutti gli indirizzi relativi variabili, salti, Vengono caricati anche i moduli di supporto, se necessari Fondamenti di Informatica 39 Costruzione manuale In passato, la costruzione dell eseguibile si faceva a mano, attivando compilatore e linker dalla linea di comando del sistema operativo (DOS, Unix,...) C:\PROVA> gcc -c f1.c (genera f1.obj) C:\PROVA> ld -o prog.exe f1.obj lc (genera prog.exe) Eseguibile da produrre File oggetto Libreria di sistema C Fondamenti di Informatica 40

Ambienti Integrati Oggi, gli ambienti di lavoro integrati (IDE Integrated Development Environments) automatizzano la procedura: compilano i file sorgente (se e quando necessario) invocano il linker per costruire l eseguibile ma per farlo devono sapere: quali file sorgente costituiscono l applicazione il nome dell eseguibile da produrre. Fondamenti di Informatica 41