27
Programmazione 1 (A-L) Mario Pavone Dipartimento di Matematica ed Informatica Università degli Studi di Catania [email protected] http://www.dmi.unict.it/mpavone/

Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

  • Upload
    vancong

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Programmazione 1 (A-L)

Mario Pavone Dipartimento di Matematica ed Informatica

Università degli Studi di Catania [email protected]

http://www.dmi.unict.it/mpavone/

Page 2: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 3: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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

Page 4: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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++

Page 5: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Programma del Corso

•  Ereditarietà •  Polimorsfismo e Classi astratte •  Overloading degli operatori •  Principi di Programmazione Orientata agli Oggetti

Progettazione di Software orientato agli oggetti

Page 6: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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

Page 7: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Obiettivo(Formativo(

Page 8: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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

Page 9: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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

Page 10: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 11: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Cos’è l’Informatica

Elaborazione

Controllo

Memorizzazione

Trasferimento

Ambiente

esterno

Informatica = Informazione + Automazione

Page 12: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 13: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Il(Computer:(modello(concettuale(

Interconnessione

Elaborazione Memorizzazione

Comunicazione (interfaccia)

Page 14: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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$

Page 15: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 16: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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)(

Page 17: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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)

Page 18: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 19: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Approccio al Problem-Solving

•  Analisi del problema •  Esplorazione degli approcci possibili •  Selezione di un approccio •  Decomposizione in sottoproblemi •  Definizione algoritmo •  Riflessione critica

Page 20: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 21: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 22: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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(

Page 23: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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;

Page 24: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Rappresentazione di un algoritmo

• Linguaggio naturale

• Diagramma a blocchi (o di Flusso)

• Pseudo codice

• Linguaggio di programmazione

Page 25: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Diagrammi di flusso: ricerca massimo

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

Page 26: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

Pseudo Codice: prodotto di due numeri

leggi alfa, beta somma � 0 finché alfa ≠ 0 ripeti somma � somma + beta; alfa � alfa – 1;

stampa prod;

Page 27: Programmazione 1 (A-L) - Dipartimento di … del Corso a) Algoritmi b) Introduzione alla Programmazione c) Linguaggi di Programmazione d) Strutture dati semplici; array e stringhe

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;

}