Il 0% ha trovato utile questo documento (0 voti)
49 visualizzazioni105 pagine

Introduzione Alla Programmazione

Caricato da

yb72fbq9j6
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
49 visualizzazioni105 pagine

Introduzione Alla Programmazione

Caricato da

yb72fbq9j6
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 105

Ragionare per algoritmi

Algoritmo

Un Algoritmo è una sequenza di passi


elementari che servono a risolvere un
problema

Esempi di Algoritmo?
Algoritmo

Alla base di ogni algoritmo c’è un modello, cioè una rappresentazione astratta, semplificata, del
problema reale che si vuole affrontare

IMPO
In generale, per un dato problema NON esiste un unico algoritmo risolutivo: se ne possono
formulare diversi, basati su modelli differenti.

Docente: Rossi Daniela


La programmazione al computer non è altro che la scrittura degli algoritmi in un linguaggio che il
computer è in grado di interpretare ed eseguire

IMPO
Per formulare algoritmi NON è necessario conoscere i linguaggi di programmazione al computer

Docente: Rossi Daniela


Esercizio 1

Immaginate di voler insegnare ad un bambino come si attraversa la strada rispettando un


semaforo per pedoni

Scrivere l’algoritmo che permette di risolvere questo problema

Docente: Rossi Daniela


Attraversamento pedonale
1. Osserva il semaforo
2. Se è accesa la luce rossa stai fermo e
riprendi dal punto 1
3. Se la luce è verde, attraversa

Algoritmo più dettagliato (immaginate possa esserci il rischio che un


veicolo passi con il rosso mentre il bambino sta attraversando con il
verde)

Docente: Rossi Daniela


Algoritmo Semplice

Attraversamento pedonale
1. Osserva il semaforo
2. Se è accesa la luce rossa stai fermo e riprendi dal punto 1
3. Se la luce è verde, attraversa

Algoritmo più dettagliato (immaginate possa esserci il rischio che un


veicolo passi con il rosso mentre il bambino sta attraversando con il
verde)

Attraversamento pedonale
1. Osserva il semaforo
2. Se è accesa la luce rossa stai fermo e riprendi dal punto 1
3. Se il semaforo è verde non muoverti e osserva i veicoli
4. Se qualche veicolo si sta muovendo non muoverti e ricomincia dal punto 1
5. Altrimenti (se tutti i veicoli sono fermi) attraversa.

Docente: Rossi Daniela


IMPO
Ricordatevi che affinare le istruzioni è importante. Un algoritmo deve SEMPRE tener conto di
tutte le eventualità che possono presentarsi mentre si risolve il problema

Docente: Rossi Daniela


Esercizio 2

Immaginate di essere all’interno di questo labirinto. Riesci a vedere solo la porzione di labirinto
più vicina a te e non hai altre informazioni.
Che cosa ti conviene fare per trovare l’uscita?

Docente: Rossi Daniela


Esercizio 2

Immaginate di essere all’interno di questo labirinto. Riesci a vedere solo la porzione di labirinto
più vicina a te e non hai altre informazioni.
Che cosa ti conviene fare per trovare l’uscita?

Il problema sembra difficile ma in realtà basta girare


sempre a destra. Se ci si trova davanti ad un muro
voltarsi e continuare come prima

Docente: Rossi Daniela


Esercizio 2

1. Avanza lungo il corridoio in cui ti trovi

2. Se il corridoio è un vicolo cieco senza uscite a destra, girati di 180º e ricomincia


dal punto 1

3. Svolta a destra alla prima uscita a destra

4. Se sei ancora dentro il labirinto, ricomincia dal punto 1

5. Altrimenti il problema è risolto

Docente: Rossi Daniela


Esercizio 2

La soluzione trovata sicuramente non è ottimale. Se si dispone della mappa del labirinto e si ha la
possibilità di studiarla si può trovare una soluzione migliore

Docente: Rossi Daniela


L’utilità dell’algoritmo per l’uscita dal labirinto sta nella sua generalità:
Esso permette di uscire da qualsiasi labirinto, comunque sia fatto, anche
senza conoscerne la mappa.

Per labirinti molto complicati, come quello in figura, l’algoritmo


può rivelarsi perfino più efficiente rispetto alla ricerca di una
soluzione a tavolino

