La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione di Calcolatori

Presentazioni simili


Presentazione sul tema: "Programmazione di Calcolatori"— Transcript della presentazione:

1 Programmazione di Calcolatori
Lezione V I Diagrammi di Flusso Programmazione di Calcolatori: I diagrammi di flusso

2 Nozione intuitiva di algoritmo
è una sequenza finita di istruzioni ogni istruzione è costruita a partire da un alfabeto di dimensione finita ogni istruzione nella sequenza è codificata con una quantità finita di informazione deve esistere un agente di calcolo C capace di eseguire le istruzioni dell’algoritmo C deve avere capacità di memorizzazione ….. Programmazione di Calcolatori: I diagrammi di flusso

3 I diagrammi di flusso Diagrammi di Flusso:
un formalismo grafico per la descrizione di algoritmi un particolare simbolo grafico detto blocco è associato ad ogni tipo di istruzione elementare i blocchi sono collegati tra loro da archi che definiscono l’ordine di esecuzione delle istruzioni Programmazione di Calcolatori: I diagrammi di flusso

4 Esempio Calcolare la somma dei numeri 1 i  N Start Nome: SommaN
Variabili: int N, cont, somma N somma  0 cont  0 cont < N somma cont  cont+1 somma  somma+cont End true false Inizio della sequenza Acquisizione del numero di valori da sommare Inizializzazione della somma parziale e del contatore Aggiornamento della somma parziale e del contatore Restituzione del valore calcolato Verifica sul numero di somme effettuate Termine della sequenza Programmazione di Calcolatori: I diagrammi di flusso

5 Capacità di memorizzazione
Modello: descrizione della realtà limitatamente agli aspetti di interesse Modello di memoria: intero carattere boleano insieme di locazioni A B C 3 ‘c’ true ogni locazione può memorizzare un valore di tipo intero, carattere, o booleano una locazione o è correntemente in uso o è disponibile in uso disponibile locazioni correntemente in uso sono dette variabili ogni variabile è identificata da un nome e da un tipo Programmazione di Calcolatori: I diagrammi di flusso

6 Stato della Memoria Molto informalmente: E’ determinato:
è una “foto” istantanea della memoria E’ determinato: dal numero delle variabili dal loro nome, tipo e valore Programmazione di Calcolatori: I diagrammi di flusso

7 SI Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 A B C D ‘c’ 120
Programmazione di Calcolatori: I diagrammi di flusso

8 NO Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 A C D ‘c’ ‘d’ 2
B 120 Programmazione di Calcolatori: I diagrammi di flusso

9 NO Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 A B C D ‘c’ 120
8 Programmazione di Calcolatori: I diagrammi di flusso

10 NO Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 A C E D 12 ‘m’
8 Programmazione di Calcolatori: I diagrammi di flusso

11 SI Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 A B C D
Programmazione di Calcolatori: I diagrammi di flusso

12 SI Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 D 8 A 12 B true
C D 12 ‘d’ 8 Programmazione di Calcolatori: I diagrammi di flusso

13 Definizione delle variabili utilizzate Termine della sequenza
Tipologia dei blocchi Blocchi di inizio e di termine Nome del diagramma Start Nome: SommaN Variabili: int N, somma, cont N somma  0 cont  0 cont < N somma cont  cont+1 somma  somma+cont End true false Definizione delle variabili utilizzate Inizio del diagramma Termine della sequenza 1 + di 1 Tipo delle variabili intero: -2, -1, 0, 1, 2 …. carattere: ‘c’, ‘2’, ‘!’ … booleano: true, false Nome delle variabili Programmazione di Calcolatori: I diagrammi di flusso

14 Definizione di una variabile
StatoF B A 120 2 StatoI Blocco di inizio Start Nome: SommaN Variabili: int N, somma, cont Per ognuna delle variabili elencate nel blocco si individua una locazione di memoria disponibile si riserva tale locazione si associano a tale locazione il nome e il tipo specificati N intero Programmazione di Calcolatori: I diagrammi di flusso

