Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO

Pagina creata da Pantaleo Germinario
 
CONTINUA A LEGGERE
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Dal problema al
programma
LE BASI DELLA PROGRAMMAZIONE
PROF. PANTALEO GERMINARIO
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Conoscere gli algoritmi e i linguaggi
I problemi e la loro soluzione

L’umanità, dai suoi albori, ha dovuto risolvere problemi di
molteplice natura per sopravvivere. La soluzione del
problema consiste nel cercare la soluzione che porta al
raggiungimento dell’obiettivo da raggiungere.

“Ogni problema ha tre soluzioni: la mia soluzione, la tua
soluzione e la soluzione giusta.” (Platone)

 PROF. PANTALEO GERMINARIO 2
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Conoscere gli algoritmi e i linguaggi
Dal punto di vista matematico e informatico si identifica con
la parola problema una questione (o quesito) che deve
essere risolta, della quale viene data una situazione iniziale
con dei dati noti e un obiettivo da raggiungere, che consiste
nella soluzione desiderata.

 Un problema è un quesito che chiede di trovare
 uno o più elementi ignoti (la soluzione), partendo
 dagli elementi noti da esso forniti.

 PROF. PANTALEO GERMINARIO 3
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Conoscere gli algoritmi e i linguaggi
La soluzione di un problema consiste nella definizione della
procedura ovvero le operazioni che devono essere eseguite
per raggiungere lo scopo desiderato.

Abbiamo quindi la necessità di identificare un metodo per la
soluzione dei problemi. Questo modo di procedere si
definisce: strategia risolutiva.

 PROF. PANTALEO GERMINARIO 4
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
La strategia risolutiva
Una strategia risolutiva è un insieme di passi da compiere
per giungere alla soluzione di un problema.

La soluzione o risultato finale è l’obiettivo che vogliamo
raggiungere.

 PROF. PANTALEO GERMINARIO 5
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
La strategia risolutiva
Una strategia risolutiva è un insieme di passi da compiere
per giungere alla soluzione di un problema.

 Analisi del L’identificazione dell’obiettivo da raggiungere e
 problema dello stato iniziale, ossia dell’insieme dei dati
 iniziali oggettivi e significativi dei quali si dispone

Progettazione della La specificazione delle azioni da intraprendere per
 risolvere il problema, ossia per trasformare i dati
strategia risolutiva
 iniziali in dati finali

 Verifica della Il raggiungimento dello stato finale della strategia
 risolutiva, consistente nel verificare che i risultati
 soluzione ottenuti siano rispondenti agli obiettivi iniziali

 PROF. PANTALEO GERMINARIO 6
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Un esempio di problema
 Un famoso esempio di problema da risolvere è quello del
"Contadino, la capra, il cavolo ed il lupo".

Problema
Sulla riva di un fiume ci sono un contadino, un lupo, una
capra e un cavolo che lo devono attraversare con una piccola
barca che consente di portare solo due “cose” alla volta.
Come può il contadino attraversare il fiume salvando “capra
e cavoli” sapendo che se vengono lasciati da soli il lupo con
la capra, oppure la capra con il cavolo, i primi divorano i
secondi?
 PROF. PANTALEO GERMINARIO 7
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Un esempio di problema

Analisi della situazione
 abbiamo un obiettivo (goal): traghettare un contadino e le
 “tre cose” che ha con sé da una riva del fiume all’altra;
 abbiamo un limite di cose che possiamo portare sulla
 barca (vincolo): due alla volta;
 dobbiamo stare attenti a cosa lasciamo incustodito sulla
 riva mentre il contadino sta remando (vincolo) in quanto:
  se rimane il lupo con la capra... quest’ultima viene mangiata;
  se rimane la capra con il cavolo... quest’ultimo viene mangiato

 PROF. PANTALEO GERMINARIO 8
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Un esempio di problema
La definizione della strategia risolutiva

Il nostro compito è quello di trovare la soluzione di questo
problema, che consiste nel “suggerire” al contadino “cosa
deve fare”, cioè che tipo di operazione deve eseguire (chi
portare sulla barca) e “come deve farla”, vale a dire in che
ordine. In altre parole, dobbiamo dargli le “istruzioni
risolutive” indicandogli la sequenza esatta.

 PROF. PANTALEO GERMINARIO 9
