Skip to main content

Flowgorithm

In fase di realizzazione.

Nella lezione si prova a spiegare le funzioni fondamentali del software Flowgorithm per la creazione di algoritmi visivi. Vengono illustrati i blocchi di inizio e fine che delimitano l'esecuzione del programma. Si descrive l'importanza della dichiarazione delle variabili e la scelta dei relativi formati numerici o testuali. L'autore mostra come utilizzare i blocchi di lettura e scrittura per interagire con l'utente e acquisire i dati. Infine, spiega l'impiego del blocco di assegnazione per eseguire operazioni matematiche e ottimizzare la visualizzazione dei risultati.


Guida Didattica: Fondamenti di Logica di Programmazione con Flowgorithm

1. Architettura Fondamentale dell'Algoritmo: I Blocchi di Controllo

Contesto e Importanza Strategica

L'utilizzo dell'ambiente visuale Flowgorithm costituisce un supporto pedagogico fondamentale per formalizzare la logica di programmazione negli studenti. L'interfaccia grafica permette di astrarre la complessità sintattica dei linguaggi di programmazione testuali tradizionali, consentendo al discente di concentrarsi sulla sequenza logica del calcolo e sulla chiarificazione dei confini operativi entro cui un algoritmo si sviluppa.

Punti di Inizio e Fine

La struttura portante di qualsiasi diagramma di flusso in Flowgorithm si fonda su due elementi essenziali non negoziabili:

  • Blocco Inizio: Rappresenta l'unico punto d'ingresso dell'algoritmo, indicando esattamente il punto in cui l'esecutore automatico avvia il ciclo di vita del programma.
  • Blocco Fine: Rappresenta il punto di uscita univoco che decreta la conclusione definitiva del processo esecutivo e il rilascio delle risorse.
 [Inizio]
    |
    v
(Istruzioni)
    |
    v
  [Fine]

Questi due delimitatori garantiscono il rispetto del principio di esecuzione sequenziale e ordinata delle istruzioni intermedie. Ogni procedura algoritmica deve necessariamente svilupparsi all'interno di questo perimetro ben definito: l'assenza o la scorretta collocazione di tali confini comprometterebbe l'integrità strutturale del flusso di controllo, rendendo l'algoritmo ambiguo o incompleto.

Dalla definizione della struttura rigida e delimitata dell'algoritmo nasce la necessità di gestire ed elaborare i dati che fluiscono al suo interno.

2. Gestione della Memoria: Dichiarazione e Tipizzazione delle Variabili

Contesto e Importanza Strategica

La comprensione dei meccanismi di allocazione in memoria e della tipizzazione dei dati rappresenta la pietra angolare di qualsiasi percorso di alfabetizzazione informatica. Dal punto di vista pedagogico, è essenziale che lo studente sviluppi un modello mentale chiaro della memoria ram come un insieme di contenitori etichettati: prima di poter manipolare un'informazione, la macchina deve riservare uno spazio di memoria idoneo ad accoglierla.

Anatomia e Dichiarazione delle Variabili

Per riservare e configurare uno spazio in memoria si utilizza il blocco Dichiarazione. Una variabile è formalmente definita da due componenti:

  1. Identificatore (Nome): Il nome univoco assegnato al contenitore di memoria per poterlo richiamare nel codice.
  2. Valore: L'informazione quantitativa o qualitativa contenuta all'interno dello spazio riservato, destinata a mutare nel tempo durante l'esecuzione.

Regole di Denominazione degli Identificatori in Flowgorithm: Per garantire la validità sintattica ed evitare errori di compilazione, la scelta degli identificatori (come numero1 e numero2) deve sottostare a regole precise:

  • Assenza di spazi: Gli identificatori non possono contenere spazi vuoti (ad esempio, la sintassi corretta è numero1 e non numero 1).
  • Caratteri ammessi: Devono iniziare obbligatoriamente con una lettera e possono contenere caratteri alfanumerici.
  • Significatività semantica: I nomi devono rispecchiare il ruolo del dato (es. somma, sottrazione), favorendo l'auto-documentazione del codice.

Valutazione dei Tipi di Dato Fondamentali

Durante la fase di dichiarazione è obbligatorio esplicitare il tipo di dato che la variabile potrà ospitare:

  • Intero: Adatto a rappresentare numeri privi di parte decimale, sia positivi che negativi (es. 3, 45, -4, -7).
  • Reale: Utilizzato per rappresentare numeri decimali con virgola (es. 3,2, 7,8).
  • Stringa e Booleano: Rappresentano estensioni fondamentali per la gestione di dati testuali e valori di verità logica (Vero/Falso), la cui trattazione operativa avanzata viene rinviata a fasi successive del percorso formativo.

