Il 0% ha trovato utile questo documento (0 voti)
17 visualizzazioni46 pagine

16 Flowchart

Caricato da

steveyen69
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)
17 visualizzazioni46 pagine

16 Flowchart

Caricato da

steveyen69
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/ 46

Fondamenti di Informatica

Algoritmi e Flowchart
Risoluzione di problemi
Uno degli scopi fondamentali dell’informatica è la risoluzione di problemi

Informalmente, per problema si intende un compito che si vuole far risolvere


automaticamente a un calcolatore

i problemi di interesse sono solitamente parametrici, nel senso


che dipendono da dati i cui valori non sono noti al momento in
cui si vuole affrontare e risolvere il problema
per risolvere un problema bisogna svolgere le seguenti attività

– comprendere il problema
– definire un procedimento risolutivo (algoritmo) per il problema
– implementare l’algoritmo in un linguaggio di programmazione (in C
definire una o più funzioni, in Java definire una o più classi)
2
Esempi di problemi da risolvere
• Da0 due numeri trovare il maggiore
• Da0 a e b, risolvere l'equazione ax+b=0
• Calcolare il massimo comun divisore fra due numeri da0.
• Dato un insieme di parole, meAerle in ordine alfabe0co.
• Dato un elenco di nomi e rela0vi numeri di telefono trovare il numero di telefono di
una determinata persona
• Dato l’archivio dell’anagrafe comunale, trovare tuD i nuclei familiari, compos0 da più
di 4 persone
• Dato l’archivio dei dipenden0 di un’azienda, calcolare lo s0pendio di ogni dipendente
dell’azienda.
• …..

La descrizione del problema non fornisce (in genere)


un metodo per calcolare il risultato.
3
Analisi e programmazione

Il problema deve essere formulato in modo opportuno, perché sia


possibile u:lizzare un elaboratore per la sua soluzione

Per analisi e programmazione si intende l’insieme delle a=vità


preliminari a?e a risolvere problemi u:lizzando un elaboratore,
dalla formulazione del problema fino alla predisposizione
dell’elaboratore
Scopo dell’analisi ð definire un algoritmo
Scopo della programmazione ð definire un programma

4
Le fasi del procedimento di analisi e
programmazione
Problema

Algoritmo Relazioni tra problema, analisi, algoritmo,


programmazione, programma, dati ed
elaborazione

Programma

Dati

Risultati
5
Algoritmo
Per risolvere un problema bisogna definire (ovvero, iden7ficare
o proge9are) un procedimento risolu/vo, ossia una
sequenza logica di istruzioni elementari (univocamente
interpretabili) che, eseguite secondo un ordine prestabilito,
perme9ono di arrivare ai risulta7 a par7re dai da7 del
problema.

Per algoritmo si intende una successione finita


di passi contenenti istruzioni che specificano le
operazioni da compiere per risolvere una classe
di problemi.
6
Algoritmo
un algoritmo deve essere espresso in termini delle istruzioni di
un esecutore automatico (calcolatore)

7
Algoritmo

Un algoritmo deve poter essere eseguito da chiunque, senza che


l’esecutore sia stato necessariamente coinvolto nell’analisi del
problema o nella descrizione dell’algoritmo

Gli algoritmi devono essere formalizza+ per mezzo di apposi9 linguaggi,


dota9 di stru:ure linguis9che che garan9scano precisione e sintesi

I linguaggi naturali non soddisfano ques9 requisi9, infa=...


…sono ambigui: la stessa parola può assumere significa9 diversi in contes9
differen9 (pesca è un fru:o o un’a=vità spor9va)
…sono ridondan+: lo stesso conce:o può essere espresso in mol9 modi
diversi, ad esempio “somma 2 a 3”, “calcola 2+3”, “esegui l’addizione tra 2
e 3”
8
Proprietà degli algoritmi
Realizzabilità: ogni operazione prevista dall'algoritmo deve essere
eseguibile con le risorse a disposizione

Non Ambiguità: ogni operazione deve essere univocamente