Dal problema al programma - LE BASI DELLA PROGRAMMAZIONE PROF. PANTALEO GERMINARIO
Un esempio di problema

 PROF. PANTALEO GERMINARIO 10
Algoritmo risolutivo

La soluzione è la tecnica (o l’idea) che consente di
 risolvere il problema e nell’informatica prende il
 nome di algoritmo risolutivo

 PROF. PANTALEO GERMINARIO 11
Algoritmo risolutivo
Possiamo dare la soluzione in due modi possibili:
 Sotto forma di istruzioni scritte in linguaggio naturale
 In formato grafico
Scegliamo noi il formato più idoneo al nostro interlocutore:
“chi deve eseguire” le istruzioni (esecutore) deve essere in
grado di comprenderle.
La soluzione viene descritta indicando l’insieme delle
operazioni (passi) che devono essere effettuate indicandole
nell’ordine in cui devono essere eseguite (sequenza di
operazioni).

 PROF. PANTALEO GERMINARIO 12
Il concetto di Algoritmo

Nel processo di soluzione di un problema, è necessario

analizzare dettagliatamente la situazione e individuare la

strategia risolutiva, cioè “trovare” l’idea che risolve la

situazione.

 PROF. PANTALEO GERMINARIO 13
Il concetto di Algoritmo

Quando la strategia risolutiva è stata definita, quindi quando

si è “scoperto” il criterio risolutivo del problema, bisogna

“scrivere” le singole istruzioni che l’esecutore deve

compiere, in sequenza, una dopo l’altra.

 L’insieme delle operazioni che permettono di risolvere un
 problema prende il nome di algoritmo

 PROF. PANTALEO GERMINARIO 14
Caratteristiche di un algoritmo
 generalità, deve risolvere tutti i problemi di una certa
 classe: per esempio l’algoritmo che effettua la somma di
 due numeri deve portare al risultato corretto
 indipendentemente dal valore dei due numeri;
 finitezza: deve essere composto da un numero finito di
 istruzioni ordinate e deve terminare la sua elaborazione in
 un numero finito di passi in un tempo finito;
 realizzabilità: l’algoritmo deve essere comprensibile e
 realizzabile da chi lo deve eseguire, cioè deve essere
 molto dettagliato e composto di istruzioni molto
 elementari non ulteriormente scomponibili;

 PROF. PANTALEO GERMINARIO 15
Caratteristiche di un algoritmo
 non ambiguità: l’esecutore deve interpretare in modo
 univoco le istruzioni;
 completezza: devono essere previste tutte le possibilità
 che possono verificarsi durante l’esecuzione e per ognuna
 devono essere definite le azioni da svolgere;
 riproducibilità: ogni volta che viene eseguito l’algoritmo
 con gli stessi dati di partenza devono condurre agli stessi
 risultati (determinismo).

 PROF. PANTALEO GERMINARIO 16
Algoritmi ed esecutori
I principali esecutori di algoritmi sono le macchine:
una macchina “non è intelligente”, ed è capace solo di
eseguire istruzioni molto elementari e senza alcuna capacità
critica o di ragionamento autonomo, limitandosi a svolgere
automaticamente dei compiti ripetitivi, sulla base delle
istruzioni ricevute.
Le macchine sono istruite attraverso un procedimento che
prende il nome di programmazione: “trascrivere” l’algoritmo
mediante un linguaggio particolare che la macchina “è in
grado di capire” e di inserirlo al suo interno in modo che lo
possa eseguire sotto forma di programma.

 PROF. PANTALEO GERMINARIO 17
Esecutori e sistemi di elaborazione
 Un problema è un quesito che chiede di trovare uno o
 più elementi ignoti (la soluzione), partendo dagli
 elementi noti da esso forniti.
I dati forniti dall’utente alla macchina (gli elementi noti) per
essere elaborati si chiamano dati in ingresso (o in input). La
macchina esegue il programma, che effettua calcoli, e
visualizza i risultati all’utente sul display, cioè “ritorna” un
risultato in uscita, cioè in output.

 INPUT SISTEMA DI OUTPUT
 ELABORAZIONE

 PROF. PANTALEO GERMINARIO 18
