Capitolo 3 L elaborazione e la strutturazione dell informazione

Documenti analoghi
Capitolo 3 Elaborazione e Strutturazione dell Informazione. (Introduzione ai Sistemi Informatici Sciuto et alii)

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Laboratorio di Programmazione

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Informatica. Come si risolve un problema?

Introduzione alla programmazione

Parte Seconda: Fondamenti di informatica

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Corso di Informatica di Base

ELABORAZIONE DELL INFORMAZIONE. Problemi e Algoritmi. Esecutore. Azioni Elementari 13/05/2008. Processo di Soluzione di un Problema

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Problemi, algoritmi, calcolatore

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio

LABORATORIO DI INFORMATICA

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Rappresentazione con i diagrammi di flusso (Flow - chart)

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

ALGORITMI: PROPRIETÀ FONDAMENTALI

LINGUAGGI DI ALTO LIVELLO

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

Il linguaggio di programmazione Python

Il concetto di calcolatore e di algoritmo

Marta Capiluppi Dipartimento di Informatica Università di Verona

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Elaboratore Elettronico

Linguaggi, Traduttori e le Basi della Programmazione

LA METAFORA DELL UFFICIO

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Sviluppo di programmi

Algoritmi e Programmi

Elementi di programmazione

n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Algoritmi e Linguaggi

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Concetti Introduttivi. Il Computer

Teoria dell Informazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Cos è la programmazione?

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Il concetto di informatica. Graziano Pravadelli (2012)

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Programmazione C Massimo Callisto De Donato

Cosa è l Informatica?

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Studio degli algoritmi

Linguaggi di Programmazione

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

LA METAFORA DELL UFFICIO

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica. Compressione dati

Programmazione strutturata

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. è uno strumento in grado di eseguire insiemi di azioni elementari.

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

I Linguaggi di Programmazione

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Come ragiona il computer. Problemi e algoritmi

Informatica, Algoritmi, Linguaggi

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Lezione 5. La macchina universale

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Unità Didattica 2 I Linguaggi di Programmazione

L INFORMATICA c1. Informatica è qualcosa che ha a che fare con l uso del computer

FONDAMENTI DI INFORMATICA

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Analisi e programmazione 1

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

PROGRAMMAZIONE STRUTTURATA

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Il Software programmabili programma algoritmo

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Informatica Generale Andrea Corradini I linguaggi di programmazione

Funzioni, Stack e Visibilità delle Variabili in C

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Dall algoritmo al programma

Esercitazione 3. Espressioni booleane I comandi if-else e while

LINGUAGGI DI PROGRAMMAZIONE!

1 Esercizi in pseudocodice

Fondamenti di Algoritmi

Introduzione alla programmazione. Walter Didimo

Linguaggi di programmazione

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

Transcript:

Capitolo 3 L elaborazione e la strutturazione dell informazione

Problemi e algoritmi

Definire il problema Eliminare le ambiguità nella formulazione del problema Individuare il risultato che si vuole ottenere, gli obiettivi da raggiungere Evidenziare le regole da rispettare i vincoli interni ed esterni i dati espliciti ed impliciti Eliminare i dettagli inutili ed ambigui

Soluzioni ed esecutori La descrizione della soluzione di un problema dipende dall esecutore esecutore con un livello medio di scolarità determina la superficie s di un cerchio di cui è noto il raggio r ; esecutore che non conosce come calcolare l area del cerchio la superficie di un cerchio è s = π r 2 ; esecutore che non conosce π la superficie di un cerchio è s = πr 2 e π indica pi greco ed è 3.1415 ; eleva al quadrato il raggio e quindi moltiplica il risultato per pi greco ; moltiplica il raggio per se stesso e poi il risultato per 3.14 ; Descrizione della soluzione di un problema sia accettabile per un esecutore si scompone il problema originario in sottoproblemi; si scompongono i sottoproblemi in sotto-sottoproblemi; si prosegue nella scomposizione fino a giungere a problemi elementari (o primitivi), cioè problemi che possono essere risolti direttamente dall esecutore

