Documente Academic
Documente Profesional
Documente Cultură
Fondamenti di Informatica
modulo B d l
Corso di Laurea in Ingegneria dellInformazione
OBIETTIVI (modulo B) ( d l
Approfondire luso del linguaggio C rispetto a quanto noto l uso dal modulo A (propedeutico) P Presentare le principali strutture di dato utilizzate per l i i li d ili applicazioni informatiche e gli algoritmi associati (discutendone la complessit) Introdurre il concetto di componente software (modulo, tipo dato t tt ti di d t astratto, classe e oggetto) l tt ) Presentare i principi della programmazione a oggetti e il linguaggio Java Sperimentare librerie di componenti Java per le strutture di dato (JCF)
2
ORGANIZZAZIONE
Lezioni il luned e marted h 11-13 30 Aula 1 (alcune in marted, h. 11 13.30 Laboratorio di Informatica Grande) Tutorato: esercizi in Laboratorio, complementari alle p p lezioni e di ausilio alla preparazione allesame Parte integrante del corso, vertono sullo sviluppo di semplici programmi C e Java proposti a lezione In Laboratorio il marted, dalle h. 14 Ricevimento nel II semestre: Ogni luned, dalle 15 alle 17 g Dip. di Ingegneria, III piano tel. interno 4894
3
Riferimento per: Rif i t materiale didattico (lucidi delle lezioni, esercizi, programmi svolti) struttura e modalit desame testi dei compiti desame e loro soluzione Avvisi su lezioni che si svolgeranno in Laboratorio
4
Esame: Esame:
In due parti (A e B separati), alla fine di ogni separati), modulo Voto finale = media delle pro e par iali prove parziali Solo per chi ha gi superato il parziale modulo A In un unica parte (A B), alla fine di tutto il corso un'unica (A+B (A B), A+B),
programma eseguibile
a domande aperte su OOP e Java, [+ teoria della parte A se non gi superato il parziale]) parziale]
<=1h
scritto, teoria
E E facoltativo richiedere un esame orale Non possibile consultare appunti o testi durante le p p pp prove (sia scritte sia pratiche).
7
APPELLI DESAME
Date e liste desame pubblicate prossimamente sul portale: http://studiare.unife.it Indicativamente 22 Giugno e uno a Luglio Ore 8.45-9 prova pratica in Lab. di Informatica, a 8.45Lab. seguire prova C e scritto nel pomeriggio)
PREREQUISITI... PREREQUISITI
Modulo A (almeno studiato (almeno e assimilato se non superato il parziale ) per affronatre e superare lesame indispensabile fare costantemente esercizi f t t t i i al calcolatore
studio
Esercizi al calcolatore
LABORATORIO
Attivit di esercitazione assistita da tutore Attivit di esercitazione libera
9
TUTORATO (LABORATORIO)
Attivit di esercitazione assistita da tutore E Esercizi proposti a l i i i ti lezione e risolti i lti individualmente, con il supporto dei tutori Quando: il marted alle ore 14 in Lab. Informatica Grande Iscriversi alla lista creata come appello (prova parziale 15 Marzo 2011) parziale,
10
INFORMAZIONI UTILI
Orario di Ricevimento
Luned h. 15 -17 c/o Dipartimento di Ingegneria, III piano (blu)
ufficio 324.
Approfittare del laboratorio Chiedere ai tutor: Massimiliano Cattafi massimiliano.cattafi@unife.it Denis Ferraretti denis.ferraretti@unife.it
11
12
14
Per la parte sul linguaggio Java, qualsiasi testo introduttivo a tale linguaggio linguaggio, tra questi segnaliamo: Cay S di Horstmann Concetti di informatica e S. Horstmann, fondamenti di Java - 4a ed., Apogeo, Milano. H M D it l P J D it l J H. M. Deitel, P. J. Deitel. Java F d Fondamenti di ti Programmazione, 3a ed., Apogeo, Milano. J. Lewis,W. Loftus, Java - Fondamenti di progettazione software, Addison Wesley Italia.
15
16
17
Modulo A - recap
Architettura dei sistemi di elaborazione. Struttura generale di un calcolatore elettronico, macchina di Von Neumann. Neumann. Software di base per sistemi di elaborazione: il sistema operativo. Il sistema operativo Window, il file system. Window, Metodi per l'analisi di un problema. Algoritmi e programmi. I linguaggi di programmazione e cenni alla l li i i i ll loro evoluzione. l i Ambienti di programmazione: editor, debugger, compilatori ed editor, debugger, interpreti; fasi di sviluppo di un p g p pp programma. Sviluppo top-down e pp topp bottom-up. bottom-up.
18
Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
20
Un po di storia sui linguaggi 1957 John Backus e colleghi della IBM rilasciano la prima versione del compilatore per il linguaggio di programmazione FORTRAN (Formula Translator) alla Westinghouse.
1959 Si forma il Comitato per i linguaggi di sistemi di dati e nasce il COBOL (Common Business Oriented Language). g g ) 1959 John McCarthy sviluppa il linguaggio LISP (List Processing) per le applicazioni di Intelligenza Artificiale. 1964 Nasce il linguaggio BASIC (Beginner s All (Beginner's Allpurpose Symbolic Instruction Code). E' sviluppato a Dartmouth da John Kemeny e Thomas Kurtz. Ne deriveranno molte varianti.
21
1972
Dennis Ritchie sviluppa il linguaggio "C" ai laboratori Bell. Cos chiamato semplicemente perch il suo predecessore era stato battezzato "B".
1995
Nasce il linguaggio di programmazione Java, piattaforma indipendente per sviluppo di applicazioni. i di d il li i i
22
1945
1950 1960
1970
1980
1990
2000
23
Cobol
Modula-2 Simula67
Algol
Smalltalk Java
Scheme
C++
Prolog g
ML
24
Cobol
C
Modula-2 Smalltalk Java
Algol
Simula67
FUNZIONALI ML
25
C++
Prolog g
DICHIARATIVI
A OGGETTI
ADA
SMALLTALK C++
26
p *= x;
27
Astrazioni funzionali
Sulle operazioni (funzioni): (funzioni):
long potenza(int x, int n) /* par. formali */ potenza( { int i i t i; long p = 1; /* var. locali */ for (i=1 ; i <= n ; ++i) p *= x; return p; } long Y; Y=potenza(X,10); Y=potenza(X,10);
28
Encapsulation
Coniugare lastrazione su dati e operazioni (astrazioni di dato, tipi di dato astratto, classi e oggetti) Incapsulamento (dati e operazioni) Protezione Coesione Riuso (Ereditariet)
29
OOP e Java
public class Counter { private int x; public void reset() { x = 0; } public void inc() { x++; } public int getValue() { return x;} bli i t getValue() tV l t } } Counter Y; Y = new C Counter(); t () Y.reset(); Y.reset(); Y.inc(); Y.inc();
30
OOP e Java
public class Counter { private int x; public void reset() { x = 0; } public void inc() { x++; } public int getValue() { return x;} bli i t getValue() tV l t } } Counter Y; Y = new C Counter(); t () Y.reset(); Y.reset(); Y.inc(); Y.inc();
31