Codificare gli algoritmi con i Flow Chart
Punto di partenza:

 ALGORITMO: insieme delle operazioni che permettono di
 risolvere un problema (termine derivato dal nome del
 matematico Al-Khuwarizmi, vissuto nel IX secolo, ed è
 quindi un concetto che è stato sempre usato in
 matematica come sinonimo di metodo di soluzione di un
 problema generale).

 PROF. PANTALEO GERMINARIO 19
Codificare gli algoritmi con i Flow Chart
Punto di partenza:

 Abbiamo la necessità di istruire le macchine (esecutore)
 attraverso un procedimento che prende il nome di
 programmazione: “trascrivere” l’algoritmo mediante un
 linguaggio particolare che la macchina “è in grado di
 capire” e di inserirlo al suo interno in modo che lo possa
 eseguire sotto forma di programma.

 PROF. PANTALEO GERMINARIO 20
Linguaggi per l’uomo
In funzione della natura dell’esecutore è necessario
individuare il linguaggio adeguato a descrivere l’algoritmo.

Per gli esecutori umani abbiamo due alternative:

  il linguaggio naturale

  la rappresentazione grafica

La descrizione di un algoritmo in linguaggio naturale prende
il nome di pseudocodifica mentre la descrizione grafica di un
algoritmo viene realizzata tramite i flow-chart.

 PROF. PANTALEO GERMINARIO 21
I diagrammi a blocchi o flow-chart
Esistono diversi modi per scrivere un algoritmo: il più
semplice, e anche il più diffuso, è quello che utilizza i
diagrammi a blocchi (o flow-chart, in italiano “diagrammi di
flusso”): si tratta di una rappresentazione grafica che
consente all’esecutore umano di seguire il flusso della
esecuzione delle istruzioni.

 PROF. PANTALEO GERMINARIO 22
I diagrammi a blocchi o flow chart
I flow-chart sono formati da SIMBOLI di forma diversa,
ciascuno con il proprio significato, e da un testo contenuto
all’interno di ciascun simbolo.

I simboli sono uniti da LINEE CON FRECCE che rappresentano
il flusso delle operazioni.

 PROF. PANTALEO GERMINARIO 23
I simboli grafici
 Questi due simboli indicano
 INIZIO /
 BEGIN il punto di partenza e di
 terminazione dell’algoritmo.

 FINE / END

 Questo simbolo indica una
 operazione di Input o di
 Output

 PROF. PANTALEO GERMINARIO 24
I simboli grafici

 Questo simbolo indica
 l’elaborazione e contiene
 l’istruzione da eseguire

 Questo simbolo indica un
 blocco di decisione (detto
 F CONDIZI V
 istruzione condizionale) ed è
 ONE
 utilizzato per stabilire se una
 proposizione (condizione) è
 vera (V) o falsa (F)

 PROF. PANTALEO GERMINARIO 25
I simboli grafici
I simboli sono uniti da frecce che indicano il verso di
navigazione del flusso. Nel flusso è possibile inserire dei nodi
di congiunzione, che indicano un punto in cui due percorsi
alternativi si ricongiungono per poi proseguire insieme per il
resto dell’algoritmo. Per questi deve essere osservata la
seguente regola:

 PROF. PANTALEO GERMINARIO 26
Esempio di algoritmo
 Problema: calcolare l’area di
 un cerchio

 Algoritmo:
 1. Inserisci il raggio
 2. calcola l’area
 (= ∗ raggio2 )
 3. visualizza il risultato

 PROF. PANTALEO GERMINARIO 27
Esempio di algoritmo
 Problema: calcolare l’area di
 un cerchio
 Algoritmo:
 1. Inserisci il raggio
 2. se il raggio è = 0
 2.1 allora l’area = 0
 2.2 altrimenti calcola l’area
 (= ∗ raggio2 )
 3. visualizza il risultato

 PROF. PANTALEO GERMINARIO 28