interpretabile dall'esecutore, cioè deve essere descritta in modo
preciso, ma sintetico per consentirne una interpretazione
univoca. Questo implica che i risultati ottenuti mediante un
algoritmo risolutivo di un problema non devono cambiare al
variare dell'esecutore (macchina/persona) dell'algoritmo
(carattere deterministico)

Finitezza: il numero totale di istruzioni da eseguire, per ogni insieme di


dati di ingresso, e' finito e le operazioni da esse specificate
devono essere eseguite un numero finito di volte.

9
Proprietà degli algoritmi
Pertanto l’algoritmo deve:

• essere costituito da operazioni appartenenti ad un determinato insieme di


operazioni fondamentali (sistema formale);

• fornire la soluzione ad una classe di problemi (generalità). Dato un insieme di


definizione, o dominio, dato un insieme di arrivo, o codominio, l’algoritmo
può operare su tutti i dati appartenenti al dominio per fornire una soluzione
all’interno del codominio.

Due qualità fondamentali di un algoritmo:

correttezza: l’algoritmo permette effettivamente di risolvere il problema

efficienza: l’esecuzione dell’algoritmo richiede un uso limitato di risorse (es.


tempo di esecuzione o memoria utilizzata)
10
Qualità degli algoritmi
Altre qualità degli algoritmi

leggibilità
§ essere facilmente comprensibile

modificabilità
§ essere facilmente modificabile, a fronte di (piccole) modifiche nelle
specifiche del problema risolto dall’algoritmo

parametricità
§ dipendere da da= i cui valori non sono no= al momento in cui si vuole
affrontare e risolvere il problema

riusabilità
11
Specifica di un problema
Un problema può essere descritto in modo formale mediante la

sua specifica, costituita da

insieme di ingresso o parametri — i parametri del problema (dati di ingresso)

pre-condizione — condizione relativa all’insieme di ingresso


descrive le proprietà che devono essere soddisfatte dai dati di ingresso (considerati nel
loro stato iniziale)

• insieme di uscita o risultati — le informazioni che devono essere calcolate nella


risoluzione del problema

• post-condizione — condizione relativa all’insieme di uscita


descrive le proprietà che devono essere soddisfatte dai dati di uscita

12
Algoritmo per il calcolo delle radici reali di
un’equazione di 2o grado
Data l’equazione

ax2+bx+c=0

quali sono i valori di x per cui l’equazione è


soddisfa:a?

13
Algoritmo per il calcolo delle radici reali di
un’equazione di 2o grado
Algoritmo:

1. Inizio dell’algoritmo.

2. Acquisire i coefficienti a,b,c.

3. Calcolare il valore D=b2-4ac.

4. Se D<0, allora non esistono radici reali; eseguire l’istruzione 8.

5. Se D=0, allora esistono due radici reali coincidenti, x1=x2=-b/2a; eseguire l’istruzione 7.

6. Se D>0, allora esistono due radici reali distinte, x1=(-b+√ D )/2a, x2=(-b-√ D )/2a; eseguire
l’istruzione 7.

7. Comunicare i valori x1 e x2.

8. Fine dell’algoritmo.
15
Esempio

Verifichiamo le proprietà dell’algoritmo.

Finitezza: ci sono 8 istruzioni. Tutte sono eseguite al più una volta.


Tutte impiegano un tempo finito per essere valutate o eseguite.

Generalità: in ingresso è ammissibile una qualsiasi terna di numeri


reali e l’uscita è una coppia di numeri reali (se esiste la soluzione).

Non ambiguità: le istruzioni sono ben definite: operazioni


aritmetiche o confronti fra reali.

16
Descrizione degli algoritmi

Le proposizioni usate da un linguaggio formale


descrivono due en6tà:

• le operazioni che devono essere eseguite (istruzioni);

• gli ogge= (da6) sui quali si devono eseguire le operazioni.

17
Costanti e variabili

I dati possono essere costanti o variabili.

I dati costanti sono dati che rimangono inalterati durante


l’esecuzione dell’algoritmo da quando ha inizio a
quando termina.

18
Istruzioni
Ma quali sono le istruzioni possibili in un calcolatore moderno?

Cosa riesce a fare direttamente?

