CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena...

44
1 CORSO DI PROGRAMMAZIONE Cosimo Laneve/Ivan Lanese/Elena Giachino

Transcript of CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena...

Page 1: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1

CORSO DI PROGRAMMAZIONE

Cosimo Laneve/Ivan Lanese/Elena Giachino

Page 2: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. obiettivi del corso e sommario

2. syllabus del corso

3. modalità dell’esame

4. questionari degli studenti

2

argomenti

Page 3: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

3

obiettivi

Page 4: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

apprendere i concetti fondamentali della programmazione

3

obiettivi

Page 5: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

apprendere i concetti fondamentali della programmazione– le principali tecniche

3

obiettivi

Page 6: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

apprendere i concetti fondamentali della programmazione– le principali tecniche – gli strumenti più importanti di C++

3

obiettivi

Page 7: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

apprendere i concetti fondamentali della programmazione– le principali tecniche – gli strumenti più importanti di C++

dopo il corso

3

obiettivi

Page 8: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

apprendere i concetti fondamentali della programmazione– le principali tecniche – gli strumenti più importanti di C++

dopo il corso - sarete in grado di comprendere corsi avanzati come

Sistemi Operativi o Linguaggi di Programmazione o Ingegneria del SW

3

obiettivi

Page 9: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

apprendere i concetti fondamentali della programmazione– le principali tecniche – gli strumenti più importanti di C++

dopo il corso - sarete in grado di comprendere corsi avanzati come

Sistemi Operativi o Linguaggi di Programmazione o Ingegneria del SW

- NON sarete (ancora) utilizzatori esperti di librerie avanzate (grafica)

3

obiettivi

Page 10: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

4

obiettivi/commenti

Page 11: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• apprendere gli strumenti più importanti di C++

4

obiettivi/commenti

Page 12: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• apprendere gli strumenti più importanti di C++– C++ è un linguaggio molto verboso :

x = x+1 si può anche scrivere x += 1 oppure x = x = x+1 oppure x++

4

obiettivi/commenti

Page 13: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• apprendere gli strumenti più importanti di C++– C++ è un linguaggio molto verboso :

x = x+1 si può anche scrivere x += 1 oppure x = x = x+1 oppure x++

– gli altri linguaggi non concedono così tante alternative

4

obiettivi/commenti

Page 14: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• apprendere gli strumenti più importanti di C++– C++ è un linguaggio molto verboso :

x = x+1 si può anche scrivere x += 1 oppure x = x = x+1 oppure x++

– gli altri linguaggi non concedono così tante alternative

• noi (docenti) scriveremo programmi utilizzando un sottoinsieme di costrutti (C+o-)– chi conosce altri linguaggi (e non C++) è in grado di comprenderli– i programmi sono più facile da leggere– i programmi sono più facili da verificare (vedi discussioni nel corso)

4

obiettivi/commenti

Page 15: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• apprendere gli strumenti più importanti di C++– C++ è un linguaggio molto verboso :

x = x+1 si può anche scrivere x += 1 oppure x = x = x+1 oppure x++

– gli altri linguaggi non concedono così tante alternative

• noi (docenti) scriveremo programmi utilizzando un sottoinsieme di costrutti (C+o-)– chi conosce altri linguaggi (e non C++) è in grado di comprenderli– i programmi sono più facile da leggere– i programmi sono più facili da verificare (vedi discussioni nel corso)

• voi (studenti)– potete scrivere programmi utilizzando qualunque costrutto di C++

4

obiettivi/commenti

Page 16: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

5

prerequisiti

Page 17: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

nel corso non si assumono prerequisiti

5

prerequisiti

Page 18: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

nel corso non si assumono prerequisiti

chi sa programmare troverà meno difficoltà a comprendere alcuni argomenti (tipicamente sulla parte imperativa)

5

prerequisiti

Page 19: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

nel corso non si assumono prerequisiti

chi sa programmare troverà meno difficoltà a comprendere alcuni argomenti (tipicamente sulla parte imperativa)chi sa programmare dovrebbe trovare interessante le spiegazioni