Istruzioni e azioni elementari Ogni istruzione elementare è associata a un azione elementare (oppure a una successione di azioni elementari) ) che può essere direttamente compiuta dall esecutore. Processo che porta alla soluzione di un problema: per il soggetto descrittore richiede un attività di scomposizione progressiva del problema, fino a giungere a una successione di istruzioni elementari (ciascuna associata al corrispondente problema elementare); per il soggetto esecutore richiede l esecuzione delle azioni elementari associate alle istruzioni elementari identificate. La condizione che le azioni elementari siano eseguite in successione, cioè secondo un ordine definito, è necessaria perché, in generale, ognuna di esse opera sui dati che riceve dalle azioni eseguite precedentemente. Le azioni elementari vengono interpretate in termini funzionali,, come delle entità che trasformano i dati che ricevono in ingresso (input( input) ) in risultati (output( output), con ciò prescindendo dalle modalità con cui tale trasformazione viene effettuata, cioè assumendo un modello a a scatola nera (black box).

Procedura effettiva Si dice procedura effettiva per un esecutore una successione di azioni tale che: tutte le azioni della successione sono elementari per l esecutore, che è in grado di eseguire ciascuna di esse in un tempo finito e in modo deterministico, cioè ottenendo sempre gli stessi risultati a parità di input; è fissato l ordine di esecuzione delle azioni; è esplicitamente specificato il modo in cui un azione utilizza i risultati delle azioni che la precedono.

Soluzione effettiva Dati un problema P e un esecutore E,, si definisce soluzione effettiva del problema P per l esecutore l E una successione di istruzioni elementari tale che: l esecutore è in grado di interpretare le istruzioni nella successione e quindi di associare a ciascuna di esse l azione (o la successione di azioni) che deve compiere per eseguirla; la successione di azioni risultante dall interpretazione delle istruzioni costituisca una procedura effettiva per l esecutore stesso. In generale, possono esistere diverse soluzioni effettive dello stesso problema per lo stesso esecutore

Area di una campana (1) Problema Scomposizione del problema in tre sottoproblemi r Sottoproblema 1 soluzione elementare: s = ½ π r 2 r=b/2 Sottoproblema 2 h 2 b h 2 b soluzione elementare: s = b h 2 h 1 B soluzione elementare: s =?? h 1 B Sottoproblema 3 soluzione elementare: s =??

Area di una campana (2) b Scomposizione del sottoproblema 3 in tre ulteriori sottoproblemi h 1 B Sottoproblema 3 h h 1 1 soluzione effettiva: h b 1 s = ½ (½(B b) h 1 ) + ½ (B b) ½ (B b) b h 1 + ½ (½(B b) h Sottoproblema 3.1 Sottoproblema 3.2 1 ) Sottoproblema 3.3 soluzione elementare: soluzione elementare: soluzione elementare: s =½ = (½(B b) h 1 ) s = b h 1 s =½ = (½(B b) h 1 ) Composizione delle soluzioni dei tre sottoproblemi 3.1, 3.2 e 3.3 per risolvere il sottoproblema 3

Area di una campana (3) Problema r Sottoproblema 1 soluzione elementare: s = ½ π r 2 h 2 r=b/2 b Composizione delle soluzioni dei tre sottoproblemi 1, 2 e 3 per risolvere il problema originario h 2 b Sottoproblema 2 soluzione elementare: s = b h 2 h 1 B soluzione effettiva: s = ½ π r 2 + b h 2 + ½ (½(B b) h 1 ) + b h 1 + ½ (½(B b) h 1 ) h 1 B Sottoproblema 3 soluzione effettiva: s = ½ (½(B b) h 1 ) + b h 1 + ½ (½(B b) h 1 )

Esecutori e linguaggi Un esecutore è definito in base a tre elementi: l insieme delle operazioni che è capace di compiere; l insieme delle istruzioni che capisce (sintassi); quali operazioni associa ad ogni istruzione che riconosce (semantica). Il calcolatore capisce le istruzioni che fanno parte del linguaggio macchina istruzioni primitive semplici (e.g. max 2 operandi) attenzione all efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore La soluzione si dice effettiva se l esecutore l è in grado di: interpretarla compiere le azioni (in un tempo finito!)

Proprietà di un azione elementare Finitezza l azione deve concludersi in un tempo finito Osservabilità l azione deve avere un effetto osservabile, cioè deve produrre qualcosa Riproducibilità a partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso risultato

Dal problema alla soluzione automatica Specifiche dei requisiti: descrizione precisa e corretta dei requisiti (verificabilità) ---> cosa? Progetto: procedimento con cui si individua la soluzione ---> > come? Soluzione: algoritmo

Proprietà degli algoritmi Correttezza L algoritmo perviene alla soluzione del compito cui è preposto, senza difettare di alcun passo fondamentale Efficienza L algoritmo perviene alla soluzione del problema usando la minima quantità di risorse fisiche tempo di esecuzione, memoria,

Alcuni concetti Algoritmo = descrizione di come si risolve un problema Programma = algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione) Linguaggio macchina = linguaggio effettivamente compreso da un calcolatore, caratterizzato da istruzioni primitive semplici (e.g. max 2 operandi) attenzione all efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore Due aspetti rilevanti: produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) codificarli in programmi (cioè renderli comprensibili al calcolatore)