Il campo più naturale di applicazione degli algoritmi è quello scientifico

Docente: Rossi Daniela


Esercizio 3

Creare un algoritmo che calcoli l’area di un triangolo qualsiasi utilizzando una


squadra a L

1. Identifica la base

2. Misura la lunghezza della base

3. Traccia un segmento che collega alla base il vertice opposto

4. Misurare la lunghezza del segmento

5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo

Docente: Rossi Daniela


Esercizio 3

Creare un algoritmo che calcoli l’area di un triangolo qualsiasi utilizzando una


squadra a L

1. Identifica la base

2. Misura la lunghezza della base

3. Traccia un segmento che collega alla base il vertice opposto

4. Misurare la lunghezza del segmento

5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo

Docente: Rossi Daniela


Esercizio 3

Creare un algoritmo che calcoli l’area di un triangolo qualsiasi utilizzando una


squadra a L

1. Identifica la base

2. Misura la lunghezza della base

3. Traccia un segmento che collega alla base il vertice opposto

4. Misurare la lunghezza del segmento

5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo

Docente: Rossi Daniela


Esercizio 3

1. Identifica la base

2. Misura la lunghezza della base

3. Traccia un segmento che collega alla base il vertice opposto

4. Misurare la lunghezza del segmento

5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo

Ci sono infiniti modi


diversi per collegare il
vertice opposto con la
base

Docente: Rossi Daniela


Esercizio 3

L’algoritmo in questione non potrà dare un unico risultato, come invece vogliamo che gli algoritmi
facciano.

Come rimediamo?

1. Identifica la base

2. Misura la lunghezza della base

3. Traccia il segmento che parte dal vertice opposto e arriva perpendicolare


alla base

4. Misurare la lunghezza del segmento

5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo

Docente: Rossi Daniela


Le proprietà dei buoni algoritmi
Le proprietà dei buoni algoritmi

Un buon algoritmo è una sequenza di istruzioni che deve soddisfare i seguenti


requisiti:

FINITEZZA: le istruzioni si devono poter eseguire in un tempo finito

NON AMBIGUITÀ: le istruzioni devono essere espresse in modo preciso e NON ambiguo

CORRETTEZZA: il risultato deve essere adeguato

COMPLETEZZA: devono essere considerati tutti i casi particolari

GENERALITÀ: deve portare alla soluzione di una classe di problemi

EFFICIENZA: l’algoritmo deve portare al risultato nel minor tempo possibile, richiedere la
memorizzazione di pochi dati

Docente: Rossi Daniela


Le proprietà dei buoni algoritmi

Algoritmo di una ricetta per cucinare la pasta

Docente: Rossi Daniela


Le proprietà dei buoni algoritmi

Algoritmo di una ricetta per cucinare la pasta

Docente: Rossi Daniela


Il requisito della finitezza

Istruzioni devono poter essere eseguite in un tempo finito

Docente: Rossi Daniela


Il requisito della finitezza
Esercizio 4

Immaginate di dover cercare un libro (ad esempio La divina commedia di Dante), in una biblioteca formata da
una stanza con tutte le pareti ricoperte di scaffali

Docente: Rossi Daniela


Il requisito della finitezza
Esercizio 4

Immaginate di dover cercare un libro (ad esempio La divina commedia di Dante), in una biblioteca formata da
una stanza con tutte le pareti ricoperte di scaffali

Ricerca di un libro in biblioteca

1. Inizia da una parete a caso

2. Comincia dallo scaffale più in


alto e scendi verso il basso

3. Se non trovi il libro, passa alla


parete alla tua destra e riprendi
dal punto 2

4.Se hai trovato il libro, termina


la ricerca

Docente: Rossi Daniela


Il requisito della finitezza
Esercizio 4

Ricerca di un libro in biblioteca


C’è un problema relativo
alla finitezza, quale? 1. Inizia da una parete a caso

2. Comincia dallo scaffale più in


alto e scendi verso il basso

3. Se non trovi il libro, passa alla


parete alla tua destra e riprendi
dal punto 2

4.Se hai trovato il libro, termina


la ricerca

Docente: Rossi Daniela


Il requisito della finitezza
Esercizio 4

Ricerca di un libro in biblioteca

1. Inizia da una parete a caso