Considerazioni sull’algoritmo
Questo esempio ci consente di fare alcune riflessioni.
 L’algoritmo è generico, può essere utilizzato per il calcolo
 dell'area di qualsiasi cerchio.
 La sequenza delle istruzioni è ordinata, cioè esiste un ordine
 preciso in base al quale vengono eseguite le istruzioni, che non
 possono essere scambiate di posto tra loro.
 Il numero di operazioni è finito.
 Ogni operazione è chiara e non genera errori di comprensione.
 È presente un solo inizio e una fine.
 I risultati generati saranno gli stessi tutte le volte che
 l’algoritmo viene eseguito (determinismo), anche se dovesse
 essere utilizzato un elaboratore diverso

 PROF. PANTALEO GERMINARIO 29
La programmazione strutturata
La programmazione strutturata è una metodologia di
programmazione basata su

  codifica strutturata,

  progettazione top-down

  modularità

 PROF. PANTALEO GERMINARIO 30
La codifica strutturata
Nei primi linguaggi di programmazione l'istruzione di salto
incondizionato (GoTo) rendeva difficoltosa l'interpretazione
del codice sorgente da parte dei programmatori

 PROF. PANTALEO GERMINARIO 31
La codifica strutturata
Per risolvere il problema negli anni '60 i programmatori si
accorsero che qualsiasi istruzione goto poteva essere
sostituita con una struttura sequenziale, condizionale,
iterativa.

 PROF. PANTALEO GERMINARIO 32
Il teorema di Böhm-Jacopini
Nel 1966 due matematici italiani Corrado Böhm e Giuseppe
Jacopini hanno formulato uno dei più importanti teoremi
dell’informatica.
Quesito: «Quali algoritmi sono codificabili con i tre costrutti
sequenza, selezione e iterazione?».
Risposta: «Con i tre costrutti fondamentali è possibile
codificare tutti gli algoritmi».
Questo teorema esclude dalla programmazione strutturata
l’istruzione di salto (GOTO) considerandola la principale
causa del codice-spaghetti, cioè codice scritto in modo tanto
ingarbugliato da non poter essere compreso neanche dallo
stesso programmatore che lo ha scritto!!

 PROF. PANTALEO GERMINARIO 33
Struttura di Iterazione
La struttura di iterazione è utile quando si deve eseguire un
blocco di istruzioni finché non si verifica una determinata
condizione.

Esempio:

 costruire un algoritmo che dati in input 5 numeri
 ne determini la somma

 PROF. PANTALEO GERMINARIO 34
Struttura di Iterazione INIZIO
 INIZIO
Struttura a sequenza Struttura ad SOMMA
 Iterazione
 0
 LEGGI N1
 CONT  0
 LEGGI N2

 LEGGI N3 LEGGI N

 SOMMA  SOMMA + N
 LEGGI N4

 LEGGI N5 CONT  CONT+1

 CALCOLA LA SOMMA V
 CONT = 5
 MOSTRA IL F
 RISULTATO MOSTRA IL
 RISULTATO
 FINE
 FINE

 PROF. PANTALEO GERMINARIO 35
Struttura di Iterazione post-condizionale
La condizione è un’espressione che rappresenta un valore
Vero o Falso.
 Il ciclo viene ripetuto finché
 l’espressione non diventa
 vera.
 Le istruzioni sono eseguite
 almeno una volta.
 Nel gergo informatico questa
 iterazione prende il nome di
 repeat … until

 PROF. PANTALEO GERMINARIO 36
Struttura di Iterazione post-condizionale
La condizione è un’espressione che rappresenta un valore
Vero o Falso.
 Il ciclo viene ripetuto
 finché l’espressione non
 diventa falsa.
 Le istruzioni potrebbero
 non essere
 Nel gergo informatico
 questa iterazione prende il
 nome di While… .

 PROF. PANTALEO GERMINARIO 37
La programmazione strutturata
La programmazione strutturata è una metodologia di
programmazione basata su

  codifica strutturata,

  progettazione top-down

  modularità

 PROF. PANTALEO GERMINARIO 38
La progettazione top-down
L'approccio Top-Down è un approccio progettuale che
caratterizza la programmazione strutturata (e non solo)
perché migliora ulteriormente la leggibilità degli algoritmi (e
del codice sorgente).

