Controllo del Flusso e Evoluzione delle Variabili in un Flowchart
Quando analizziamo un algoritmo tramite un flowchart, è fondamentale osservare come le variabili all'interno del sistema cambiano durante l'esecuzione.
Questo ci permette di comprendere non solo la sequenza logica, ma anche l'evoluzione delle variabili nel tempo e le decisioni prese dall'algoritmo basate su queste variabili.
Vediamo un esempio concreto: Chiedi all'utente un numero. Somma tutti i numeri fino al numero inserito. Infine stampa il risultato.
Analisi:
Input:
- n: il numero fino al quale vogliamo sommare (con n> 0)
Variabili:
- somma: accumula la somma dei numeri
- i: contatore per il ciclo = 1
Output:
Ora creiamo la nostra tabella (trace table) che tiene conto di tutte le modifiche sulle variabili man mano che il nostro algorimo procede con l'esecuzione.
Step | n | somma | i |
Inizializzazione | Valore inserito | 0 | 1 |
1 | 20 | 0 | 0 |
2 | 20 | 1 | 0 |
Passi dell'Algoritmo:
1) Inizializzazione delle Variabili: Qui definiamo il valore di partenza delle nostre variabili.
2) Chiediamo il dato di input all'utente
3) Ciclo di Somma: In questo punto, il programma inizia a sommare i numeri da 1 fino a "n"
4) Una volta contato fino ad n mostra la somma finale.
Ora, se visualizziamo la tabella e il flowchart contemporaneamente, possiamo vedere come le variabili cambiano nel tempo. Dopo ogni iterazione del ciclo, "somma" e "i" verranno aggiornati finché non raggiungono la condizione di uscita.
Il controllo del flusso è essenziale per comprendere l'evoluzione delle variabili e la logica dell'algoritmo. Il flowchart fornisce una rappresentazione visiva di come l'algoritmo opera, permettendoci di osservare le decisioni prese basate sulle variabili.
Flowchart
Controlla con la trace table se è corretto il grafico!
---------------------------------------
Codice Mermaid
graph TB
id1>Chiedi all'utente un numero.
Somma tutti i numeri fino al numero inserito.
Infine stampa il risultato.]
start((Inizio)) -->
init_somma[somma = 0 ] -->
init_i[i = 1 ] -->
init_n[n = 0 ] -->
hidden_node_1[ ] -->
input_n[/I: n = Inserire un numero/] -->
check_n{n > 0?}
check_n -->|Si| hidden_node_2[ ]
check_n -->|No| show_message_error[/O: numero non valido/]
show_message_error --> hidden_node_1
somma[somma = somma + i]
hidden_node_2 --> somma
somma --> check_i
check_i{i > n?}
check_i -->|Si| print_result[/O: Il risultato è 'somma'/]
check_i -->|No| increment_i[i = i + 1]
increment_i --> hidden_node_2
style hidden_node_1 fill-opacity:0, stroke-opacity:0;
style hidden_node_2 fill-opacity:0, stroke-opacity:0;
---------------------------------------