Nel caso il libro non sia presente nella
2. Comincia dallo scaffale più in biblioteca, l’iterazione non ha mai fine.
alto e scendi verso il basso
Per rimediare bisognerà aggiungere:
3. Se non trovi il libro, passa alla 5. Se dopo la quarta parete non hai trovato il
parete alla tua destra e riprendi libro, termina la ricerca.
dal punto 2

4.Se hai trovato il libro, termina


la ricerca

Docente: Rossi Daniela


Il requisito della finitezza

IMPO

È importante ricordare che il requisito della finitezza si applica anche ai dati in ingresso dell’algoritmo (input o
stato iniziale) e ai risultati cioè ai dati in uscita (output o stato finale)

Docente: Rossi Daniela


Il requisito dell’efficienza

Un algoritmo è efficiente quando porta al risultato nel modo più rapido e richiede di registrare il minor
numero di dati durante l’esecuzione.

Docente: Rossi Daniela


Esercizio 5 Il requisito dell’efficienza

Indovina il giorno di un compleanno conoscendo il mese

Docente: Rossi Daniela


Esercizio 5 Il requisito dell’efficienza

Indovina il giorno di un compleanno conoscendo il mese

Ricerca lineare: Ricerca binaria:

Comincio dal primo Inizio provando con il 15


giorno del mese e del mese.
tento di indovinare Se non è giusto, provo l’8
andando avanti un oppure il 22.
giorno alla volta. E così via, ogni volta
dimezzando il numero dei
Se il compleanno è giorni possibili.
alla fine del mese,
però, saranno In questo modo
necessari molti basteranno pochi
tentativi. tentativi.

Docente: Rossi Daniela


Pseudocodice
Per indicare le azioni, negli algoritmi analizzati finora abbiamo utilizzato la lingua
italiana, che è un linguaggio naturale.

Lo pseudolinguaggio è un linguaggio formale, ossia un linguaggio che utilizza


simboli ai quali corrisponde uno ed un solo significato in qualsiasi contesto.
La descrizione formale dell’algoritmo in pseudolinguaggio si dice pseudocodice.
L’attività di scrittura dello pseudocodice prende il nome di pseudocodifica

Non si tratta di un vero linguaggio di programmazione

Docente: Rossi Daniela


▪ Le parole chiave che aprono e chiudono il testo di un algoritmo sono

INIZIO e FINE

▪ Le istruzioni

leggi(lista di variabili) e scrivi(variabili e costanti)


vengono utilizzate per descrivere le operazioni di immissione (leggi) ed emissione
(scrivi) dei dati

▪ La richiesta all’utente per acquisire i dati necessari all’elaborazione può essere


indicata nel seguente modo:

chiedi(lista dei dati che servono)

▪ Le variabili, costanti e in generale le risorse utilizzate nell’algoritmo vengono


indicate da parole dette identificatori

Docente: Rossi Daniela


▪ Oltre a INIZIO e FINE sono utilizzate in pseudocodifica altre parole chiave:

A, ALLORA, ALTRIMENTI, ESEGUI, FINCHE’, FINE, INIZIO, RIPETI, SE,MENTRE

Docente: Rossi Daniela


Esempio di pseudocodice per il calcolo dell’area di un rettangolo

Dati di input: base e altezza del rettangolo


Dati di output: area del rettangolo

INIZIO
chiedi(base, altezza)
leggi(base, altezza)
area=base*altezza
scrivi(area)
FINE

Docente: Rossi Daniela


Esempio di pseudocodice per il calcolo della media di tre numeri

Dati di input: i tre numeri a,b,c


Dati di output: media
Variabili di lavoro: somma

INIZIO
chiedi(a, b, c)
leggi(a, b, c)
somma=a+b+c
media= somma/3
scrivi(media)
FINE

Docente: Rossi Daniela


ESERCIZI:
Scrivi lo pseudocodice dei seguenti programmi:

1. Date le età di tre persone, calcolare l’età media delle persone

2. Calcolare il doppio di un numero fornito da tastiera

3. Dato il lato, trovare il perimetro e l’area del quadrato

4. Calcolare la somma di due numeri forniti da tastiera e il doppio


del risultato ottenuto

Docente: Rossi Daniela


Diagrammi a blocchi
Uno strumento utile per progettare algoritmi è la loro rappresentazione come
schemi grafici mediante i diagrammi di flusso o diagrammi a blocchi (o flowchart)

