1 / 24

Programmazione di Calcolatori

Programmazione di Calcolatori. I Diagrammi di Flusso Soluzione agli esercizi proposti. I più semplici. Calcolare il massimo di una sequenza non vuota di numeri interi positivi terminata da un intero negativo. Start Nome: MaxOfSeq Variabili: int val, max. max  -1. val.

aldona
Download Presentation

Programmazione di Calcolatori

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmazione di Calcolatori I Diagrammi di Flusso Soluzione agli esercizi proposti Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  2. I più semplici Calcolare il massimo di una sequenza non vuota di numeri interi positivi terminata da un intero negativo Start Nome: MaxOfSeq Variabili: int val, max max  -1 val Descrizione variabili: val: memorizza il valore corrente della sequenza max: memorizza il massimo corrente true val < 0 max End false false val > max true max  val Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  3. I più semplici Acquisire due valori interi in due variabili e scambiarne il contenuto Start Nome: Scambia Variabili: int A, B, aux A, B aux  A A B B  aux Descrizione variabili: A: memorizza il primo valore intero B: memorizza il secondo valore intero aux: variabile di appoggio End Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  4. I più semplici Start Nome: MCM Variabili: int A, B, max, mcm, count A, B Descrizione variabili: A: memorizza il primo intero B: memorizza il secondo intero max: memorizza il massimo tra i due interi mcm: memorizza il candidato corrente a minimo comune multiplo count: moltiplicato per max genera il prossimo candidato a minimo comune multiplo count  2 A > B max  A max  B true false mcm  max mcm % A = 0 and mcm % B = 0 false mcm  max*count cont  count+1 Calcolare il minimo comune multiplo tra 2 interi positivi true mcm End Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  5. I più semplici Start Nome: MCM Variabili: int A, B, mcm Calcolare il minimo comune multiplo tra 2 interi positivi A, B mcm  A Descrizione variabili: A: memorizza il primo intero B: memorizza il secondo intero mcm: memorizza il candidato corrente a minimo comune multiplo mcm % A = 0 and mcm % B = 0 mcm  mcm+1 mcm End Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  6. I più semplici Start Nome: MCD Variabili: int A, B, min, mcd, count Calcolare il massimo comun divisore tra 2 interi positivi A, B mcd  1 count  1 Descrizione variabili: A: memorizza il primo intero B: memorizza il secondo intero min: memorizza il minimo tra i due interi count: memorizza il candidato corrente a massimo comun divisore mcd: memorizza l’ultimo divisore comune individuato false true A > B min  A min  B true count > min mcd false End A % count = 0 and B % count = 0 count  count+1 false true mcd  count Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  7. Vettori Dato un vettore di n ≥ 1interi, restituirne il contenuto Start Nome: ResVett Variabili: int curs, int vett[N] Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento curs  0 curs< N false End curs curs+1 true vett[curs] Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  8. Vettori Dato un vettore di n ≥ 1interi, determinarne il massimo elemento Start Nome: MaxVett Variabili: int curs, max int vett[N] curs  0 max  vett[0] Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento max: massimo valore individuato fino alla posizione curs false curs < N max End curs  curs+1 true false vett[curs] > max true max  vett[curs] Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  9. Vettori Dato un vettore di n ≥ 1interi, determinarne il massimo elemento e la sua posizione Start Nome: MaxPosVett Variabili: int curs, max, pos int vett[N] curs  0 max  vett[0] pos  0 Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento max: massimo valore individuato fino alla posizione curs pos: posizione del valore memorizzato in max End false curs < N max, pos curs  curs+1 true false vett[curs] > max true max  vett[curs] pos  curs Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  10. Vettori Verificare la presenza di un carattere all’interno di un vettore di n ≥ 1caratteri e la sua eventuale posizione Start Nome: PosCarVett Variabili: int curs, car, pos char vett[N] curs  0 pos = -1 Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento car: memorizza il carattere di cui verificare la presenza pos: memorizza la posizione di car se presente, -1 altrimenti car End false curs < N curs  curs+1 pos true vett[curs] = car false true pos  curs Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  11. Vettori Ordinare, in ordine crescente, un vettore di n ≥ 1 interi: Selection Sort • Algoritmo: per ogni posizione p degli elementi del vettore, ad esclusione dell’ultima: determinare il valore minimo nel vettore a partire dalla posizione p inclusa. Sia q la posizione di tale valore minimo scambiare il valore nella posizione p con quello nella posizione q Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  12. Vettori Ordinare, in ordine crescente, un vettore di n ≥ 1 interi: Selection Sort • Sottoproblemi: determinare la posizione del valore minimo nel vettore a partire da una posizione data scambiare i valori di due variabili Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  13. Vettori Start Nome: PosMinVett Variabili: int curs, pos, start int vett[N] Determinare la posizione del valore minimo nel vettore a partire da una posizione data curs  start min = vett[start] pos  start Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento start: posizione dalla quale ha inizio il processamento max: massimo valore individuato fino dalla posizione start alla posizione curs pos: posizione del valore memorizzato in max End true curs = N curs  curs+1 pos false false vett[curs] < min true pos  curs min  vett[curs] Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  14. Vettori scambiare i valori di due variabili Start Nome: Scambia Variabili: int A, B, aux aux  A A B B  aux Descrizione variabili: A: memorizza il primo valore intero B: memorizza il secondo valore intero aux: variabile di appoggio End Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  15. Vettori Ordinare, in ordine crescente, un vettore di n ≥ 1 interi: Selection Sort Start Nome: Selection Sort Variabili: int curs, pos int vett[N] Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento pos: posizione del minimo elemento del vettore a partire dalla posizione curs curs  0 true curs = N-1 End false Applica PosMinVett a vett[ ] a partire dalla posizione curs e lascia il risultato in pos curs  curs+1 Applica scambia a vett[curs] e vett[pos] Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  16. Vettori Ordinare, in ordine crescente, un vettore di n ≥ 1 interi: Bubble Sort • Algoritmo: scandire l’intero vettore confrontando elementi adiacenti e scambiando i loro valori se necessario ripetere tale scansione fino al completo ordinamento del vettore, cioè finchè la scansione richiede almeno uno scambio di valori Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  17. Vettori Ordinare, in ordine crescente, un vettore di n ≥ 1 interi: Bubble Sort • Sottoproblemi: scambiare i valori di due variabili scandire il vettore confrontando elementi adiacenti e scambiando i loro valori se necessario verificare se nella scansione si è verificato almeno uno scambio di valori Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  18. Vettori Scambiare i valori di due variabili Start Nome: Scambia Variabili: int A, B, aux aux  A A B B  aux Descrizione variabili: A: memorizza il primo valore intero B: memorizza il secondo valore intero aux: variabile di appoggio End Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  19. Vettori Confrontare elementi adiacenti scambiando i loro valori se necessario, verificando nel contempo verificato almeno uno scambio di valori Start Nome: BubbleStep Variabili: int curs, flag int vett[N] curs  0 flag  false End Descrizione variabili: curs: indice per la scansione del vettore vett[ ]: vettore interessato dal processamento flag: indica l’avvenuto scambio di almeno una coppia di valori curs = N-1 flag curs  curs+1 true false false vett[curs] > vett[curs+1] flag  true true Applica scambia a vett[curs] e vett[curs+1] Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  20. Vettori Ordinare, in ordine crescente, un vettore di n ≥ 1 interi: Bubble Sort Start Nome: BubbleSort Variabili: int vett[N] Applica BubbleStep a vett[ ] true Descrizione variabili: vett[ ]: vettore interessato dal processamento false End Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  21. Matrici Start Nome: ResMat Variabili: int riga, col int mat[P][Q] Data una matrice P x Q interi, P ≥ 1, Q ≥ 1, restituirne il contenuto (per righe) riga  0 col  0 false riga < P Descrizione variabili: riga: indice per la scansione delle righe della matrice col: indice per la scansione delle colonne della matrice mat[ ][ ]: matrice interessata dal processamento End true col < Q false riga  riga+1 col  0 true mat[riga][col] col  col+1 Programmazione di Calcolatori: I diagrammi di flusso

  22. Matrici Start Nome: AcqMat Variabili: int riga, col int mat[P][Q] Data una matrice P x Q interi, P ≥ 1, Q ≥ 1, restituirne il contenuto (per colonne) riga  0 col  0 Descrizione variabili: riga: indice per la scansione delle righe della matrice col: indice per la scansione delle colonne della matrice mat[ ][ ]: matrice interessata dal processamento col < Q false End true riga < P false riga  0 col  col+1 true mat[riga][col] riga  riga+1 Programmazione di Calcolatori: I diagrammi di flusso

  23. Matrici Data una matrice quadrata di P x P interi, P ≥ 1, determinarne il massimo elemento sulla diagonale principale e la sua posizione Start Nome: MaxPosMat Variabili: int curs, max, pos int mat[P][P] curs  0 max  mat[0][0] pos  0 Descrizione variabili: curs: indice per la scansione della diagonale principale mat[ ][ ]: matrice interessata dal processamento max: massimo valore individuato fino alla posizione [curs][curs] pos: posizione del valore memorizzato in max End false curs < P max, pos curs  curs+1 true false mat[curs][curs] > max true max  mat[curs][curs] pos  curs Programmazione di Calcolatori: I diagrammi di flusso - soluzione agli esercizi

  24. Matrici Start Nome: AcqMat Variabili: int riga, col, val, count int mat[P][Q] Contare le occorrenze di un intero in una matrice di P x Q interi, P ≥ 1, Q ≥ 1 val riga  0 col  0 count 0 Descrizione variabili: riga: indice per la scansione delle righe della matrice col: indice per la scansione delle colonne della matrice val: memorizza il valore oggetto della ricerca count: memorizza il numero di occorrenze del valore mat[ ][ ]: matrice interessata dal processamento riga  0 col  col+1 col < Q false End true riga  riga+1 riga < P false true false mat[riga][col] = val true count  count+1 Programmazione di Calcolatori: I diagrammi di flusso

More Related