Sviluppo di un programma PROBLEMA ANALISI SOLUZIONE INFORMALE SISTEMA INFORMATICO: STRUMENTI DI SUPPORTO EVOLUTI (CASE) FORMALIZZAZIONE SOLUZIONE FORMALE ALGORITMO SISTEMA INFORMATICO: AMBIENTE DI SVILUPPO TRADIZIONALE PROGRAMMAZIONE PROGRAMMA (alto livello) ESECUTORE DEL LINGUAGGIO DI ALTO LIVELLO TRADUZIONE PROGRAMMA (macchina) ESECUTORE DEL LINGUAGGIO MACCHINA (HW) ESECUZIONE

Algoritmi Formalizzazione

Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani sintetico e intuitivo codificato in linguaggi informali o semi-formali (linguaggio naturale, diagrammi di flusso, ) Algoritmo formulato per essere eseguito automaticamente preciso ed eseguibile codificato in linguaggi comprensibili dagli esecutori automatici (linguaggio macchina o linguaggio di programmazione di alto livello)

Algoritmi e variabili Gli algoritmi sono parametrici: producono un risultato che dipende da un insieme di dati di partenza; descrivono la soluzione non di un singolo problema, ma di una intera classe di problemi strutturalmente equivalenti. Esempi: l algoritmo per la moltiplicazione di due numeri specifica come effettuare il prodotto di tutte le possibili coppie di numeri; l algoritmo per la ricerca di un libro nello schedario della biblioteca vale per tutti i possibili libri; Le istruzioni dell algoritmo fanno riferimento a variabili,, il cui valore non è fissato a priori ma cambia a seconda della situazione elaborativa in cui l esecutore l si trova.

All interno di espressioni, Uso delle variabili l esecutore usa il valore contenuto nelle variabili per calcolare il risultato dell espressione, per esempio op1 + op2 op3 oppure op1 / op2 op3, in istruzioni di assegnamento introdurre nel contenitore identificato dal nome della variabile il valore specificato a destra dell assegnamento; per esempio r 35 (assegna 35 alla variabile il cui nome è r), pi 3,14, in istruzioni di assegnamento combinate con espressioni assegna a una variabile il risultato ottenuto dalla valutazione di un espressione, per esempio in circ 2 r pi il risultato dell espressione 2 r pi viene calcolato utilizzando i valori contenuti nelle variabili r e pi e il risultato viene poi assegnato alla variabile circ; la stessa variabile può comparire in entrambi i lati dell istruzione di assegnamento, per esempio in k k+1 il valore contenuto in k viene utilizzato per trovare il valore dell espressione k + 1 che viene memorizzato come nuovo valore di k.

