Fondamenti di Programmazione Classe 2 (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

32
Fondamenti Fondamenti di Programmazione di Programmazione Classe 2 (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

description

Fondamenti di Programmazione Classe 2 (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano. Finalità: basi teoriche della programmazione - PowerPoint PPT Presentation

Transcript of Fondamenti di Programmazione Classe 2 (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Page 1: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

FondamentiFondamenti di Programmazione di Programmazione Classe 2

(matricole congrue 1 mod 3)

Docente: Prof. Luisa Gargano

FondamentiFondamenti di Programmazione di Programmazione Classe 2

(matricole congrue 1 mod 3)

Docente: Prof. Luisa Gargano

Page 2: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Finalità: basi teoriche della programmazione

Testo: Aho, Ulman, Foundations of Computer Science –C Edition W.H. Freeman and Company, NY, 1994

Finalità: basi teoriche della programmazione

Testo: Aho, Ulman, Foundations of Computer Science –C Edition W.H. Freeman and Company, NY, 1994

Page 3: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Informazioni Pratiche

ORARIO: Martedì 16:00-18:00, Venerdì 9:00-11:00

N.B.: Tutte le lezioni sono ugualmente importanti!

SITO WEB: http://www.dia.unisa.it/professori/lg/FP.html

di riferimento per il materiale relativo al corso- copie delle slides, esercizi,

- date delle prove, - comunicazioni varie, - etc.

Informazioni Pratiche

ORARIO: Martedì 16:00-18:00, Venerdì 9:00-11:00

N.B.: Tutte le lezioni sono ugualmente importanti!

SITO WEB: http://www.dia.unisa.it/professori/lg/FP.html

di riferimento per il materiale relativo al corso- copie delle slides, esercizi,

- date delle prove, - comunicazioni varie, - etc.

Page 4: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Suggerimenti

• Avere già le slides a disposizione a lezione

• EVITARE di lasciare accumulare il lavoro

Suggerimenti

• Avere già le slides a disposizione a lezione

• EVITARE di lasciare accumulare il lavoro

•Studiare volta per volta•Chiarire i dubbi di volta in volta•Fare gli esercizi

Page 5: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Prove di Esame

• Prova scritta con esercizi e teoria

(nessun materiale ammesso)

• Eventuale prova orale

• Requisito minimo: 40% del totale

Prove di Esame

• Prova scritta con esercizi e teoria

(nessun materiale ammesso)

• Eventuale prova orale

• Requisito minimo: 40% del totale

Page 6: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Progamma sintetico

• Tecniche di programmazione (iterative e ricorsive)

• Efficienza di programmi

• Strutture dati elementari (liste, alberi)

• Automi finiti

Progamma sintetico

• Tecniche di programmazione (iterative e ricorsive)

• Efficienza di programmi

• Strutture dati elementari (liste, alberi)

• Automi finiti

Page 7: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

ALGORITMI e PROGRAMMIALGORITMI e PROGRAMMI

ProgrammazioneProgrammazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

INPUT: dati iniziali INPUT: x,y,z AZIONI esempio: Somma x ed y Somma z al risultato OUTPUT: risultato OUTPUT: x+y+z

AlgoritmoAlgoritmo: Sequenza di azioni per svolgere il calcoloProgrammaProgramma: Algoritmo espresso in notazione formale (linguaggio di programmazione)

Creazione programma: Creazione programma: Fase 1 = algoritmo Fase 2 = implementazione in dato linguaggio (C)

SCOPO del CORSO: SCOPO del CORSO: Elementi di base per semplici algoritmi e

programmi

Page 8: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valoreEsempio: espressione algebrica: z=x* y, (x+3)/5

Riepilogo del linguaggio C: EspressioniRiepilogo del linguaggio C: Espressioni

Page 9: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Riepilogo del linguaggio C: EspressioniRiepilogo del linguaggio C: Espressioni

Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valoreEsempio: espressione algebrica: z=x* y, (x+3)/5

Espressione composta da: Operatori Operandi (costanti,

variabili,…)

Page 10: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Riepilogo del linguaggio C: EspressioniRiepilogo del linguaggio C: Espressioni

Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valoreEsempio: espressione algebrica: z=x* y, (x+3)/5

Espressione composta da: Operatori Operandi (costanti,

variabili,…)

Operatori Algebrici: Operatori Algebrici: +, -, *, /, - unario, ++, --, %+, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i ( i%j= i modulo j= resto di i

diviso j)diviso j)

Page 11: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Riepilogo del linguaggio C: EspressioniRiepilogo del linguaggio C: Espressioni

Espressione: Espressione: formula (regola di calcolo) che specifica sempre un valoreEsempio: espressione algebrica: z=x* y, (x+3)/5

Espressione composta da: Operatori Operandi (costanti,

variabili,…)

Operatori Algebrici: Operatori Algebrici: +, -, *, /, - unario, ++, --, %+, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i ( i%j= i modulo j= resto di i

diviso j)diviso j)

Operatori Logici: Operatori Logici: AND (&&), OR (||), NOT (!), AND (&&), OR (||), NOT (!), (su variabili booleane - valore (su variabili booleane - valore vero/falso)vero/falso) x AND y VERO se e solo se x,y VEREx AND y VERO se e solo se x,y VERE

x OR y FALSO se e solo se x,y FALSEx OR y FALSO se e solo se x,y FALSE NOT x VERO se e solo se x FALSANOT x VERO se e solo se x FALSA

Page 12: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

EspressioniEspressioni

Operatori di confronto: Operatori di confronto: Uguale “==“:Uguale “==“: x==yx==y da VERO sse da VERO sse x x e e yy hanno hanno stesso valore stesso valore

Diverso “!=“: Diverso “!=“: x!=y da x!=y da VERO sse VERO sse x e y x e y hanno dalori hanno dalori diversidiversi

Minore “<“Minore “<“

Minore o Uguale “<=“Minore o Uguale “<=“

Maggiore “>”Maggiore “>”

Maggiore o uguale “>=“Maggiore o uguale “>=“

Page 13: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

ISTRUZIONIISTRUZIONI

AssegnamentoAssegnamento:: x=E, Calcola il valore dell’espressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x

se x vale 5 e y vale 3, x=x+y da ad x valore 8

Page 14: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

ISTRUZIONIISTRUZIONI

AssegnamentoAssegnamento:: x=E, Calcola il valore dell’espressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x

se x vale 5 e y vale 3, x=x+y da ad x valore 8

Istruzioni Strutturate:Istruzioni Strutturate: 1) Composizione di Istruzioni1) Composizione di Istruzioni:

