lez0 - Dipartimento di Informatica - Scienza e Ingegneria

Programmazione A-L
CdS Informatica
I anno, I semestre, 12 cfu
Nadia Busi
Programmazione
“Programming is a good medium for
expressing poorly-understood and
sloppily formulated ideas.”
(M. Minsky)
Obiettivo del corso


Fornire principi, tecniche, metodologie
generali per la progettazione e la
realizzazione di programmi
Indipendenti dal linguaggio di
programmazione
Progettazione di programmi
Descrizione del problema
Programma funzionante e corretto
Progettazione di programmi


Descrizione del problema (in linguaggio
naturale)
Estrarre info rilevanti




dati
risultati
Descrivere comportamento del prg da
realizzare (esempi)
Formulare il prg in un linguaggio di
programmazione
Test e debug
Gli strumenti

Metodologia di progettazione


Linguaggio di programmazione


“design recipes” (slide precedente)
Scheme
Ambiente di sviluppo user-friendly

DrScheme
Scheme
Algol
Lisp
Scheme
• Steele - Sussman, MIT, anni ‘70
• didattica
Paradigmi

Paradigma funzionale




Programma = (insieme di) funzioni
Funzione: dati
risultato
Scheme, Lisp, ML …
Paradigma imperativo


Programma = sequenza di istruzioni
Pascal, C, Java …
Linguaggi
Scheme
ML
Java
Pascal
Human-oriented
C
Assembly
Computer-oriented
Scheme: vantaggi





Sintassi semplice e concisa
Semantica facile (regole dell’algebra)
Attenzione sulle tecniche di
programmazione (non sui costrutti)
Ragionamento induttivo
Separazione Model/View
Scheme: vantaggi


Programmi completi dalle prime lezioni
Base per OOP


Java (secondo semestre)
Espressamente progettato per la
didattica

MIT, Rice, Berkeley, Princeton, Cornell,
Johns Hopkins University, Indiana, Yale,
UCLA
Scheme: svantaggi

No sistema di tipi



Tipi nei commenti
Utilizzati per progettazione e
documentazione
Scopi ed uso principalmente accademici


Motorola, Intel, Tektronix, Silicon Graphics,
Microsoft, Disney, Yahoo store…
Enfasi sui principi e non sul linguaggio
Testo consigliato


www.htdp.org
M. Felleisen, R.B. Findler, M. Flatt, S.
Krishnamurthi
“How to Design Programs”
MIT Press, 2001
DrScheme


Ambiente di sviluppo user-friendly
Gerarchia di linguaggi



Multipiattaforma


Beginner/Intermediate/Advanced Student
Full language
Mac/Linux/Windows
www.drscheme.org
Orario delle lezioni
Ora inizio Lunedì
8:30
9:30
10:30
Martedì
E1
E1
E1
Merc.
Giovedì
Venerdì
E2
E2
11:30
12:30
13:30
14:30
15:30
16:30
17:30
E2
E2
E2
E1
E1
E1
E1
Esame

Prove in itinere


Prova pratica: realizzazione di programmi
in laboratorio
Esame finale


Prova pratica
Orale
Voto

Programmazione




I semestre, 12 cfu
Principi di progettazione (Scheme)
Prova di laboratorio (+ orale)
Lab Metodi di Programmazione



II semestre, 6 cfu
Programmazione OO (Java)
Progetto (+ orale)
Voto


I corsi di Programmazione e
LabMetProg sono integrati
Voto corso integrato =
((2 * voto Programmazione) +
voto LabMetProg) / 3
Info utili

Email



[email protected]
Utilizzare possibilmente l’account del dipartimento
Pagina web

www.cs.unibo.it/~busi


Teaching, Programmazione AL
Ricevimento


Martedì ore ???
Previo appuntamento via email
Esempio




Funzione che calcola il doppio di un numero
Input: un numero
Output: un numero
Esempi:




doppio(2) = 4
doppio(5) = 10
doppio(0) = 0
f(x) = x + x
<= casi particolari
Doppio di un numero
(define (doppio x)
(+ x x))
#include <stdio.h>
int main(void) {
int x;
int doppio;
printf(“Inserisci numero: “);
scanf(“%d”, x);
doppio = x + x;
printf(“Il doppio \’e %d”, doppio);
}