15 Tipologia dei blocchi Blocco di termine: End StatoI StatoF somma cont
10 4 N StatoF si rilascia la memoria allocata ad ognuna delle variabili elencate nel blocco “Start” Programmazione di Calcolatori: I diagrammi di flusso

16 Tipologia dei blocchi Blocchi di acquisizione e di restituzione dati
Start Nome: SommaN Variabili: int N, somma, cont N somma  0 cont  0 cont < N somma cont  cont+1 somma  somma+cont End true false Blocchi di acquisizione e di restituzione dati Il dato acquisito è memorizzato nella variabile N Blocco di acquisizione Restituisce il contenuto della variabile somma Blocco di restituzione Programmazione di Calcolatori: I diagrammi di flusso

17 Tipologia dei blocchi Blocco di elaborazione
Start Nome: SommaN Variabili: int N, cont, somma N somma  0 cont  0 cont < N somma cont  cont+1 somma  somma+cont End true false Blocco di elaborazione Contiene una sequenza di operazioni di assegnamento Formato di un’operazione di assegnamento: nome  espressione Blocco di elaborazione Le operazioni di assegnamento vengono considerate nell’ordine in cui compaiono nel blocco dall’alto verso il basso Programmazione di Calcolatori: I diagrammi di flusso

18 Operazioni di assegnamento
nome  espressione StatoI cont somma 3 N StatoF cont  cont+1 somma  somma+cont Si valuta il valore di espressione Si aggiorna con tale valore il contenuto della variabile identificata da nome 4 1 4 1 Programmazione di Calcolatori: I diagrammi di flusso

19 Confronta due o più espressioni secondo diverse modalità
Tipologia dei blocchi Start Nome: SommaN Variabili: int N, cont, somma N somma  0 cont  0 cont < N somma cont  cont+1 somma  somma+cont End true false Blocco di decisione Confronta due o più espressioni secondo diverse modalità Sulla base del risultato del confronto individua il prossimo blocco del flusso Blocco di decisione Programmazione di Calcolatori: I diagrammi di flusso

20 Riassumendo …. Start Blocco di inizio Blocco di termine
Nome: nome del diagramma Variabili: tipo1 nome1 tipo2 nome2 …… Blocco di inizio int bool char Blocco di termine End Blocco di acquisizione nome1, nome2, … Blocco di restituzione nome1, nome2, … Blocco di elaborazione nome1  espressione1 nome2  espressione2 …… Programmazione di Calcolatori: I diagrammi di flusso

21 Riassumendo …. Blocco di decisione espressione a true valore booleano
false Programmazione di Calcolatori: I diagrammi di flusso

22 Operatori …. Operatori aritmetici Operatori logici
+ : int x int  int somma tra interi - : int x int  int differenza tra interi * : int x int  int prodotto tra interi / : int x int  int divisione intera % : int x int  int resto della divisione intera Operatori logici not : bool  bool negazione and : bool x bool  bool and logico or : bool x bool  bool or logico Programmazione di Calcolatori: I diagrammi di flusso

23 Operatori …. Operatori di confronto tra interi
= : int x int  bool test di uguaglianza > : int x int  bool strettamente maggiore ≥ : int x int  bool maggiore o uguale < : int x int  bool strettamente minore ≤ : int x int  bool minore uguale Programmazione di Calcolatori: I diagrammi di flusso

24 Ordinamento lessicografico
Tabella dei codici ASCII Programmazione di Calcolatori: I diagrammi di flusso

25 Operatori …. Operatori di confronto tra caratteri
= : char x char bool test di uguaglianza < : char x char  bool precede lessicograficamente ≤ : char x char  bool uguale o precede lessicograficamente > : char x char  bool segue lessicograficamente ≥ : char x char  bool uguale o segue lessicograficamente Programmazione di Calcolatori: I diagrammi di flusso