;I

;

;

m

2

1

I

IEsegui I1, quando e’ terminataesegui I2, quando e’ terminata…esegui Im.

x=1; y=2; x=x+y; (x vale 3) y=x*y (y vale 6)

Page 15: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

ISTRUZIONI StrutturateISTRUZIONI Strutturate

2) Istruzioni Condizionali2) Istruzioni Condizionali:

If (C) I’ else I’’; C condizione, I’ ed I’’ composizioni di istruzioni

Es. Poni z=0 se x<=y; poni z=x-y se x>y if (x<=y) z=0 else z=x-y

Page 16: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

ISTRUZIONI StrutturateISTRUZIONI Strutturate

2) Istruzioni Condizionali2) Istruzioni Condizionali:

If (C) I’ else I’’; C condizione, I’ ed I’’ composizioni di istruzioni

Es. Poni z=0 se x<=y; poni z=x-y se x>y if (x<=y) z=0 else x=x-y

Poni z=0 se x<=y; altrimenti lascia il valore di z inalterato if (x<=y) z=0

If (C) I;

Page 17: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Istruzioni Ripetitivefor (x=1, x<=n, x++) I; I e’ una composizione di istruzioni

Poni x=1 esegui IModifica x (x=2), esegui I…Modifica x (x=n), esegui I

y=0; for (x=1, x<=n, x++) y=y+x;

x y

0

1 1

2 1+2=3

3 1+2+3=6

… …

n 1+2+…+n

x=1

I

x++

x<=nFALSO, ESCI

VERO

Page 18: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

while ( C ) I; C e’ una condizione, I e’ una composizione di istruzioni

x=1; y=0; while (x<=n) {y=y+x; x++}

x y

0

1 1

2 1+2=3

3 1+2+3=6

… …

n 1+2+…+n

I

CFalso, ESCI

Vero

Page 19: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

do I while (C);

x=1;y=0;do y=y+x; x++ while (x<=n)

y x

0 1

1 2

1+2=3 3

1+2+3=6 4

… …

1+2+…+n n+1 (>n)

I

CFalso, ESCI

Vero

n=0?

Page 20: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Risolvere problema

Scegliere astrazione: definire un Insieme di dati che rappresentano la realta’ (modello di dati)

Scegliere rappresentazione dellainformazione (struttura dati)

Algoritmo e programma

Es. Archivio impiegati contiene insieme di dati rilevanti (astrazione) su ogni impiegato