Tipo di Dato

Descrizione Tecnica

Esempi nel Testo di Riferimento

Intero

Numeri interi relativi (senza parte decimale)

3, 45, -4, -7

Reale

Numeri decimali a virgola mobile

3,2, 7,8

Stringa

Sequenze di caratteri alfanumerici e testo

(Oggetto di approfondimenti successivi)

Booleano

Valori di verità logica (Vero / Falso)

(Oggetto di approfondimenti successivi)

Una volta definite le variabili e allocata la memoria, diventa indispensabile stabilire un canale di comunicazione con l'esterno per acquisire i dati e mostrare i risultati.

3. Flussi di Input/Output e Interattività con l'Utente

Contesto e Importanza Strategica

L'interfaccia utente nei programmi visuali è regolata dai flussi di Input (ingresso) e Output (uscita). Insegnare una corretta progettazione dell'I/O significa educare alla sensibilità verso l'esperienza utente (UX): un programma privo di un'interazione trasparente rischia di risultare inutilizzabile o ambiguo.

Acquisizione Dati con il Blocco Leggi e la Problematica del "Silent Hang"

Il blocco Leggi interrompe l'esecuzione dell'algoritmo e pone la macchina in stato di attesa di un input da tastiera, memorizzando il valore fornito nella variabile indicata (ad esempio, acquisizione di numero1 e numero2).

Analisi Pedagogica del "Blocco Silenzioso": Se un programmatore inserisce un blocco Leggi senza precederlo da un messaggio esplicativo, l'utente si trova di fronte a uno schermo immobile con cursore lampeggiante. Questa condizione di "blocco silenzioso" (silent hang o uno stato apparentemente congelato) genera attrito cognitivo: l'utente non ha alcun elemento per dedurre quale azione sia richiesta o quale tipo di dato debba inserire.

Comunicazione ed Output con il Blocco Scrivi

Per guidare l'utente e restituire i dati elaborati si utilizza il blocco Scrivi. Dal punto di vista sintattico, è cruciale distinguere la presenza o l'assenza delle virgolette:

  • Testo Letterale (fra virgolette): Una stringa racchiusa tra doppi apici (es. "inserisci un numero") viene stampata a schermo esattamente così come scritta.
  • Valore di una Variabile (senza virgolette): Scrivere il nome di una variabile senza virgolette (es. somma) indica alla macchina di accedere alla cella di memoria corrispondente e stampare il valore algebrico in essa contenuto in quel preciso momento.

Evoluzione dell'Interfaccia Utente: Refactoring delle Richieste

Nel processo di apprendimento, lo studente passa da una struttura d'interfaccia embrionale a una più matura ed efficiente:

  1. Fase Iniziale (Prompts Duplicati): Utilizzo di due blocchi distinti di output e lettura per ciascun dato:
    • Scrivi "inserisci un numero" \rightarrow Leggi numero1
    • Scrivi "inserisci un numero" \rightarrow Leggi numero2
  2. Fase Ottimizzata (Prompt Consolidato): Snellimento dell'interfaccia mediante l'accorpamento delle istruzioni di guida per l'utente:
    • Scrivi "inserisci due numeri" \rightarrow Leggi numero1 \rightarrow Leggi numero2

Definiti i canali di interazione I/O, è possibile procedere alla manipolazione algebrica dei dati acquisiti e alla gestione delle trasformazioni di memoria.

4. Elaborazione Algebrica e Mutabilità dello Stato

Contesto e Importanza Strategica

La trasformazione dei dati mediante operazioni matematiche rappresenta il cuore logico dell'elaborazione informatica. Attraverso i blocchi operativi, l'algoritmo converte gli input grezzi forniti dall'utente in informazioni elaborate finali.

Esecuzione di Operazioni tramite il Blocco Assegnazione

Il blocco Assegnazione è lo strumento preposto all'esecuzione dei calcoli e alla memorizzazione del loro esito. La sua struttura interna prevede due campi principali:

  1. Variabile: Il nome del contenitore di destinazione che ospiterà il risultato.
  2. Espressione: La formula algebrica o l'operazione da valutare.

Per poter salvare i risultati dei calcoli, il programmatore deve preventivamente dichiarare le relative variabili di destinazione dei dati: somma, sottrazione, moltiplicazione e divisione.

Gli operatori algebrici fondamentali supportati dall'ambiente sono:

  • Addizione: + (es. somma = numero1 + numero2)
  • Sottrazione: - (es. sottrazione = numero1 - numero2)
  • Moltiplicazione: * [asterisco] (es. moltiplicazione = numero1 * numero2)
  • Divisione: / [tratto / slash] (es. divisione = numero1 / numero2)