I blocchi sono collegati da linee che terminano con una freccia e indicano il flusso di
controllo dell’algoritmo (cioè il percorso da eseguire nell’esecuzione delle
istruzioni)

Con questi blocchi elementari, opportunamente collegati da frecce, si può


rappresentare qualsiasi algoritmo

Docente: Rossi Daniela


Docente: Rossi Daniela
Per usare correttamente questi simboli occorre tenere presente che:

• All’inizio si può seguire una sola direzione e alla fine si può


giungere da un’unica strada

• Un blocco di azione, di input o di output ha una sola freccia che vi


arriva e una sola che parte da esso

• Solo il simbolo della condizione prevede due frecce in uscita, ma


ne ha sempre solo una in entrata

Docente: Rossi Daniela


Diagramma a blocchi dell’area di un rettangolo
INIZIO

Dati di input: base e altezza del rettangolo chiedi(″Inserisci


Dati di output: area del rettangolo base e altezza ″)

INIZIO leggi(base, altezza)


chiedi(″ Inserisci base e altezza ″)
leggi(base, altezza) area=base*altezza
area=base*altezza
scrivi(area)
FINE scrivi(area)

FINE

Docente: Rossi Daniela


Diagramma a blocchi per il calcolo della media di tre numeri

INIZIO
Dati di input: i tre numeri a,b,c
Dati di output: media chiedi(″Inserisci tre
Variabili di lavoro: somma numeri″)

INIZIO leggi(a, b, c)
chiedi(″Inserisci tre numeri″)
leggi(a, b, c) somma=a+b+c
somma=a+b+c
media= somma/3
scrivi(media) media=somma/3
FINE
scrivi(media)

FINE

Docente: Rossi Daniela


Variabili e costanti

Docente: Rossi Daniela


Variabili

Il concetto di variabile è molto importante in informatica. Possiamo pensare ad una variabile


come ad un contenitore aperto, all’interno del quale è possibile inserire dei valori e sostituirli
con altri dello stesso tipo.

I nomi delle variabili NON devono contenere spazi bianchi e non possono iniziare con una
cifra ma possono contenere cifre. (possiamo chiamare una variabile num1 e num_1 ma NON
1num)

Docente: Rossi Daniela


Variabili

Una variabile è caratterizzata da:

• Un identificatore (cioè un nome) che la distingue in modo univoco

• Un valore che il dato può assumere (per esempio 10)

• Un tipo, cioè l’insieme dei valori che il dato può assumere, per esempio valori interi, reali,
ecc. e non può cambiare nel corso del programma

Nome Valore Tipo

Docente: Rossi Daniela


Variabili

Per poter utilizzare una variabile in un programma bisogna assegnarle un valore. Questa operazione
è detta inizializzazione.

Possiamo inizializzare una variabile nel momento stesso in cui la dichiariamo oppure in un secondo
momento.

int num = 5;

Oppure

int num;
num= 5;

Docente: Rossi Daniela


Variabili

Il valore di una variabile può cambiare nel corso di un programma

int x = 3;
int y = 2;

x= x+y;
x = x*x;
y = y+x;

Alla fine quando varrà x ed y?

Docente: Rossi Daniela


Costanti

Penseremo alla costante come ad un «oggetto» a cui è associato un idetificatore e un valore


che NON può essere modificato, nel senso che potrà essere utilizzato ma non modificato,
rimanendo cosi fisso per tutta l’esecuzione del procedimento risolutivo.

Un esempio classico di costante: piGreco

Docente: Rossi Daniela


Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Le Funzioni

Le funzioni rappresentano i sottoprogrammi, cioè porzioni autonome di programmi


richiamabili

Docente: Rossi Daniela


La classificazione dei dati

Docente: Rossi Daniela


La risoluzione di un problema comporta l’individuazione di tre elementi ben
definiti ed indispensabili per una corretta definizione dell’algoritmo risolutivo:

• Dati iniziali
• Soluzione adottata
• Risultati finali

dati iniziali risultati finali


INPUT SOLUZIONE OUTPUT

Ne consegue che un esecutore che provvede a compiere le azioni richieste dalle istruzioni di
un algoritmo deve essere in grado di acquisire i dati iniziali, su cui attivare il processi di
elaborazione, e deve essere in grado di comunicare all’esterno i risultati