Rilevanti: Nome, stipendio, mansione Non rilevanti: altezza, peso, colore occhi, colore capelli

Page 21: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Tipi di dati

Variabile: e’ identificata da un nome

ha associato un tipo (intero, reale,…) si possono conservare solo oggetti di tale tipo

Tipi Base (in C): intero (int), reale (real), carattere (char)

Definizioni di variabili int x definisce x come variabile di tipo intero

Page 22: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Definizioni di Variabili

ARRAY formato da componenti dello stesso tipo le componenti sono individuate da un indice

int A[n] :array di n componenti di tipo intero

A[0] A[1] A[2] … A[n-1]

Si accede ad una componente alla volta specificando l’indice

int X[5]

X[0]=10;X[1]=7;X[2]=4;X[3]=3;X[4]=8;

Crea l’array di interi X:

10 7 4 3 8

Page 23: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Array

Es. cerca il numero di una componenti di un array A[n] avente valore w.

idea: confronta w con A[0], A[1],… finche’ non hai esaminato tutto l’array,

incrementa contatore ad ogni confronto positivo

int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;}

Assumiamo n=5 e w=3

c=0A[0]=w=3 , c=1

A[0]=3 A[1]=2 A[2]=3 A[4]=5 A[n-1]=A[5]=2

Page 24: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Array

A[0]=3 A[1]=2 A[2]=3 A[4]=5 A[n-1]=A[5]=2

i=1A[1]!=3 c=1

Es. cerca il numero di una componenti di un array A[n] avente valore w.

idea: confronta w con A[0], A[1],… finche’ non hai esaminato tutto l’array,

incrementa contatore ad ogni confronto positivo

int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;}

Assumiamo n=5 e w=3

Page 25: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Array Es. cerca il numero di componenti di un array A[n] avente valore w.

idea: confronta w con A[0], A[1],… finche’ non hai esaminato tutto l’array,

incrementa contatore ad ogni confronto positivo

int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;}

Assumiamo n=5 e w=3

A[0]=w A[1]!=w A[2]=w A[3]!=w i=4=n-1c=1 c=1 c=2 c=2 A[i]!=w c=2i++ i++ i++ i++ i++, i=n, esci

A[0]=3 A[1]=2 A[2]=3 A[3]=5 A[n-1]=A[4]=2

Page 26: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

STRUCT

Permette di “unire” elementi di tipi differenti.

Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA)

Struct S{T1 M1; T2 M2; … Tn Mn}

Definisce una struttura con n campi (M1, M2, …, Mn)Di tipo T1,T2,…,Tn, rispettivamente.

Page 27: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

STRUCT

Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA)

1) typedef char alfa[10] definisce il tipo alfa come un array di 10 caratteri

2) Struct data {int giorno; int mese; int anno}

3) Struct persona {alfa cognome; alfa nome; data data-nascita}

Struct persona P

P= (Mario, Rossi,(10,3,1980))

Page 28: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

STRUCT

Es. Struct persona P= (Mario, Rossi,(10,03,1980)) P.nome e’ l’array contenete Mario P.nome[1] e’ il carattere a

P.data-nascita e’ la struttura di tipo data (10,3,1980)

P.data-nascita.mese e’ l’intero 3

La componente i-ma di nome Mi della struttura S, S=(M1,…,Mi,…,Mn), si indica con S.Mi

Page 29: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Es. Array di struct di tipo persona

persona A[n] array di n componenti A[0],…,A[i],…,A[n-1] A[i] e’ una struct di tipo persona

E’ possibile combinare array e strutture

Page 30: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Es. Array di struct di tipo persona

persona A[n] array di n componenti A[0],…,A[i],…,A[n-1] A[i] e’ una sruct di tipo persona

Cerca il numero di persone nate a maggio

{int c; c=0; for(i=0,i<n,i++) if (A[i].data-nascita.mese==5) c++;}

E’ possibile combinare array e strutture

Page 31: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Una variabile di tipo puntatore contiene un indirizzo di memoria

int x *p

Definisce p come un puntatore alla variabile di tipo intero x

PUNTATORI

P x

Page 32: Fondamenti di Programmazione  Classe 2  (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Una variabile di tipo puntatore contiene un indirizzo di memoria

int x *p

definisce p come un puntatore alla variabile di tipo intero x

P=&x assegna a p l’indirizzo di memoria di x

y=*p assegna a y il contenuto della variabile puntata da p

Es. {p=&x; y=*p} risulta valore di x = valore di y

PUNTATORI