Quali sono i blocchi elementari che possiamo comporre per


costruire espressioni sempre più complesse, programmi
sempre più sofisticati?

19
Istruzioni
Le istruzioni possono essere suddivise in 5 categorie:

• istruzioni operative;

• istruzioni di salto;

• istruzioni di inizio/fine esecuzione;

• istruzioni di ingresso/uscita;

• istruzioni condizionali, o di controllo.

20
Istruzioni operative

Istruzioni che producono un risultato se eseguite.

Ne fanno parte le operazioni aritme8che e le assegnazioni.

Esempi:
a = 5+3
x = 2
b = 3 % 2 (% è l’operatori di modulo, ovvero resto della divisione
intera).
D=b2-4ac.
21
Istruzioni di salto

• Istruzioni che alterano il normale ordine di esecuzione delle


istruzioni di un algoritmo, specificando esplicitamente quale sia
la successiva istruzione da eseguire.

• Si dis:nguono in istruzioni di salto condizionato e


incondizionato, a seconda che debba essere verificata una
condizione per poter a<uare il salto oppure no.

22
Istruzioni di inizio/fine

Indicano quale istruzione dell’algoritmo debba


essere eseguita inizialmente e quale determini
la fine dell’esecuzione.

23
Istruzioni di ingresso/uscita

Istruzioni che indicano una trasmissione di dati o messaggi fra


l’algoritmo e tutto ciò che è esterno all’algoritmo.

Tali istruzioni si dicono

• di ingresso o lettura quando l’algoritmo riceve dati dall’esterno;

• di uscita o scrittura quando i dati sono comunicati dall’algoritmo


all’esterno.

24
Istruzioni condizionali, o di controllo
Istruzioni che controllano il verificarsi di condizioni specificate e
che in base al risultato determinano quale istruzione eseguire.

Nota: si altera il flusso del programma in funzione della condizione


(se è vera o falsa).

Esempio: se … allora … altrimenti

25
Esempio

Algoritmo: Nell’algoritmo delle radici


n 1. Inizio dell’algoritmo.

n 2. Acquisire i coefficienti a,b,c. le istruzioni 1,8 sono di inizio/fine;


n 3. Calcolare il valore D=b2-4ac.
le istruzioni 2,7 sono di ingresso/uscita;
n 4. Se D<0, allora non esistono radici reali;
eseguire l’istruzione 8. l’istruzione 3 è operativa;
n 5. Se D=0, allora esistono due radici reali
coincidenti, x1=x2=-b/2a; eseguire (parte dell’) istruzione 4 è di salto;
l’istruzione 7.
le istruzioni 5,6 sono condizionali.
n 6. Se D>0, allora esistono due radici reali
distinte, x1=(-b+√ D )/2a, x2=(-b-√ D )/2a;
eseguire l’istruzione 7.

n 7. Comunicare all’esterno i valori x1 e x2.

n 8. Fine dell’algoritmo.

26
Esempio

Algoritmo: Nell’algoritmo delle radici


n 1. Inizio dell’algoritmo.

n 2. Acquisire i coefficienti a,b,c. le istruzioni 1,8 sono di inizio/fine;


n 3. Calcolare il valore D=b2-4ac.
le istruzioni 2,7 sono di ingresso/uscita;
n 4. Se D<0, allora non esistono radici reali;
eseguire l’istruzione 8. l’istruzione 3 è operativa;
n 5. Se D=0, allora esistono due radici reali
coincidenti, x1=x2=-b/2a; eseguire (parte dell’) istruzione 4 è di salto;
l’istruzione 7.
le istruzioni 5,6 sono condizionali.
n 6. Se D>0, allora esistono due radici reali
distinte, x1=(-b+√ D )/2a, x2=(-b-√ D )/2a;
eseguire l’istruzione 7.

n 7. Comunicare all’esterno i valori x1 e x2.

n 8. Fine dell’algoritmo.