Consiste nel realizzare prima il progetto in via generale (Top)
e completare i dettagli (Down) successivamente.

Esiste anche l’approccio Bottom-Up che è praticamente
inverso al Top-Down. In questo caso si progettano prima i
processi di dettaglio e dopo i processi di livello superiore.

 PROF. PANTALEO GERMINARIO 39
La modularità
La programmazione strutturata è caratterizzata anche dalla
modularità del progetto.
Cos'è un modulo?
La progettazione modulare consente di suddividere il
problema principale in tanti sotto problemi.
In particolare un modulo è una processo che svolge un
compito preciso.
Ad esempio, l'ordinamento dei dati in ordine crescente o
decrescente.
Ogni modulo può essere utilizzato da un altro modulo del
progetto.

 PROF. PANTALEO GERMINARIO 40
La modularità: punti cardine
 Suddivisione del programma in singoli moduli,
 indipendenza dei moduli tra loro,
 facile testabilità dei moduli come entità isolate,
 dichiarazione esplicita e semplificazione delle interfacce
 mediante le quali i moduli comunicano tra loro.
I principali vantaggi della programmazione modulare sono:
 riutilizzabilità dei moduli,
 progettazione separata (importante nell’ambito di un
 team di lavoro).

 PROF. PANTALEO GERMINARIO 41
Le variabili e le costanti
Le Variabili
Negli algoritmi precedenti, ci sono blocchi
per comunicare con l’utente, che LEGGI N1
rappresentano le istruzioni con le quali
avviene lo scambio di dati (in questo caso
di numeri) necessari per produrre i risultati.
In tutti i linguaggi di programmazione,
particolare attenzione è dedicata alle
operazioni che permettono di MOSTRA IL
 RISULTATO
memorizzare le informazioni, in quanto
i dati sono “la linfa vitale” dell’algoritmo:
senza dati non può esistere l’elaborazione.

 PROF. PANTALEO GERMINARIO 42
Le variabili e le costanti
Vengono messe a disposizione del programmatore istruzioni
necessarie per definire i “contenitori dei dati” e per
effettuare operazioni su di essi: questi “contenitori”, chiamati
variabili, sono delle aree (di memoria RAM) dove vengono
“depositati” i dati durante le elaborazioni.

Il programmatore definisce per ciascuna di esse un nome
(identificatore), in modo da poterle distinguere e poterle
utilizzare elle istruzioni di elaborazione.

 PROF. PANTALEO GERMINARIO 43
Regole per la definizione delle variabili
 Il nome della variabile, il suo identificatore, deve essere
 univoco.
 L’identificatore deve essere parlante: se devo
 memorizzare il peso di un alunno è preferibile utilizzare
 chiamare la variabile peso piuttosto che A o pippo in
 quanto in seguito non è facile da ricordare.
 Il nome delle variabili non può contenere spazi o lettere
 accentate: per esempio se devo definire una variabile che
 contenga l’età di una persona posso usare identificativi
 come eta_persona, oppure etaPersona.

 PROF. PANTALEO GERMINARIO 44
Le costanti
Oltre alle necessità di memorizzare i dati che vengono
elaborati nel corso dell’esecuzione del programma, esistono
anche delle situazioni in cui alcune variabili contengono dati
che “non devono essere variati” e si mantengono uguali per
tutta l’esecuzione del programma: questi dati prendono il
nome di costanti.

Per evitare di confondere le costanti dalle variabili si utilizza
l’accorgimento di utilizzare un identificatore con lettere
maiuscole. Per esempio: NUMERO_DI_CICLI

 PROF. PANTALEO GERMINARIO 45
Rappresentazione di variabili e costanti
Variabili e costanti, quindi, sono utilizzati per rappresentare
dati, i quali all’interno dell’algoritmo sono classificati sulla
base del loro aspetto funzionale:
dati di input: sono quelli che vengono forniti dall’esterno e
servono per la risoluzione del problema;
dati di output: sono quelli che vengono comunicati
all’esterno come soluzione del problema;
dati di lavoro (o dati intermedi): sono quelli che vengono
utilizzati durante l’esecuzione del processo risolutivo.

 PROF. PANTALEO GERMINARIO 46