Tipi di dati Dati e istruzioni Numeri naturali o interi o reali (1, -2, 0.34) Caratteri alfanumerici (A, B,..) Dati logici o booleani (Vero, Falso) Array o vettore di n elementi ({1,2,3}) Istruzioni Operazioni di Input/Output (es. leggi, scrivi) Operazioni Aritmetico-logiche (es. max = A + B) Strutture di controllo (es. SE, RIPETI )

I dati Ogni variabile è caratterizzata dal suo tipo. Tipi predefiniti: numeri, caratteri, booleani, Altri tipi: stringhe, date, Variabili strutturate: Vettori (o array) Record

Operazioni elementari Operazioni aritmetiche e assegnamenti di valori a singole variabili Es. C (A + B) Condizioni sul valore di singole variabili se (A > B) allora altrimenti Lettura e scrittura di variabili Lettura e scrittura di variabili Leggi A oppure Stampa B

Rappresentazione degli algoritmi Linguaggio naturale Diagramma a blocchi Pseudo codice Linguaggio di programmazione

Rappresentazione degli algoritmi Linguaggio Naturale Diagramma di flusso Inizio Sollevare il ricevitore Attendere il segnale di linea libera Leggi x e y P 1 e P 2 Comporre il numero d x y P 3 Sì d > 0? No P 4 Scrivi max è x P 5 Scrivi max è y P 6 Fine P 7

Rappresentazione degli algoritmi Pseudo Codice leggi alfa, beta prod 0 finché alfa 0 ripeti prod prod + beta; alfa alfa 1; stampa prod; Linguaggio di programmazione #include <stdio.h> int main (void) { puts ( ciao mondo! ); return Exit_success; }

Diagrammi di flusso START END I/O PROCESS Inizio Fine Operazioni di ingresso/uscita Elaborazione Sì Predicato No SUB-PROCESS Selezione a due vie Sottoprogramma

Esempio: dati in ingresso due numeri X e Y, si calcoli e stampi il maggiore. Esempio Inizio Leggi x e y d x y P 1 e P 2 P 3 Sì d > 0? No P 4 Scrivi max è x P 5 Scrivi max è y P 6 Fine P 7

Le strutture di controllo

Esempi strutture di controllo Istruzioni condizionate Se (condizione) blocco istruzioni 1 altrimenti blocco istruzioni 2 Ripetizione ciclica di istruzioni Ripetizione ciclica di istruzioni Finché (condizione) blocco istruzioni

Selezione semplice (if-then) Sì test blocco istruzioni N o

Selezione a due vie (if-then-else) Sì test N o blocco 1 blocco 2

Selezione a più vie (if-then Sì cond_1 No elseif-then elseif-then...) blocco 1 blocco 2 cond_2 blocco cond_n blocco n blocco n+1

Ciclo a condizione iniziale (while( while-do) Sì blocco istruzioni test N o

Ciclo a condizione finale (do-while) blocco istruzioni Sì test N o

Ciclo FOR (Iterativo) (for loop) Sì test blocco istruzioni N o

La Programmazione

Linguaggio di Programmazione La notazione con cui è possibile descrivere gli algoritmi. Programma: è la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. Ogni linguaggio di programmazione dispone di un insieme di parole chiave (keywords) Ogni linguaggio è caratterizzato da una sintassi e da una semantica

Alcuni concetti Algoritmo = descrizione di come si risolve un problema Programma = algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione) Linguaggio macchina = linguaggio effettivamente compreso da un calcolatore, caratterizzato da istruzioni primitive semplici (e.g. max 2 operandi) attenzione all efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore Due aspetti rilevanti: produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) codificarli in programmi (cioè renderli comprensibili al calcolatore)

Il linguaggio macchina Il linguaggio macchina è direttamente eseguibile dall elaboratore elaboratore, senza nessuna traduzione. Istruzioni ed operandi relativi al programma in esecuzione sono caricati in memoria e quindi sono memorizzati in forma binaria. Vincolo: conoscenza dei metodi di rappresentazione delle informazioni utilizzati. Istruzione: carica nell accumulatore 10010000 11001100