Docente: Rossi Daniela


I dati di input sono quelli che vengono forniti dall’esterno per poter risolvere il problema

I dati di output sono quelli che vengono comunicati all’esterno, come risultato della soluzione del
problema

Ci sono poi altre variabili, che non sono né di input né di output, ma che sono comunque
necessarie all’attività di elaborazione per ottenere risultati parziali, e che vengono chiamate
variabili di lavoro, temporanee o di calcolo.

Docente: Rossi Daniela


Date le misure di due cateti di un triangolo rettangolo, si vuole calcolare la misura del
perimetro del triangolo

Le misure dei due cateti devono essere fornite dall’esterno perché sono necessarie per il
calcolo richiesto.
L’ipotenusa è una variabile di lavoro perché non viene fornita dall’esterno, ma per calcolare il
perimetro serve la sua misura.
Il perimetro è il valore da comunicare come risultato finale ed è perciò di output

Dati input output lavoro


Cateto1 V
Cateto2 V
Ipotenusa V
Perimetro V

Docente: Rossi Daniela


Per utilizzare le variabili all’interno dei programmi che scriverete è necessario dichiararle
ossia indicare inizialmente il tipo di dato che la variabile può contenere.

In informatica un tipo di dato indica l’insieme di valori che una variabile può assumere.

Ad esempio dire che la variabile x è di tipo intero significa affermare che x può assumere
come valori solo numeri interi.

Docente: Rossi Daniela


Principali tipi di dato

Docente: Rossi Daniela


Per dichiarare una variabile occorre rispettare la seguente sintassi

<tipo> <variabile> ;

È possibile dichiarare più variabili all’interno di una stessa istruzione separandole da


una virgola ed anche assegnare un valore iniziale
Vediamo alcuni esempi:

Docente: Rossi Daniela


Docente: Rossi Daniela
Dichiarare le costanti

Con il qualificatore const è possibile definire costanti

Docente: Rossi Daniela


Gli operatori

Gli operatori possono essere di tre tipo: aritmetici, di relazione e logici

Operatori aritmetici
+ Addizione
- Sottrazione
* Moltiplicazione
/ Divisione

Operatori di relazione
= uguale
< minore
<= minore uguale
> maggiore
>= maggiore uguale
!= diverso
Docente: Rossi Daniela
Gli operatori

Gli operatori possono essere di tre tipo: aritmetici, di relazione e logici

Operatori logici

AND prodotto logico


OR somma logica
NOT negazione

Docente: Rossi Daniela


Le istruzioni di un algoritmo

Docente: Rossi Daniela


Le istruzioni di un algoritmo:
classificazione per tipo

Le istruzioni presenti in un algoritmo possono essere classificate in base al loro tipo o


comportamento. In generale, possono essere suddivise in istruzioni di inizio e fine, istruzioni
operative e istruzioni di controllo

Docente: Rossi Daniela


La programmazione strutturata
le strutture di controllo
Analizziamo un metodo di strutturazione degli algoritmi che ha l’obiettivo di
rendere più facile la loro costruzione, la lettura e la loro eventuale modifica.

Tale metodo di programmazione si basa sull’utilizzo di tre costrutti sintattici


fondamentali noti come STRUTTURE DI CONTROLLO:

• Sequenza
• Selezione
• Iterazione

La metodologia di programmazione che considera un algoritmo come un insieme


di blocchi di istruzioni, ognuno fornito di un solo ingresso e una sola uscita
organizzati tra loro secondo le strutture di controllo di sequenza, selezione e
iterazione, prende il nome di programmazione strutturata

Docente: Rossi Daniela


Nel 1966 due matematici italiani enunciarono il seguente teorema:

Secondo il teorema di Bohm-Jacopini qualunque algoritmo può


essere realizzato utilizzando i soli costrutti sintattici fondamentali:
sequenza, selezione e iterazione

Docente: Rossi Daniela


SEQUENZA

Docente: Rossi Daniela


La SEQUENZA

La sequenza è la più semplice fra le tre strutture di controllo fondamentali.


Si utilizza quando le azioni devono essere eseguite ordinatamente una dopo l’altra
senza alcuna possibilità di scelta

Le istruzioni vengono scritte una dopo l’altra, e verranno poi eseguite nell’ordine
con cui sono scritte.