5

prerequisiti

Page 20: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

6

syllabus dell’insegnamento

Page 21: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

PARTE I. programmazione imperativa in C++

6

syllabus dell’insegnamento

Page 22: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

PARTE I. programmazione imperativa in C++– sistemi di calcolo, algoritmi e programmi – sintassi– identificatori e dichiarazioni, tipi di dato– assegnamento, condizionali, iterazione– funzioni– tipi di dato strutturati: vettori, record, allocazione della memoria– strutture dati dinamiche (liste, code, alberi)– ricorsione e funzioni ricorsive

6

syllabus dell’insegnamento

Page 23: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

PARTE I. programmazione imperativa in C++– sistemi di calcolo, algoritmi e programmi – sintassi– identificatori e dichiarazioni, tipi di dato– assegnamento, condizionali, iterazione– funzioni– tipi di dato strutturati: vettori, record, allocazione della memoria– strutture dati dinamiche (liste, code, alberi)– ricorsione e funzioni ricorsivePARTE II. programmazione object-oriented in C++

6

syllabus dell’insegnamento

Page 24: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

PARTE I. programmazione imperativa in C++– sistemi di calcolo, algoritmi e programmi – sintassi– identificatori e dichiarazioni, tipi di dato– assegnamento, condizionali, iterazione– funzioni– tipi di dato strutturati: vettori, record, allocazione della memoria– strutture dati dinamiche (liste, code, alberi)– ricorsione e funzioni ricorsivePARTE II. programmazione object-oriented in C++– classi– metodi– ereditarietà

6

syllabus dell’insegnamento

Page 25: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

lezioni (due docenti: CL e Ivan Lanese)

sito web del corso: www.cs.unibo.it/~laneve/programming.html

dove trovate – i lucidi delle lezioni– ogni riferimento (newsgroup del corso,

tipologia dell’esame, bibliografia)– la dispensa di C+o-

7

lezioni e sito

Page 26: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1 più 5, oppure 2 o 3 o 4 al posto di 11. Savitch: “Problem Solving with C++”, Addison-Wesley 2004 // ottimo testo di introduzione alla programmazione e che usa C++ 2. Stroustrup: "Programming: Principles and Practice using C++" Addison-

Wesley 2009 // questo corso copre la prima parte di questo testo 3. Stroustrup: “The C++ Programming Language”, Addison-Wesley 2004// è la bibbia sul C++ da parte di chi l’ha inventato, per coloro che

intendono approfondire il ling.4. Rob Miller : “An introduction to the imperative part of C++“

http://www.doc.ic.ac.uk/~wjk/C++Intro/CourseStructure.html // ottimo per la parte imperativa di C++ (GRATUITO)5. Lanese, Laneve: la dispensa di C+o- (GRATUITA)

8

testi di riferimento

Page 27: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

9

modalità d’esame

Page 28: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti

9

modalità d’esame

Page 29: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti• ci sono 6 appelli per anno

9

modalità d’esame

Page 30: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti• ci sono 6 appelli per anno

– 2 a gennaio/febbraio; 3 a maggio/giugno/luglio;1 a settembre

9

modalità d’esame

Page 31: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti• ci sono 6 appelli per anno

– 2 a gennaio/febbraio; 3 a maggio/giugno/luglio;1 a settembre

• il compito di solito consta di 3 esercizi (più facili del passato)

9

modalità d’esame

Page 32: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti• ci sono 6 appelli per anno

– 2 a gennaio/febbraio; 3 a maggio/giugno/luglio;1 a settembre

• il compito di solito consta di 3 esercizi (più facili del passato)– iterazione/array; strutture dati dinamiche quali liste e alberi;

classi

9

modalità d’esame

Page 33: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti• ci sono 6 appelli per anno

– 2 a gennaio/febbraio; 3 a maggio/giugno/luglio;1 a settembre

• il compito di solito consta di 3 esercizi (più facili del passato)– iterazione/array; strutture dati dinamiche quali liste e alberi;