Il linguaggio Assembler Le istruzioni corrispondono univocamente a quelle macchina,, ma vengono espresse tramite nomi simbolici (parole chiave). Il programma prima di essere eseguito deve essere tradotto in linguaggio macchina (assemblatore). Vincolo: necessitn ecessità di conoscere in dettaglio le caratteristiche della macchina (registri, dimensione e dei dati,, set di istruzioni) Anche semplicis algoritmi implicano la specifica di molte istruzioni

I linguaggi di alto livello Sono i linguaggi di terza generazione.. Le istruzioni esprimono una serie di azioni.. Il programma prima di essere eseguito deve essere tradotto in linguaggio macchina (traduttore) Il programmatore può astrarre dai dettagli legati all architettura architettura ed esprimere i propri algoritmi in modo simbolico Sono indipendenti dalla macchina (astrazione)

Linguaggi di II/III generazione Programma in linguaggio assemblatore (Codice sorgente) Programma in linguaggio procedurale (alto livello) (Codice sorgente) Assemblatore Traduttore Programma in linguaggio macchina (Codice oggetto) Programma in linguaggio macchina (Codice oggetto)

Sviluppo di un Programma I traduttori sono programmi particolari che provvedono a convertire il codice di programmi scritti in un dato linguaggio di programmazione (sorgenti), nella corrispondente rappresentazione in linguaggio macchina (eseguibili)

Due tipi di traduttori Compilatori Accettano in ingresso l intero programma e producono in uscita la rappresentazione dell'intero programma in linguaggio macchina. Interpreti Traducono ed eseguono direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione. L esecuzione di un programma compilato è più veloce dell esecuzione esecuzione di un programma interpretato ato.

I programmi

Parti fondamentali di un programma Identificazione del programma Dichiarazione delle variabili utilizzate, di cui sono indicati tipo e nome Specificazione della parte esecutiva del programma, detta anche corpo del programma

Esempi di algoritmo

Prodotto di due interi positivi 1. Leggi a 2. Leggi b 3. Somma b a se stesso a volte 4. Scrivi il risultato

Prodotto di due interi positivi 1. Leggi a Inizio 2. Leggi b 3. z 0 4. Se (a 0) salta a 8 5. z z+ b 6. a a-1 7. Torna a 4 8. Scrivi a b = z Sì z z + b a a 1 Leggi a e b z 0 a > 0? No Scrivi a b = z Fine

Prodotto di due interi positivi 1. Leggi a 2. Leggi b 3. z 0 4. Se (a 0) salta a 8 5. z z+ b 6. a a-1 7. Torna a 4 8. Scrivi a b = z Procedimento sequenziale Non ambiguo Formulazione generale Prevede tutti i casi?? (che succede se a<0?)

Somma dei primi N numeri naturali Inizio Leggi n ris 0 i 0 3 4 No i > n? Sì 5 ris ris + i i i +1 1 2 Scrivi ris Fine 6 T posiz. n i ris note t 01?????? Variabili non ancora definite t 02 4???? Letto il valore 4 e inserito in n t 03 4 0 0 i < n posiz. 4 t 04 4 0 0 t 05 4 1 0 i < n posiz. 4 t 06 4 1 0 t 07 4 2 1 i < n posiz. 4 t 08 4 2 1 t 09 4 3 3 i < n posiz. 4 t 10 4 3 3 t 11 4 4 6 i = n posiz. 4 t 12 4 4 6 t 13 4 5 10 i > n posiz. 5 t 14 4 5 10 t 15 4 5 10 Stampato risultato (10)

Somma dei primi N numeri naturali Inizio Inizio Leggi n Leggi n ris 0 i 0 ris n No i > n? Sì No n < 1? Sì ris ris + i i i +1 Scrivi ris n n 1 ris ris + n Scrivi ris Fine Fine