27
Espressioni
Sequenze di variabili e costanti combinate fra loro mediante operatori (ad es,
operatori aritmetici: +, -, *, /);
ad esempio:
s + r * 5
A
100
Nella valutazione di una espressione, si sostituisce ad ogni variabile il suo valore attuale e
si eseguono le operazioni secondo un ordine prestabilito da regole di precedenza
(possono comparire parentesi).
A tutte le variabili che compaiono nell'espressione deve essere stato associato un valore
prima della valutazione dell'espressione.

Tipi di Espressioni:

aritmetiche: danno come risultato in valore arimetico (ad esempio, un intero, un


reale, etc.): +, -, *, /, ….

relazionali e logiche: danno come risultato vero o falso (>, <, =, ³28
, £, ¹)
Esempio

U)lizzate un’opportuna espressione per esprimere


ciascuna delle seguen) condizioni:

età compresa fra 18 e 60 anni;

altezza superiore a 1,90 m oppure peso superiore a 100Kg;

anno mul)plo di 4, ma non mul)plo di 100.

29
Esempio
Utilizzate un’opportuna espressione per esprimere ciascuna
delle seguenti condizioni:
età (E) compresa fra 18 e 60 anni
E>=18 AND E<=60
Altezza (A) superiore a 1,90 m oppure peso (P) superiore a 100Kg
A>190 OR P>100
Anno (Y) multiplo di 4, ma non multiplo di 100
Y%4==0 AND NOT(Y%100==0)

30
Rappresentazione degli algoritmi:
diagrammi di flusso o flowchart

E' un formalismo che consente di rappresentare graficamente gli algoritmi.

- un diagramma di flusso (o flowchart) descrive le azioni da eseguire ed il


loro ordine di esecuzione

- ogni azione elementare corrisponde ad un simbolo grafico (blocco) diverso


(sono convenzioni non universali)
- ogni blocco ha uno o più rami in ingresso ed un ramo in uscita (ad
esclusione del blocco di decisione che ne ha due); collegando tra loro i vari
blocchi attraverso i rami, si ottiene un diagramma di flusso

- un diagramma di flusso appare, quindi, come un insieme di blocchi di forme


diverse che contengono le istruzioni da eseguire, collegati fra loro da linee
orientate che specificano la sequenza in cui i blocchi devono essere eseguiti
(flusso del controllo di esecuzione o sequenza di computazione).
31
Blocchi

32
Istruzioni (blocchi) fondamentali
Inizio e fine di un algoritmo

Inizio e` il blocco da cui deve iniziare l'esecuzione (uno solo).

Il blocco fine fa terminare l'esecuzione dell'algoritmo (almeno uno).

Inizio Fine

33
Somma di due valori
forni/ dall’utente

34
Strutture di controllo
Mediante i blocchi fondamentali, è possibile costruire delle strutture
tipicamente utilizzate per il controllo del flusso di esecuzione dell’algoritmo:
selezione e iterazione

Selezione
Esprime la scelta tra due possibili azioni (o sequenze di azioni) mutuamente
esclusive.

36
Strutture di controllo
Iterazione

Esprime la ripetizione di una sequenza di istruzioni.

Nel caso piu` generale, costituita da:

• Inizializzazione: assegnazione dei valori iniziali alle variabili caratteristiche del


ciclo (viene eseguita una sola volta);

• Corpo: esecuzione delle istruzioni fondamentali del ciclo che devono essere
eseguite in modo ripetitivo;

• Modifica: modifica dei valori delle variabili che controllano l'esecuzione del ciclo
(eseguito ad ogni iterazione);

• Controllo: determina, in base al valore delle variabili che controllano


l'esecuzione del ciclo se il ciclo deve essere ripetuto o meno.

41
Iterazioni
Repeat-until While

42
Esecuzione di una stampa ripetuta 10 volte
(versione 1)
Esecuzione di una stampa ripetuta 10 volte
(versione 2)
Stampa dei primi 100
numeri naturali

47
Stampa dei primi N numeri
8/3/2018 naturali
naturali

start

leggi N

i=0

fine i<N

stampa i

i = i+1
Somma di N dati forniti
dall’utente

49
Somma di N dati forniti
dall’utente

50
Calcolo del fattoriale del
numero N

51

Potrebbero piacerti anche