Dr. Francesco Fabozzi Corso di Informatica

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
Informatica Generale Marzia Buscemi
Sistema operativo MS-DOS
Il Software.
Software di base: Linguaggi di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Dalla scrittura all’esecuzione
Evoluzione dei linguaggi di programmazione
I linguaggi di programmazione
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi di programmazione
Generalità Linguaggio e Macchina Astratta
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione alla programmazione
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
eliana minicozzi linguaggi1a.a lezione2
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Struttura dei sistemi operativi (panoramica)
Unità Didattica 1 Algoritmi
Unità Didattica 2 I Linguaggi di Programmazione
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Fondamenti di Informatica
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Espressioni condizionali
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
9. HARDWARE KERNEL O NUCLEO GESTORE DELLA MEMORIA GESTORE DELLE PERIFERICHE GESTORE DEI FILE INTERFACCIA UTENTE - GUI(Graphic Interface Unit) 2 ECDL MODULO.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Elementi di Informatica
...dal bit al linguaggio R. In principio era il bit… …Per intenderci 0 e 1, il linguaggio macchina. Tra gli anni '40 e gli anni '50, la programmazione.
Elementi di Informatica di base
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Lo sviluppo del software e i linguaggi di programmazione
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni Programmazione di Calcolatori: il compilatore e le sue.
INTERFACCIAMENTO ASSEMBLY - C++
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Linguaggi per COMUNICARE
Lezione 1 Panoramica sui paradigmi di programmazione
Dal problema all’ algoritmo
la traduzione dei programmi
Rappresentazione degli algoritmi
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
Il software Componente del computer costituita dai: –programmi di base per la gestione del sistema –programmi applicativi per l’uso del sistema Queste.
Scrivere e compilare programmi
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Il software Claudia Raibulet
Informatica Lezione 6 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Informatica e Informatica di Base
Io ho voluto dimostrarlo attraverso una delle mie passioni:
Problemi, algoritmi e programmazione
Fabio Scotti – Università degli Studi di Milano 1 Lezione 1 e 2 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani.
I linguaggi di programmazione -GALBIATI ALBERTO -ESPOSITO MATTIA.
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
Unità di apprendimento 6
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Dr. Francesco Fabozzi Corso di Informatica Programmazione Dr. Francesco Fabozzi Corso di Informatica

Programmazione La programmazione rappresenta la seconda fase della risoluzione di un problema tramite un elaboratore Consiste nella traduzione dell’algoritmo definito nella fase di analisi in una serie di istruzioni che possano essere eseguite dai circuiti elettronici dell’elaboratore (programma) Il linguaggio di programmazione “comprensibile” dall’hardware si chiama linguaggio macchina

Linguaggio macchina Strettamente legato all’hardware dell’elaboratore Chi programma in linguaggio macchina deve conoscere l’hardware della macchina che deve eseguire il programma Le istruzioni e i dati sono stringhe binarie La scrittura, lettura e il mantenimento di un programma sono difficili Operazioni anche semplici richiedono molte istruzioni elementari

Linguaggio macchina Esempio di istruzione in linguaggio macchina Carica nel primo registro libero della CPU il numero 8 0011 1000  8 Istruzione LOAD Rilevante sforzo da parte del programmatore anche per effettuare operazioni semplici!

Linguaggi simbolici I linguaggi simbolici si collocano a un livello immediatamente superiore al linguaggio macchina Si parla di “linguaggi a basso livello” Codifica simbolica delle istruzioni anziché binaria Ogni istruzione è identificata da una sigla Una variabile può essere rappresentata da un nome

Linguaggi simbolici I linguaggi simbolici necessitano di un programma per tradurre le istruzioni in linguaggio macchina (programma assemblatore) Questi linguaggi sono detti anche linguaggi assembler o assembly

Linguaggi simbolici Esempio di istruzione in linguaggio assembler MOV A 7  Scrivi 7 nella variabile A Il vantaggio di un linguaggio assembler su un linguaggio ad alto livello è la possibilità di ottimizzare il programma rispetto ai tempi di esecuzione

Linguaggi ad alto livello I linguaggi ad alto livello non sono legati alle componenti fisiche dell’elaboratore Sono più vicini al linguaggio naturale rispetto al linguaggio macchina  + Linguaggio macchina Assembler precisione potenza espressiva Linguaggi ad alto livello Linguaggio naturale  +

Linguaggi ad alto livello Ma rispetto al linguaggio naturale sono un linguaggio di programmazione ad alto livello è più formale e preciso Caratterizzato da una rigida semantica, grammatica e sintassi Anche per i linguaggi ad alto livello sono necessari programmi per la traduzione di un programma in linguaggio macchina Programmi compilatori e interpreti

Linguaggi ad alto livello Vantaggi Portabilità: lo stesso programma può essere usato su diversi elaboratori Leggibilità Mantenibilità: più facile correggere ed evolvere il programma anche da parte di persone diverse dall’autore originale Svantaggio Minore efficienza: controllo limitato sulla modalità di traduzione del compilatore

Programmazione strutturata Approccio disciplinato alla programmazione nato negli anni ’60 Obiettivi: realizzare programmi chiari, leggibili, facili da testare e modificare Facilita il mantenimento del software Elementi basilari: eliminazione dei salti uso sistematico degli schemi di sequenza, selezione, iterazione

