Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla...
Transcript of Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla...
Programmazione 1 (A-L)
Mario Pavone Dipartimento di Matematica ed Informatica
Università degli Studi di Catania [email protected]
http://www.dmi.unict.it/mpavone/
Generiche(Informazioni(
Recapiti( Dipartimento(di(Matematica(ed(Informatica,(3°(blocco,(stanza(32(tel:(095(738(3038(
Ricevimento( Mercoledì((ore(11.00(F(12.30((su$appuntamento)$
Avvisi(e(Materiale( http://www.dmi.unict.it/mpavone/programmazione1(
Programma del Corso
a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe di caratteri e) Introduzione alla Programmazione Orientata agli
Oggetti: oggetti, classi e costruttori
Elementi di Programmazione Imperativa ed Orientata agli Oggetti
Programma del Corso
• Dichiarazione di Classi: – Struttura della classe; metodi e attributi; regole di visibilità;
costruttore e distruttore • Puntatori ed Array
– Operatori di indirizzo e di dereferenzazione; allocazione dinamica della memoria; array dinamici
• Elementi avanzati del linguaggio – Overloading; funzioni e classi friend
Caratteristiche avanzate del linguaggio C++
Programma del Corso
• Ereditarietà • Polimorsfismo e Classi astratte • Overloading degli operatori • Principi di Programmazione Orientata agli Oggetti
Progettazione di Software orientato agli oggetti
Testi Consigliati
• Linguaggio C 5/ed. • Alessandro Bellini e Andrea Guidi • ISBN: 9788838668210
• Linguaggi di Programmazione - Principi e paradigmi 2/ed
• Maurizio Gabbrielli e Simone Martini • ISBN: 9788838665738
• Fondamenti di C++ • Cay Horstmann • ISBN: 9788838672187
• Guida al C++ 3/ed • Herbert Schildt • ISBN: 9788838672798
• Programmazione in C++ • D.S. Malik • ISBN: 9788850329670
Obiettivo(Formativo(
Modalità(di(Valutazione(• L’esame consiste di tre prove:
(i) Test scritto; (ii) Prova in Laboratorio; (iii) Colloquio orale • Le tre prove sono da considerarsi propedeutiche;
possono accedere alla seconda prova tutti coloro che hanno superato la prova 1); possono accedere alla prova 3) tutti coloro che hanno superato la prova 2).
• La sufficienza conseguita in una data prova sarà considerata valida per i successivi appelli del corrente AA
• Ad ogni appello gli studenti potranno sostenere una, o tutte, delle tre prove: la prova scritta deve essere sostenuta alla data ufficiale dell'appello; la prova 2) e 3) saranno sostenute alla data pubblicata dal docente.
• È facoltà dello studente la ripetizione di una, o più prove la votazione riportata in precedenza viene in automatico annullata
Valutazione Finale • Test Scritto:
– valutazione in trentesimi – si considera superata se si consegue una valutazione sufficiente (voto >= 18/30)
• Prova in Laboratorio: – valutazione in trentesimi – corretta compilazione e funzionalità del programma
implementato. • Colloquio Orale:
– valutata con un punteggio K compreso tra 0 e 4. • Voto finale:
– media delle due prove (scritta e laboratorio) alla quale si somma K
Cos�è(l�informatica(?(
La( scienza( della( rappresentazione( e( dell’elaborazione(dell’informazione(
Informazione(=(dati(+(istruzioni((es.(1(+(2)( L’informatica( comprende( la( tecnologia(dei( calcolatori,( ed( il(modo(in(cui(l’informazione(viene(strutturata(ed(elaborata(
ACM((Association(for(Computing(Machinery):(l’informatica(è(lo( studio( sistematico( degli( algoritmi( che( descrivono( e(trasformano(l’informazione(
Il( calcolatore( elettronico( è( uno( strumento( che( consente( la(gestione(di(quantità(di(informazioni(altrimenti(intrattabili(
Cos’è l’Informatica
Elaborazione
Controllo
Memorizzazione
Trasferimento
Ambiente
esterno
Informatica = Informazione + Automazione
Il(computer(
• Computer:( insieme(organizzato( di( componenti,( in( grado(di( eseguire( una( successione( di( istruzioni( finalizzate( a(elaborare(l’informazione(
• È( in(grado(di( eseguire(operazioni( relativamente( semplici(ad(alta(velocità(
• Scomporre(un’operazione(complessa( in(una(sequenza(di(operazioni(più(semplici(
• Esempio:(a$+$b$+$c(
Il(Computer:(modello(concettuale(
Interconnessione
Elaborazione Memorizzazione
Comunicazione (interfaccia)
Lo(Schema(di(Riferimento(
ALU$
Interfaccia$di$I/O$
Video/tas4era$(terminale)$
Memoria$di$massa$
da4$
controllo$
indirizzi$BUS$
Interfaccia$di$I/O$Memoria$CPU$
PC$
Registri$
La(memoria(
o Ha( il( compito( di( mantenere( i( programmi( e( i( dati( su( cui(opera(la(CPU(
o Le+ caratteristiche+ della+ memoria+ influenzano+ le+prestazioni+complessive+di+un+computer(
o Diverse(esigenze:(! velocità(per(il(supporto(alla(CPU(! non+volatilità+ed+elevate+dimensioni(per(l’archivio(
o Diverse(tecnologie(! elettronica+:(veloce,(ma(costosa(e(volatile(! magnetica+:(non(volatile(ed(economica,(ma(molto(lenta(
La(memoria(
o Il( sistema(di(memoria( è( suddiviso( in( due(parti,( che( si(differenziano(per(le(funzioni((che(svolgono:(! Memoria+ centrale:( opera( come( supporto( alla( CPU,(fornendo(dati(e(istruzioni(a(elevata(velocità((ottimizzare(le(prestazioni)(
! Memoria+ di+massa:( contiene( quantità( di( dati( in(modo(stabile( (stabilità( nel( tempo( e( costo( perunità( di(memorizzazione)(
CPU
Registri
Cache I liv
Cache II liv Cir
cuit
o Integrato (
chip
)
RAM
Scheda m
adre (
motherboard)
Disco fisso (hard disk)
tecnologia magnetica
Involu
cro e
sterno d
el calc
ola
tore (
case)
Supporti esterni
tecnologia magnetica
(HD esterni)
tecnologia elettronica (flash disk)
tecnologia ottica
(CD, DVD)
Come(Funziona(un(Computer?(
Il( calcolatore( esegue( i( programmi( passo( passo( in( modo(preciso(e(veloce(Proprietà:(correttezza(ed(efficienza(Correttezza:(se(giunge(alla(soluzione(del(dato(problema(Efficienza:(giungere(alla(soluzione(del(problema(nel(modo(più(veloce,(utilizzando(la(minima(quantità(di(risorse(fisiche(
Approccio al Problem-Solving
• Analisi del problema • Esplorazione degli approcci possibili • Selezione di un approccio • Decomposizione in sottoproblemi • Definizione algoritmo • Riflessione critica
Algoritmo( sequenza(di(passi/operazioni(che(portano(alla(realizzazione(di(un(compito(
Esempi:( calcoli( matematici,( massimo( comune( divisore,(istruzioni(di(un(elettrodomestico.(prelevamento(Bancomat(
Un(calcolatore(è(un(esecutore(di(algoritmi( Programma:( sequenza( di( istruzioni( scritte( in( un(determinato(linguaggio(
Compito(di(un(esperto(programmatore:( Algoritmi:(sequenza(di(passi(che(portano(alla(soluzione(di(un(dato(problema( Programmi:(renderli(comprensibili(
Un( problema( risolvibile( mediante( un( algoritmo( si( dice(computabile(
Caratteristiche(di(un(algoritmo(
• Si(esegue(in(modo(sequenziale(1. Azioni(eseguibili(e(non(ambigue(2. Determinismo(3. Numero(finito(di(passi(4. Terminazione(
• L’esecuzione(deve(finire(e(produrre(il(risultato(in(tempo(finito(
• Osservazione:(la(3(non(implica(la(4(
Esempio:(Concetto(di(Algoritmo(
Prelievo(di(somme(di(denaro(tramite(Bancomat(Montaggio(oggetti(fai$da$te$Somma(di(due(numeri(in(un(pallottoliere(Gestione(di(una(Biblioteca(Ricerca(nominativo(in(un(elenco(telefonico(
Ordinato:(elenco(telefonico( Non(ordinato:(una(lista(di(firme(
Esempio di “terminazione” 1. Leggi un valore in input a; 2. Leggi un valore in input b; 3. Calcola la somma c di a e b; 4. Scrivi a video c;
Rappresentazione di un algoritmo
• Linguaggio naturale
• Diagramma a blocchi (o di Flusso)
• Pseudo codice
• Linguaggio di programmazione
Diagrammi di flusso: ricerca massimo
Sì
P3
Inizio
Leggi
x e y
d ← x – y
d > 0 ? No
Fine
P1 e P2
P5
Scrivi
“max è x”
P4
Scrivi
“max è y” P6
P7
Pseudo Codice: prodotto di due numeri
leggi alfa, beta somma � 0 finché alfa ≠ 0 ripeti somma � somma + beta; alfa � alfa – 1;
stampa prod;
Linguaggio di Programmazione
#include <stdio.h> int main (void) {
read(x); read(y); d=x-y; if (d<0) write (�Il max è x�); else if (d=0) write (“Sono uguali”); else write (�Il max è y�); return Exit_success;
}