Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo,...

29
20/04/2005 LP2-04/05 - Intro 1 Laboratorio di Programmazione 2 Docente: Luca Forlizzi Orario: lun. 15:00-17:00, mar. 17:00-19:00, gio. 17:00-19:00 Ricevimento: lun. 17:00-18:00, mar. 16:00-17:00 Contatti: ricevimento (Coppito 2, stanza A-1-11) – forum del corso (http://informatica.univaq.it/forum/)

Transcript of Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo,...

Page 1: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 1

Laboratorio di Programmazione 2Docente: Luca ForlizziOrario: lun. 15:00-17:00, mar. 17:00-19:00, gio. 17:00-19:00

Ricevimento: lun. 17:00-18:00, mar. 16:00-17:00

Contatti: – ricevimento (Coppito 2, stanza A-1-11)– forum del corso (http://informatica.univaq.it/forum/)

Page 2: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 2

Obiettivi di apprendimento

• Conoscenze: nozioni di base della programmazione in linguaggio C.

• Capacità: essere in grado di implementare semplici algoritmi in linguaggio C; essere in grado di progettare e sviluppare programmi di complessità non banale

• Comportamenti attesi: interesse per l'attività di formalizzazione di problemi, dati e soluzioni in un linguaggio di programmazione, ed una costante attività di programmazione al calcolatore.

Page 3: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 3

Prerequisiti del Corso

• Conoscenze: nozioni di base della programmazione imperativa in linguaggio Java e della architetture dei sistemi di elaborazione, lettura e comprensione in lingua inglese, rudimenti di sistemi operativi

• Capacità: essere in grado di risolvere problemi semplici, saper implementare i relativi algoritmi correttamente in linguaggio Java, essere in grado di utilizzare il calcolatore per eseguire semplici programmi.

Page 4: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 4

Modalità di esame

1. Prova intermedia: scritta2. Prova finale: scritta e/o al calcolatore3. Prova finale:

• Sviluppo progetto (per chi ha superato l’esame di Laboratorio di Programmazione 1)

• Orale (per gli altri)

Page 5: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 5

LP2 e gli Altri

LP2

Lab. Prog. 1 Architetture 1 Lab. Arch. 1

Sist. OperativiLab. Algoritmi

Fond. Prog.

Page 6: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 6

Libri di testoTesti di riferimento1. H.M.Deitel, P.J.Deitel, C Corso Completo di

Programmazione, Apogeo, seconda edizione, ISBN 88-503-2254-2

2. B.W.Kernighan, D.M.Ritchie, Il Linguaggio C, Pearson Education Italia, seconda edizione, ISBN 88-7192-200-X

Testi consigliati per approfondimenti3. A.Bellini, A.Guidi, Linguaggio C, McGraw-Hill, seconda

edizione, ISBN 88-386-6103-0 4. A.Kelley, I.Pohl, C Didattica e Programmazione,

Pearson Education Italia, quarta edizione, ISBN 88-7192-219-0

5. H.Schildt, C la Guida Completa, McGraw-Hill, terza edizione, ISBN 88-386-4152-8

Page 7: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 7

Libri di testo1. La presentazione è un'introduzione alla programmazione

attraverso il C. Particolarmente indicato per il programmatore inesperto in quanto introduce alla programmazione strutturata. Ipunti di forza sono la trattazione della gestione dei files, dello standard C99, degli strumenti di sviluppo, delle tecniche di programmazione strutturata e di elementi di ingegneria del software. Ha molti esercizi, parecchi dei quali con soluzione.

2. La presentazione del linguaggio è eccellente e opta per un approccio sistematico. Molto completo e allo stesso tempo sintetico ed elegante, è più adatta per chi già conosca i fondamenti della programmazione in altri linguaggi. Punti di forza sono la descrizione completa della Libreria Standard, e dell'interazione dei programmi con il sistema operativo.

Page 8: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 8

Libri di testo3. La presentazione è un'introduzione alla programmazione

attraverso il C. Particolarmente indicato per il programmatore inesperto in quanto introduce alla programmazione strutturata. Rispetto agli altri testi, è leggermente più portato ad approfondimenti teorici. In generale tratta con meno dettaglio aspetti tecnologici, ma presenta in dettaglio un'applicazione avanzata, ovvero la programmazione di un Web Server. Ha molti esercizi, parecchi dei quali con soluzione.

4. La presentazione è un compromesso tra introduzione alla programmazione e esposizione sistematica, rivolgendosi sia al principiante che all'esperto. Alcuni approfondimenti teorici. I punti di forza sono l'esauriente descrizione degli strumenti di sviluppo e dell'interazione dei programmi con il sistema operativo. Proponemoltissimi esercizi ma senza soluzione.

Page 9: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 9

Libri di testo5. Il testo fa un esposizione sistematica e molto esauriente, che lo

rende adatto al programmatore esperto e al professionista che vuole essere in grado di programmare applicazioni reali velocemente. I punti di forza sono la trattazione di elementi diingegneria del software, della Libreria Standard, la descrizionedello standard C99 chiaramente differenziata da quella del C89, la trattazione della gestione dei files, della programmazione inambiente Windows e la costruzione di un Interprete C. Aspetti negativi sono lo scarso approfondimento della programmazione in ambiente Unix e la mancanza di esercizi.

Page 10: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 10

Libri di testo

Consigli:• Principiante: 1,3,4• Esperto:2,4,5• Interessi teorici: 3,4• Presentazione sintetica (“il succo del discorso”): 1,2,3• Presentazione completa: 2,4,5• Enciclopedia del C: 5• Aspetti applicativi: 1,4,5

Page 11: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 11

Perché il C? (C vs. all)

• è piccolo,poche parole chiave (ma non meno potente di altri), facile da imparare

• è il linguaggio nativo di Unix, è lo standard in molti ambienti operativi

• è abbastanza portatile (libreria standard, supporto al codice dipendente)

Page 12: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 12

Perché il C? (C vs. all)

• combina eleganza e potenza, produttività• supporta la programmazione struttrata• è efficiente in molte architetture• è alla base di C++ e Java

Page 13: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 13

Caratteristiche del linguaggio

• stile imperativo• non creato da specifica formale ma in

modo pragmatico, per risolvere problemi reali (programmazione di Unix)

• si è diffuso con Unix

Page 14: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 14

Caratteristiche

• è semplice e piccolo, dunque può essere compilato con poche risorse di calcolo

• operazioni e tipi vicine a quelle dei calcolatori reali, dunque favorisce la creazione di programmi efficienti

• allo stesso tempo è sufficientemente astratto da garantire un buon grado di portabilità

Page 15: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 15

Caratteristiche

• C e la sua libreria di supporto sono bene integrati in un ambiente operativo reale

• è stato realizzato cercando di coprire i bisogni essenziali per ogni programmatore senza aggiungere troppo (perdendo efficienza)

• nonostante la diffusione in molti ambienti operativi, è rimasto stabile e unificato (penso grazie alla diffusione di molte varianti Unix)

Page 16: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 16

Caratteristiche del C

• sintassi complicata, non usuale– di non facile apprendimento– poco leggibile– molto compatta, elegante– vicina alle operazioni dei calcolatori reali– favorisce produzione codice efficiente

• manca controllo sui limiti degli array• manca gestione automatica della memoria• non abbastanza modulare per grandi progetti

Page 17: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 17

Stili di programmazione

• assembly• imperativo• ad oggetti• funzionale• logico

Page 18: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 18

Funzionamento di un Elaboratore

• CPU e memoria• La memoria è una sequenza finita di bit,

suddivisi in gruppi di lunghezza finita (tipicamente 8, 16, 32, 64, 128) chiamati genericamente parole

• Ogni parola ha un indirizzo, costituito da un numero

Page 19: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 19

Funzionamento di un Elaboratore

• Parole consecutive hanno indirizzi consecutivi

• La memoria può essere vista come una sequenza di parole aventi indirizzi compresi tra 0 e Max

• Tipicamente Max=2^K, K=16,32,64

Page 20: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 20

Funzionamento di un Elaboratore

• L’indirizzo di una parola funge da chiave di accesso per la CPU

• la CPU può accedere con un’unica operazione ad una qualunque parola, immettendo l’indirizzo della parola richiesta nel bus indirizzi che collega CPU e memoria

Page 21: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 21

Funzionamento di un Elaboratore

• La CPU legge bit dalla memoria e li utilizza in vari modi:– codifica di istruzioni– numeri (vari formati, es. interi/floating point,

con/senza segno, binari/decimali)– caratteri– campi di bit

Page 22: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 22

Linguaggio Macchina/Assembly

• Ogni istruzione è un numero (stringa binaria) lunga un numero finito di bit e memorizzata nella RAM

• Le istruzioni vengono prelevate dalla memoria ed eseguite una alla volta

• Dopo l’esecuzione di un’istruzione la CPU automaticamente legge la prossima istruzione

Page 23: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 23

Linguaggio Macchina/Assembly

• Normalmente dopo un’istruzione viene eseguita quella che la segue immediatamente nella memoria

• Le istruzioni di salto inducono la CPU a proseguire l’esecuzione con un’istruzione memorizzata in una cella non consecutiva

• Rif. materiale corsi Arch. e Lab. Arch.

Page 24: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 24

Linguaggi imperativi a medio/alto livello

Astrazione della memoria (da organizzazione reale a organizzazione logica dei dati e delle istruzioni)

• variabili (e altre strutture dati) astraggono sequenze di bit che rappresentano dati

• istruzioni astraggono istruzioni• strutture controllo astraggono istruzioni di

salto

Page 25: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 25

Ling. imperativi vs. assembly• Variabile vs. locazioni di memoria

– Label invece che indirizzo– Maschera struttura loc. memoria: comodo e

portatile• Struttura vs. insiemi di locazioni

– Una struttura identifica una correlazione tra parole

• Tipo di dato: assembly vs. ling. Imperativo– In asm èmassociato all’istruzione– In ling. è associato alla variabile: controllo

Page 26: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 26

Ling. imperativi vs. assembly

• Le operazioni di un linguaggio:– sono più comode da usare (sintassi

matematica)– sono più simili alle operazioni matematiche

(es. arrotondamento)– non dipendono da caratteristiche

dell’hardware (es. overflow nella divisione)– sono più potenti (es. elevamento a potenza)

Page 27: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 27

Ling. imperativi vs. assembly

• le strutture di controllo e il concetto di funzione astraggono gli usi più frequenti/più logici delle istruzioni di salto, incoraggiando a limitarsi solo tali usi

Page 28: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 28

Linguaggi ad oggetti

Astraggono la differenza tra dati e istruzioni e il concetto di sequenza di istruzioni attraverso il concetto di oggetti in comunicazione reciproca

Page 29: Laboratorio di Programmazione 2 · programmazione imperativa in linguaggio Java e ... Apogeo, seconda edizione, ISBN 88- ... fondamenti della programmazione in altri linguaggi.

20/04/2005 LP2-04/05 - Intro 29

C vs. Java

• Java ha studiato la lezione del C (ed anche altre)

• adotta sintassi e strutture di controllo del C• oggetti vs. strutture• oggetti vs. flusso di esecuzione

sequenziale• macchina virtuale vs. portatilità del C• macchina virtuale vs. efficienza