In generale tale costrutto si rappresenta nel modo seguente

Docente: Rossi Daniela


La SEQUENZA

Esercizio:

Scambiare il contenuto di due variabili

Docente: Rossi Daniela


La SEQUENZA

Docente: Rossi Daniela


Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
Docente: Rossi Daniela
SELEZIONE

Docente: Rossi Daniela


La SELEZIONE

Questo costrutto permette di effettuare una scelta fra due possibili alternative.
Per effettuare una scelta, però, dobbiamo valutare una condizione.

Un esempio tratto dalla vita di tutti i giorni:

SE pioverà ALLORA prenderò l’autobus ALTRIMENTI farò una passeggiata

in termini più generali possiamo scrivere:


SE SI VERIFICA LA CONDIZIONE
ALLORA ESEGUI ISTRUZIONE 1
ALTRIMENTI ESEGUI ISTRUZIONE2

Docente: Rossi Daniela


La SELEZIONE
V F
condizione
SE (condizione)
ALLORA
B1 B1 B2
ALTRIMENTI
B2
FINESE

V F
condizione
SE (condizione)
ALLORA
B1 B1
FINESE

Docente: Rossi Daniela


La SELEZIONE

ESERCIZIO

Dato in input un numero intero N, comunicare se è positivo o negativo

Docente: Rossi Daniela


La SELEZIONE
INIZIO
INIZIO
LEGGI(N)
SE (N>=0) Leggi(N)
ALLORA
SCRIVI(«il numero è positivo»)
ALTRIMENTI V F
SCRIVI(«il numero è negativo») N>=0
FINESE
FINE «il numero è «il numero è
positivo» negativo»

FINE

Docente: Rossi Daniela


La SELEZIONE

ESERCIZIO

Dato in input un numero intero N, comunicare se è positivo, negativo o nullo

Docente: Rossi Daniela


La SELEZIONE

INIZIO
LEGGI(N)
SE (N>0)
ALLORA
SCRIVI(«il numero è positivo»)
ALTRIMENTI
SE (N<0)
ALLORA
SCRIVI(«il numero è negativo»)
ALTRIMENTI
SCRIVI(«il numero è nullo»)
FINESE
FINESE
FINE

Docente: Rossi Daniela


INIZIO

La SELEZIONE

Leggi(N)

V F
N>0

«il numero è
positivo» V F
N<0

«il numero è «il numero è


negativo» nullo»

FINE

Docente: Rossi Daniela


ESERCIZI: Scrivi lo pseudocodice ed il diagramma di flusso dei seguenti problemi

ESERCIZIO 1:
Scrivere un algoritmo che legge un voto scolastico e dice se tale voto è insufficiente o
sufficiente
ESERCIZIO 2:
La prima volta che l’uomo è andato sulla Luna è stato il 1969, creare un algoritmo che
chiede l’anno di nascita all’utente e gli risponde se è nato l’anno in cui l’uomo è andato
sulla Luna o quanti anni prima o quanti anni dopo.

Docente: Rossi Daniela


ESERCIZIO 1:

Docente: Rossi Daniela


ESERCIZIO 2:

Docente: Rossi Daniela


ITERAZIONE

Docente: Rossi Daniela


Iterazione

Pur avendo a disposizione strutture sequenziali e di selezione, rimangono molte le


situazioni «intrattabili» con tali strumenti.

Se avessimo dovuto fare la somma di 100 numeri utilizzando le strutture viste fino
ad ora avremmo utilizzato 100 variabili e le avremo sommate.
Non è la soluzione ottimale

Il costrutto iterazione o costrutto iterativo (ciclo) viene utilizzato quando


un’istruzione deve essere eseguita finché non si verifica una determinata
condizione.

Docente: Rossi Daniela


Iterazione

Nell’elaborazione ciclica sono spesso utilizzati i contatori o accumulatori

Per capire meglio a cosa serve vediamo questo esempio:

Pensiamo alle azioni svolte da un cassiere di un supermercato quando si presenta


un cliente con carrello pieno di merce.
Il cassiere effettua un’elaborazione ciclica sulla merce acquistata: ogni oggetto
viene esaminato per acquisirne il prezzo. Lo scopo dell’elaborazione è quello di
cumulare i prezzi dei prodotti per stabilire il totale.