Linguaggi procedurali Una categoria di linguaggi di alto livello è quella dei linguaggi procedurali Il programma viene diviso in diverse unità (procedure) ciascuna preposta allo svolgimento di una certa azione Una procedura può essere “chiamata” da un’altra e possono scambiarsi dati Il programma appare come una sequenza di chiamate di procedure accompagnato da un conseguente flusso di dati

Linguaggi Object-Oriented Esistono anche linguaggi non procedurali Citiamo per la loro importanza i cosiddetti “linguaggi orientati agli oggetti” Nel programma vengono definiti dei componenti software che modellizzano gli elementi del problema (oggetti) Vengono definite le loro proprietà e azioni insieme alla loro interfaccia-utente Il programma appare come una serie di oggetti che sono creati all’occorrenza e ai quali si possono impartire comandi

Ambiente di sviluppo Per scrivere un programma abbiamo bisogno di altri programmi! Si dice ambiente di sviluppo l’insieme dei programmi che sono di ausilio alla scrittura di programmi applicativi in un certo linguaggio di programmazione

Ambiente di sviluppo Un ambiente di sviluppo deve fornire: Editor: per la scrittura mediante tastiera del programma sorgente Programmi traduttori: per la traduzione in linguaggio macchina del programma sorgente Interprete oppure compilatore Debugger: per la ricerca di errori (detti anche bachi o bug) Analizza l’esecuzione del programma verificando passo passo il risultato delle singole istruzioni

Programma interprete Cosa fa un programma interprete: traduce ciascuna istruzione del programma sorgente in istruzioni macchina la esegue passa all’istruzione successiva In caso di errore: Si può correggere subito l’errore nel programma che potrà riprendere dal punto in cui si era interrotto Ma…

Programma interprete Ma… In genere programmi complessi hanno istruzioni che si ripetono diverse volte Questo significa che la traduzione in linguaggio macchina verrà ripetuta ogni volta I programmi interpreti sono poco efficienti per l’esecuzione di programmi complessi

Compilatore Cosa fa un compilatore: Esistono compilatori ottimizzati traduce l’intero programma sorgente in un programma in codice macchina (programma oggetto) Istruzioni ripetute sono tradotte una sola volta Esistono compilatori ottimizzati Generano un codice macchina particolarmente efficiente per un migliore utilizzo delle risorse hardware Ma…

Compilatore Ma… In caso di errore bisogna ricompilare il tutto e rigirare il programma dall’inizio I compilatori ottimizzati danno meno informazioni in caso di errore

Compilatore Per ovviare al problema di ricompilare tutto il programma in caso di errore, si divide il programma in moduli più piccoli da compilare separatamente Ottengo un certo numero di programmi oggetto I programmi oggetto contengono solo gli indirizzi di memoria relativi ma non quelli assoluti

Compilatore Si rende pertanto necessario un altro programma: programma assemblatore (Linker) Il linker trasforma i vari programmi oggetto in un unico programma eseguibile Assegna gli indirizzi di memoria assoluti Associa anche le librerie necessarie

Librerie Spesso programmi diversi richiedono di eseguire lo stesso tipo di operazioni Ad esempio il calcolo della radice quadrata di un numero E’ utile incapsulare queste operazioni in programmi (o program unit) separati che possono essere linkate alla fine col programma principale (main program) E’ preferibile pre-compilare tutti questi programmi separatamente e raggruppare i programmi oggetto in collezioni (dette librerie) che vengono linkate all’occorrenza dal linker

Dai sorgenti all’eseguibile editing compilazione linking programma oggetto (file .obj) programma sorgente programma oggetto (file .obj) programma eseguibile (file .exe) Scrivo programmi con un editor programma sorgente programma sorgente programma oggetto (file .obj)

Cenni storici Inizio anni ’50 Nascono i linguaggi simbolici 1956: nasce il FORTRAN (FORMula TRANslator) Primo linguaggio ad alto livello Per scopi scientifici ed ingegneristici 1960: nasce il COBOL (COmmon Business Oriented Language) Semplice e versatile Per applicazioni commerciali e gestionali

Cenni storici 1960-1970: proliferazione di numerosi linguaggi, tentativo di razionalizzare la definizione e le tecniche di implementazione dei linguaggi Nasce l’ALGOL 60 (viene considerato il capostipite dei linguaggi moderni) Inizio anni ’70: diffusione di linguaggi strettamente aderenti ai principi della programmazione strutturata

Cenni storici 1971: nasce il Pascal 1974: nasce il C Nasce in ambito scientifico, largo uso didattico Uso coerente della programmazione strutturata 1974: nasce il C Nasce in ambito scientifico Struttura aderente ai principi della programmazione strutturata Molto diffuso: programmi per la risoluzione di problemi molto complessi e per il software di base di sistemi

Cenni storici Anni ’70: nasce il SIMULA 67 Capostipite dei linguaggi Object-Oriented Dagli anni ’80 a oggi: sviluppo di linguaggi non procedurali, affermazione dei linguaggi Object-Oriented Versioni ad oggetti del C (C++) e del Pascal (TurboPascal 5.5) VisualBasic, Java