classi– i compiti vecchi sono disponibili nello studio di Ivan Lanese

(gratis!)

9

modalità d’esame

Page 34: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

1. esame scritto (dura al massimo 2h — 2h.30m) e max 24 punti• ci sono 6 appelli per anno

– 2 a gennaio/febbraio; 3 a maggio/giugno/luglio;1 a settembre

• il compito di solito consta di 3 esercizi (più facili del passato)– iterazione/array; strutture dati dinamiche quali liste e alberi;

classi– i compiti vecchi sono disponibili nello studio di Ivan Lanese

(gratis!)2. progetto obbligatorio (gruppi di 3-4 studenti)

max 8 punti9

modalità d’esame

Page 35: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

10

. . . come studiare all’università

Page 36: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

venire a lezione preparati– ad esempio, prima della lezione leggere i lucidi, guardare il capitolo

10

. . . come studiare all’università

Page 37: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

venire a lezione preparati– ad esempio, prima della lezione leggere i lucidi, guardare il capitolo

è MOLTO IMPORTANTE fare domande quando qualcosa non si capisce o si vorrebbe capire meglio– è utile a noi docenti per capire le criticità e soffermarci su di esse– “fare domande” è anonimo

10

. . . come studiare all’università

Page 38: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

venire a lezione preparati– ad esempio, prima della lezione leggere i lucidi, guardare il capitolo

è MOLTO IMPORTANTE fare domande quando qualcosa non si capisce o si vorrebbe capire meglio– è utile a noi docenti per capire le criticità e soffermarci su di esse– “fare domande” è anonimo

i lucidi che trovate sul sito NON contengono quello che viene detto a lezione– dovete prendere appunti (SUGGERIMENTO: stampate i lucidi e

scrivete accanto) – scegliete un libro tra quelli consigliati e STUDIATE le parti relative.

Nel libro ci sono altri esempi e altre spiegazioni: tanto meglio, aiuteranno la comprensione!

10

. . . come studiare all’università

Page 39: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• dopo la lezione: ristudiate i lucidi e gli appunti, studiate le parti del libro relative alla lezione

• scrivere email ai docenti per chiedere [email protected] [email protected]

• andare a ricevimento per avere spiegazioni aggiuntive– cercate la pagina web del docente e guardate gli orari e le

modalità www.cs.unibo.it/~laneve www.cs.unibo.it/~lanese ,

11

. . . come studiare all’università/cont.

Page 40: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

• a fine corso vi verrà dato un questionario in cui dare un voto e in cui poter scrivere commenti

• il questionario è MOLTO IMPORTANTE

• una parte delle vostre tasse va al corso di studio per migliorare le infrastrutture/pagare i tutor per il supporto alla didattica/etc.– questa parte è proporzionale ai risultati dei questionari– siate onesti nella valutazione: quanto la colpa della mancata

comprensione è da attribuire al docente? Quanto è da attribuire allo studente che non ha fatto domande, non è andato al ricevimento, non ha studiato?

12

commenti degli studenti: questionari

Page 41: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

13

commenti degli studenti: questionari

Page 42: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

14

commenti degli studenti: questionari

Page 43: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

15

commenti degli studenti: questionari

Page 44: CORSO DI PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0-INTRO.pdf · Cosimo Laneve/Ivan Lanese/Elena Giachino. 1. obiettivi del corso e sommario 2. syllabus del corso 3. modalità dell’esame

le slide sono manchevoli di elementi importanti per la comprensione– vedi lucidi precedenti

ECLIPSE è un supporto runtime scomodo da utilizzare– ECLIPSE è software libero e funziona su diversi sistemi

operativi – voi potete usare il supporto run-time che preferite

non ho capito le strutture dati dinamiche (liste, alberi): bisognerebbe dare più spazio a queste– avrete lezioni ed esercitazioni su liste e alberi da parte di

tutti i docenti, faremo più esercizi16

questionari: alcuni commenti degli anni scorsi