Espressioni e loro valutazione
Una espressione è un costrutto che combina uno o più valori (ad
esempio variabili e/o costanti), utilizzando operatori.

Le operazioni sono interpretate (valutate) secondo particolari
regole di precedenza e di associazione, producendo un valore.
L’ordine di precedenza tra operatori può normalmente essere
modificato mediante l’utilizzo di parentesi.
Ad esempio questa è una espressione:
 Area = Base * Altezza / 3
In questa espressione:
  Area, Base e Altezza 3 sono operandi;
  * e / sono operatori.

 PROF. PANTALEO GERMINARIO 47
Espressioni e loro valutazione
Nel processo di valutazione si stabilisce dapprima l’ordine di
esecuzione dei vari operatori, cioè in quale ordine gli
operatori presenti devono essere applicati agli operandi
dell’espressione, e poi si eseguono le operazioni.

Si parla di precedenza degli operatori intendendo che ogni
operatore ha la sua priorità e, quindi, può avere o meno
precedenza rispetto a un altro operatore.

 PROF. PANTALEO GERMINARIO 48
La selezione multipla
Per risolvere i problemi in cui si opera una scelta tra più di due
alternative, in dipendenza del valore assunto da una variabile, è
molto utile utilizzare il costrutto di selezione multipla.

 SELETTOR
 E
 Valore 1 Valore 2 Valore 3 Altro valore

 AZIONE VALORE 1 AZIONE VALORE 2 AZIONE VALORE 3 ALTRIMENTI

 è il nome della variabile il cui contenuto discrimina la
scelta del percorso e sono i possibili valori della
variabile o, se nessun valore è verificato, si segue il percorso
altrimenti (opzionale).

 PROF. PANTALEO GERMINARIO 49
La selezione multipla
Altra modalità di rappresentazione:

 PROF. PANTALEO GERMINARIO 50
La selezione multipla
Esempio:

 PROF. PANTALEO GERMINARIO 51
L’algebra booleana nella progr. strutturata
All’interno di un costrutto di selezione l’esecutore deve
stabilire con esattezza se una condizione risulta vera o falsa e
spesso si ritrova davanti a una condizione articolata con
operatori logici il cui valore finale è determinato dalle regole
dell’algebra di Boole.
Per esempio:

 PROF. PANTALEO GERMINARIO 52
L’algebra booleana nella progr. strutturata
Una proposizione è un costrutto linguistico autonomo di
senso compiuto, composto per lo meno da un soggetto e da
un predicato.

Un enunciato è una particolare proposizione che può
assumere solo due stati possibili (Vero/Falso, V/F). La verità o
falsità di un enunciato sono i valori di verità dell’enunciato.

Gli enunciati per i quali si può immediatamente affermare se
sono veri o falsi prendono il nome di enunciati semplici (o
atomici).

 PROF. PANTALEO GERMINARIO 53
L’algebra booleana nella progr. strutturata
Per esempio, consideriamo le tre frasi seguenti:
  “Ora il sole splende”
  “Londra è la capitale d’Italia”
  “4 è un numero pari”.
Queste tre frasi sono enunciati:
  il primo ha valore Vero se ora il sole effettivamente
 splende e valore Falso in caso contrario;
  il secondo ha valore Falso;
  il terzo ha valore Vero.
È facile intuire che un enunciato può essere esclusivamente
vero o falso, mai entrambi.

 PROF. PANTALEO GERMINARIO 54
L’algebra booleana nella progr. strutturata
Una combinazione di enunciati legati dagli operatori, detti
connettivi logici (AND, OR, NOT,…), prende il nome di
enunciato composto (o molecolare).

Valutare gli enunciati composti significa associare a ognuno il
valore Vero o Falso, partendo dall’analisi degli enunciati
semplici che li compongono e applicando le regole
dell’algebra di Boole.

 PROF. PANTALEO GERMINARIO 55
L’algebra booleana nella progr. strutturata
Nell’ambito della logica booleana è possibile usare gli
operatori relazionali (=, ≠ , , ≤, ≥).

 PROF. PANTALEO GERMINARIO 56
