Programmazione di Calcolatori

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

I tipi Strutturati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
PROGRAMMARE IN PASCAL (le basi)
Informatica Generale Marzia Buscemi
Un nuovo tipo di dati Gli array.
Sommario Gli algoritmi I linguaggi per la formalizzazione di algoritmi
Anno accademico Array e puntatori in C.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Introduzione alla programmazione ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Il Linguaggio C.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Java base I: Sintassi e tipi di dati
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
Elementi di Informatica
Programmazione in Java Claudia Raibulet
4 Tipi di dati & variabili
Biologia Computazionale - Algoritmi
CODIFICA Da flow-chart a C++.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Programmazione di Calcolatori
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1.
C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1.
Programmazione di calcolatori
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Programmazione di Calcolatori
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XVIII Le matrici Programmazione di Calcolatori: le matrici 1.
C. Gaibisso Programmazione di Calcolatori Lezione XIV I vettori Programmazione di Calcolatori: i vettori 1.
Programmazione di Calcolatori
Programmazione imperativa
C. Gaibisso Programmazione di Calcolatori Lezione II Cosa vuol dire scrivere un programma Programmazione di Calcolatori: Cosa vuol dire scrivere un programma.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Introduzione a Javascript
Rappresentazione degli algoritmi
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita dalla seguente produzione: ::= { }
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

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

Nozione intuitiva di algoritmo è una sequenza finita di istruzioni ogni istruzione è una stringa di lunghezza finita costruita a partire da un alfabeto di dimensione finita 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

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

Esempio Calcolare la somma dei numeri interi 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 del diagramma Acquisizione del numero N Inizializzazione della somma parziale e del contatore Restituzione del valore calcolato Aggiornamento della somma parziale e del contatore Verifica sul numero di somme effettuate Termine del diagramma Programmazione di Calcolatori: I diagrammi di flusso

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 (il tipo del valore memorizzabile) Programmazione di Calcolatori: I diagrammi di flusso

Stato della Memoria Molto informalmente: Molto meno informalmente: è una “foto” istantanea della memoria Molto meno informalmente: è determinato dall’insieme delle triple (nomevar, tipovar, valorevar) Programmazione di Calcolatori: I diagrammi di flusso

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

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

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

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

Non lo so Stato della Memoria Stato1 = Stato2 ? Stato1 Stato2 A B C D Programmazione di Calcolatori: I diagrammi di flusso

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

Definizione delle variabili utilizzate 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 del diagramma Tipo delle variabili intero: -2, -1, 0, 1, 2 …. carattere: ‘c’, ‘2’, ‘!’ … booleano: true, false Nome delle variabili esattamente 1 almeno 1 Programmazione di Calcolatori: I diagrammi di flusso

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

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

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

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

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

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

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

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

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

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

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

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

Condizioni di validità Esiste un solo blocco di inizio e almeno un blocco di termine; il blocco di inizio ha un solo arco uscente e non ha archi entranti; ogni blocco di uscita ha un solo arco entrante e non ha archi uscenti; ciascun blocco di elaborazione, di acquisizione, e 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

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

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

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

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

Calcolare il massimo elemento di un vettore di K interi Vettori Start Nome: MaxVett Variabili: int index, int vett[K] Esempio Calcolare il massimo elemento di un vettore di K interi max  vett[1] index  2 index > K index  index+1 false true max End vett[index] > max max  vett[index] true Programmazione di Calcolatori: I diagrammi di flusso

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 {(1,1), (1,2), …., (n, m)} Esempio: (1,1) (2,1) (3,1) (4,1) (5,1) (1,2) (2,2) (3,2) (4,2) (5,2) 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

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

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

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

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

mat[ind][ind] > max Matrici Start Nome: AcqMat Variabili: int ind, max int mat[P][P] Calcolare il massimo elemento sulla diagonale principale di una matrice di P x P interi Esempio ind  1 max  mat[1][1] ind <= P End false max ind ind+1 false true mat[ind][ind] > max max  mat[ind][ind] true Programmazione di Calcolatori: I diagrammi di flusso

mat[ind][P–ind+1] > max max  mat[ind][P –ind+1] Matrici Start Nome: AcqMat Variabili: int ind, max int mat[P][P] Calcolare il massimo elemento sull’anti-diagonale di una matrice di P x P interi Esempio ind  1 max  mat[1][P] ind <= P End false max ind ind+1 false true mat[ind][P–ind+1] > max max  mat[ind][P –ind+1] true Programmazione di Calcolatori: I diagrammi di flusso

Matrici Prodotto tra matrici: siano date una matrice A di dimensione m x n ed una seconda matrice B di dimensioni n x p. Viene definito prodotto matriciale di A per B (A x B) la matrice C, di dimensioni m x p, i cui termini ci,j sono calcolati come segue: Programmazione di Calcolatori: I diagrammi di flusso

C[riga][col]  C[riga][col] +(A[riga][ind]*B[ind][col]) Matrici Start Nome: ProdMat Variabili: int riga, col, ind int A[P][Q], int B [Q][R], int C [P][R], Calcolare il prodotto tra due matrici di interi, di dimensioni P x Q la prima, Q x R la seconda Esempio riga  1 col  1 riga <= P false End false riga  riga+1 col  1 true col <= R col  col+1 true C[riga][col]  0 ind  1 ind <= Q false ind  ind+1 C[riga][col]  C[riga][col] +(A[riga][ind]*B[ind][col]) true Programmazione di Calcolatori: I diagrammi di flusso