Il Concetto di Mutabilità del Valore e la Chiarificazione dell'Assegnazione

Un ostacolo cognitivo comune nell'apprendimento della programmazione risiede nel fraintendimento del simbolo di uguale (=). In matematica, = indica un'equazione o un'uguaglianza simmetrica; in informatica, rappresenta un operatore di assegnazione (trasferimento di stato) orientato da destra a sinistra.

L'istruzione di autoincremento ne è l'esempio fondamentale:

\text{numero1} = \text{numero1} + 1

Smontare il Misconcetto Studentesco: Algebricamente, l'equazione x = x + 1 sarebbe un'assurdità impossibile. In programmazione, l'esecutore lavora in due fasi sequenziali ben distinte:

  1. Valutazione (Destra): Legge il valore corrente contenuto in numero1 e vi somma la costante 1.
  2. Scrittura (Sinistra): Sovrascrive il vecchio valore della variabile numero1 allocando il nuovo risultato nella medesima cella di memoria.

Se, ad esempio, l'utente inserisce inizialmente il valore 2 nella variabile numero1, l'esecuzione di questa riga di codice distruggerà il 2 e memorizzerà il valore 3. Questo meccanismo dimostra concretamente la natura mutabile delle variabili nel corso del tempo esecutivo.

Ottenuti e aggiornati i valori algebrici, la fase conclusiva del flusso algoritmico consiste nell'ottimizzare la presentazione dell'output verso l'utente finale.

5. Ottimizzazione del Codice e Formattazione dell'Output

Contesto e Importanza Strategica

Sviluppare un algoritmo efficace non significa semplicemente garantirne la correttezza di calcolo, ma anche curare la pulizia della struttura visuale e la chiarificazione dell'output. Il refactoring da una sequenza disordinata di blocchi a una struttura sintetica rappresenta un salto di qualità importante nella maturità di programmazione.

Dalla Ridondanza all'Eleganza: Confronto di Refactoring

Inizialmente, lo studente tende a stampare ogni singolo risultato mediante blocchi Scrivi isolati e privi di contestualizzazione, ottenendo un diagramma di flusso frammentato e un output disordinato a schermo.

Approccio Naive (Blocchi Multipli e Disordinati):
[ Scrivi somma ]
[ Scrivi sottrazione ]
[ Scrivi moltiplicazione ]
[ Scrivi divisione ]

Svantaggio: L'output finale mostra una sequenza grezza di numeri privi di significato per l'utente finale, generando confusione visiva.

Approccio Ottimizzato (Blocco Integrato Concatenato):
[ Scrivi "la somma dei due numeri e " & somma & " la differenza tra i due numeri e " & sottrazione & " la moltiplicazione e " & moltiplicazione & " la divisione e " & divisione ]

Vantaggio: Un'unica istruzione strutturata genera un report di output chiaro, contestualizzato ed elegante.

Concatenazione delle Stringhe e Operatore &

Per fondere testo letterale e variabili all'interno di un solo blocco Scrivi, si utilizza l'operatore & (denominato e-commerciale o operatore concatena). Esso agisce da collante sintattico tra le etichette descrittive racchiuse tra virgolette e i dati dinamici recuperati dalla memoria.

Gestione degli Spazi e Formattazione del Testo

Un errore tipico nella concatenazione consiste nell'unire stringhe e variabili senza considerare la spaziatura, ottenendo caratteri e numeri "attaccati" (es. 12la differenza anziché 12 la differenza).

Per garantire la corretta leggibilità dell'output, è necessario inserire deliberatamente degli spazi formali all'interno delle virgolette che delimitano i testi letterali:

  • Spazio finale di tracciamento: Inserire uno spazio prima della chiusura delle virgolette dell'etichetta (es. "la somma dei due numeri e ").
  • Spazio iniziale di separazione: Inserire uno spazio subito dopo l'apertura delle virgolette nel testo che segue una variabile (es. " la differenza tra i due numeri e ").

Applicando correttamente la concatenazione tramite & e la spaziatura interna alle virgolette, un'unica istruzione produce un report chiaro e professionale:

"la somma dei due numeri e " & somma & " la differenza tra i due numeri e " & sottrazione

Se ad esempio numero1 è pari a 8 e numero2 è pari a 4, il programma restituirà a schermo: la somma dei due numeri e 12 la differenza tra i due numeri e 4

La cura della formattazione dell'output completa il percorso didattico, trasformando una sequenza di istruzioni logiche in un'applicazione software completa, pulita e pienamente fruibile per l'utente finale.


Gli appunti



Torna all'inizio della pagina