26 Condizioni di validità
Esiste un solo blocco di inizio ed ha un solo arco uscente; esistono uno o più blocchi di termine ciascun blocco di elaborazione, di acquisizione, di restituzione ha un solo arco entrante e un solo arco uscente; ciascun blocco di decisione ha un solo arco entrante e due uscenti; ciascun arco entra in un blocco o si innesta su un altro arco; ciascun blocco è raggiungibile dal blocco iniziale; da qualsiasi blocco è possibile raggiungere almeno uno dei blocchi di termine. Programmazione di Calcolatori: I diagrammi di flusso

27 Calcolare il massimo di una sequenza di N≥1 numeri interi
Un semplice esempio Calcolare il massimo di una sequenza di N≥1 numeri interi Start Nome: MaxTraN Variabili: int N, count, max, val int count max  val count  1 count = N true max val false N, val max End count  count+1 val > max val Programmazione di Calcolatori: I diagrammi di flusso

28 Vettori Vettore (monodimensionale) di n elementi: Esempio: Definizione
definisce una corrispondenza biunivoca tra un insieme omogeneo di n elementi e l’insieme di interi {0, 1, …, n-1} Esempio: 1 2 3 4 Vettore di 5 interi 5 -1 32 -4 27 costante intera Definizione tipoVettore nomeVettore [dimVettore] Programmazione di Calcolatori: I diagrammi di flusso

29 Vettori Effetto Accesso all’elemento di un vettore
StatoF B A 120 2 StatoI Start Variabili: int Vett[3] Vett[0] Vett[1] Vett[2] intero Accesso all’elemento di un vettore 0  espressione a valore intero  dimVettore-1 nomeVettore [indice] Programmazione di Calcolatori: I diagrammi di flusso

30 Acquisizione del contenuto di un vettore di K interi
Vettori Esempio Acquisizione del contenuto di un vettore di K interi Start Nome: AcqVett Variabili: int index, int vett[K] index  0 index < K index  index+1 End false true vett[index] Programmazione di Calcolatori: I diagrammi di flusso

31 Matrici Matrice di n x m elementi: Esempio: Definizione
definisce una corrispondenza biunivoca tra un insieme omogeneo di n x m elementi e l’insieme di coppie di interi {(0,0), (0,1), …., (n-1, m-1)} Esempio: (0,0) (1,0) (2,0) (3,0) (4,0) (0,1) (1,1) (2,1) (3,1) (4,1) 4 -1 12 -9 8 15 7 Matricedi 5 x 2 interi Definizione costanti intere tipoMatrice nomeMatrice [dimRighe] [dimColonne] Programmazione di Calcolatori: I diagrammi di flusso

32 Matrici Accesso all’elemento di una matrice
0  espressione a valore intero  dimColonne-1 nomeMatrice [indiceRiga][indiceColonna] 0  espressione a valore intero  dimRighe-1 Programmazione di Calcolatori: I diagrammi di flusso

33 Acquisizione del contenuto di una matrice di
Matrici Start Nome: AcqMatRighe Variabili: int riga, col int mat[P][Q] Esempio Acquisizione del contenuto di una matrice di P x Q interi (per righe) riga  0 col  0 riga < P End false true col < Q col  col+1 false riga  riga+1 col  0 mat[riga][col] true Programmazione di Calcolatori: I diagrammi di flusso

34 Matrici Esempio Acquisizione del contenuto di una matrice di
Start Nome: AcqMatCol Variabili: int riga, col int mat[P][Q] Esempio Acquisizione del contenuto di una matrice di P x Q interi (per colonne) riga  0 col  0 col < Q End false true riga < P riga  riga+1 false riga  0 col  col+1 mat[riga][col] true Programmazione di Calcolatori: I diagrammi di flusso

35 mat[riga][col] > max
Matrici Start Nome: AcqMat Variabili: int riga, col, max int mat[P][Q] Restituzione del massimo elemento di una matrice di P x Q interi, P ≥ 1, Q ≥ 1 Esempio riga  0 col  0 max  mat[0][0] false riga  0 col  col+1 col < Q End false true riga < P riga  riga+1 false true mat[riga][col] > max max  mat[riga][col] true Programmazione di Calcolatori: I diagrammi di flusso


Scaricare ppt "Programmazione di Calcolatori"

Presentazioni simili


Annunci Google