Il costrutto iterativo definito
Nei costrutti iterativi pre o post condizionali l’iterazione
dipendeva da una condizione che cambiava nel ciclo. Queste
iterazioni prendono il nome di iterazioni indefinite.
I costrutti iterativi definiti sono iterazioni in cui il numero di
cicli è definito a priori e prendono il nome di iterazioni
definite.
La struttura iterativa definita (chiamata anche iterativa
enumerativa) è un costrutto iterativo derivato da quello
precondizionale.

 PROF. PANTALEO GERMINARIO 57
Il costrutto iterativo definito
Permette di ripetere un blocco di istruzioni non in base al
valore di verità di una condizione, ma in base al numero di
volte che si vuole ripetere il blocco.

In questo particolare costrutto
iterativo precondizionale la
condizione di arresto è indicata
dal valore massimo che può
raggiungere una variabile,
denominata indice, utilizzata
come contatore.

 PROF. PANTALEO GERMINARIO 58
Il costrutto iterativo definito
In questa struttura l’, che serve da controllo per la
ripetizione, assume inizialmente il valore indicato nella
operazione di assegnazione da . Una volta entrati nel
ciclo si procede con l’esecuzione del blocco di istruzioni
interne al ciclo.
L’esecuzione di questo blocco viene ripetuta e a ogni
iterazione viene incrementato il valore dell’. Il ciclo
continua a essere eseguito fintantoché l’ si mantiene
minore o uguale al valore indicato nella espressione
condizionale.

 indice
Il costrutto iterativo definito
Nella rappresentazione mediante pseudocodifica,
l’iterazione definita è rappresentata da questa sequenza:

 PER indice
Considerazioni sull’Indice
1. La variabile indice del ciclo iterativo non necessita
 dell’inizializzazione.
2. La variabile indice può anche decrementare il valore
 anziché incrementarlo.

3. È possibile stabilire il valore dell’incremento o
 decremento dell’, in questo caso il cambio del
 valore dell’indice dipende dal valore del passo indicato.

 PROF. PANTALEO GERMINARIO 61
Esempio di algoritmo con ciclo iterativo
Problema: dati in input 20 numeri,
 stabilire chi è il numero più
 grande e mostrarlo in output.
Analisi: si devono acquisire 20 numeri
 dall’utente, utilizzando una
 variabile temporanea Max che
 si inizializza a 0, si legge un
 numero e si confronta con il Max.
 Se il numero è > Max, allora si
 aggiorna il valore di Max.
 Al termine del ciclo si mostra
 il valore di Max.

 PROF. PANTALEO GERMINARIO 62
Confronto tra tipologie di iterazioni
Sfruttando un esempio di pseudocodifica si può osservare le
differenze tra i due tipi di costrutti iterativi.

 PROF. PANTALEO GERMINARIO 63
Considerazioni sulla condizioni di ciclo
La condizione nel ciclo determina il numero di volte in cui
sarà eseguito il blocco di istruzioni all’interno.
Come abbiamo già visto questa si esprime come segue ed
indica il valore massimo che la variabile indice può
assumere.

 indice
Considerazioni sulla condizioni di ciclo
L’utilizzo di condizioni strutturate presuppone che si utilizzi
una variabile all’interno del ciclo che contribuisca a
determinare il numero di iterazioni. In questo caso la
variabile assume il ruolo di variabile di escape, mentre la
condizione in cui è testata si può chiamare condizione di
escape.

Esempio di cicli con condizione di escape strutturata:
 PER index=1; index
Considerazioni sulla condizioni di ciclo
Come detto in precedenza, la condizione di escape può
essere strutturata ed il suo valore dipende dalla
combinazione della variabile indice e da un confronto logico
più o meno strutturato.

Per esempio: Acquisire 20 numeri e calcolare la somma e la
media di questi ma ci si deve fermare se l’utente inserisce un
valore negativo. In questo caso la condizione di fine ciclo è:
 Index=0; Index=0; index++;

Dove numLetto è il numero letto in input nel ciclo iterativo.

 PROF. PANTALEO GERMINARIO 66
Puoi anche leggere