Dal punto di vista informatico si tratta di utilizzare una variabile che viene
aggiornata per ogni prezzo acquisito: ogni nuovo prezzo acquisito non deve
sostituire il precedente ma aggiungersi ai prezzi già acquisiti.

Docente: Rossi Daniela


Iterazione

Tale variabile dovrà essere azzerata quando si passa ad un nuovo cliente.

IMPORTANTE
I contatori devono essere INIZIALIZZATI prima del loro utilizzo
l’aggiornamento del valore viene effettuato all’interno di un ciclo

Docente: Rossi Daniela


Iterazione PREcondizionale

Nella programmazione strutturata vengono utilizzati due costrutti iterativi, il


primo che vedremo è il costrutto precondizionale.
In questo caso il controllo della condizione viene effettuato prima di eseguire le
istruzioni che compongono il ciclo

INIZIO
MENTRE (condizione) F
condizione
ESEGUI
B1
V
FINEMENTRE
B1

Docente: Rossi Daniela


Iterazione PREcondizionale

F
condizione

INIZIO
MENTRE (condizione) V
ESEGUI
B1 B1
FINEMENTRE

Durante l’esecuzione di questo costrutto si valuta la Condizione.


Se è vera si esegue il blocco B1 e si ritorna a valutare la Condizione.
Questa esecuzione ciclica continua fino a quando la Condizione non risulta falsa e,
il tal caso, si passa a eseguire l’istruzione successiva al FINEMENTRE

Docente: Rossi Daniela


Iterazione PREcondizionale

Attenzione alla scelta della condizione di ingresso al ciclo. Se esiste un errore di


logica si corre il rischio che l’esecuzione «entri in LOOP» ossia che resti
intrappolata all’interno di un ciclo infinito

Docente: Rossi Daniela


ITERAZIONE PRE-CONDIZIONALE

ESERCIZIO

Dato in input N numeri interi, determini la somma

INIZIO
Conta  0
Somma  0
SCRIVI(″quanti numeri vuoi sommare?″)
LEGGI (N)
MENTRE (Conta < N)
ESEGUI
SCRIVI(″Inserisci un numero″)
LEGGI(Num)
Somma = Somma+Num
Conta  Conta+1
FINEMENTRE
SCRIVI(″La somma è″, Somma)
FINE
Docente: Rossi Daniela
INIZIO
ITERAZIONE PRE-CONDIZIONALE
scrivi(″quanti numeri vuoi
sommare? ″)
ESERCIZIO

Dato in input N numeri interi, determini la somma leggi(N)

Somma =0
INIZIO
Conta  0
Conta =0
Somma  0
SCRIVI(″quanti numeri vuoi sommare?″)
LEGGI (N) F
MENTRE (Conta < N) Conta<N
ESEGUI
SCRIVI(″Inserisci un numero″) V
LEGGI(Num) scrivi(″Inserisci un numero″)
Somma = Somma+Num Scrivi(Somma)
Conta  Conta+1
leggi(Num)
FINEMENTRE
SCRIVI(Somma) FINE
FINE Somma =Somma+Num

Conta = Conta +1

Docente: Rossi Daniela


Iterazione POST-condizionale

Il costrutto iterativo post-condizionale è un costrutto in cui il controllo della


condizione viene effettuato DOPO l’esecuzione delle istruzioni che compongono il
ciclo

INIZIO
B1
RIPETI
B1
FINCHE’(Condizione)
F
FINE condizione

Docente: Rossi Daniela


INIZIO
ITERAZIONE PRE-CONDIZIONALE
scrivi(″quanti numeri vuoi
sommare? ″)
ESERCIZIO
leggi(N)
Dato in input N numeri interi, determini la somma
Somma =0
INIZIO
Conta  0 Conta =0
Somma  0
SCRIVI(″quanti numeri vuoi sommare?″)
scrivi(″Inserisci un numero″)
LEGGI (N)
RIPETI
SCRIVI(″Inserisci un numero″) leggi(Num)
LEGGI(Num)
Somma = Somma+Num Somma =Somma+Num
Conta  Conta+1
FINCHE’(Conta>N) Conta = Conta +1
SCRIVI(Somma)
FINE F
Conta>N

V
Scrivi(Somma)

FINE
Docente: Rossi Daniela

Potrebbero piacerti anche