Sistemi di Elaborazione delle Informazioni

G. Ascia
Sistemi di Elaborazione delle
Informazioni
Algoritmi e Programmi
1
Risoluzione di un problema
G. Ascia
„ Il procedimento di soluzione di un problema dovrebbe
essere caratterizzato da:
Î analisi del problema e identificazione di una soluzione
da parte nostra;
Î descrizione della soluzione per l’esecutore;
Î interpretazione della soluzione da parte dell’esecutore;
Î attuazione del metodo risolutivo da parte dell’esecutore;
2
Fasi di risoluzione di un problema
G. Ascia
Problema
Analisi
Soggetto 1
Soluzione
Stesura di una
descrizione
Descrizione
Interpretazione
Soggetto 2
Descrizione
interpretata
Esecuzione
Soluzione
3
Esempi di soluzione di un problema
„ Ricetta per cucinare gli spaghetti
G. Ascia
ÎMetti l’acqua nella pentola
ÎFai bollire l’acqua
ÎMetti la pasta nell’acqua
ÎAggiungi un pò di sale
ÎAttendi 6 minuti
ÎScola la pasta
4
Esempi di soluzioni
G. Ascia
„ Ricerca utente in un elenco telefonico
ÎDati
9 Un insieme ordinato di coppie <nome, numero>
9 Un nome X da ricercare
Î1) Leggi la prima coppia <nome, numero>
Î2) Se non hai oltrepassato l'ultima coppia Allora:
9 Se nome = X allora il numero di telefono di X è quello letto;
9 Altrimenti leggi la prossima coppia e vai al passo 2)
ÎAltrimenti
9 Il nome X cercato non è nell'elenco
5
Proprità della soluzione
G. Ascia
„ La soluzione deve:
Îessere descritta in una forma interpretabile dall’esecutore;
Îspecificare l’esecuzione di azioni che egli è effettivamente
in grado di ottenere.
„ Ogni esecutore è caratterizzabile in base alle sue capacità
di :
Î interpretazione (linguaggio);
Î esecuzione (istruzioni che è in grado di eseguire).
6
Algoritmo
G. Ascia
„ Un algoritmo è un metodo per la soluzione di un problema
adatto ad essere implementato sotto forma di programma
„ Un algoritmo si puo` definire come un procedimento che
consente di ottenere un risultato atteso eseguendo, in un
determinato ordine, un insieme di passi semplici
corrispondenti ad azioni scelte solitamente da un insieme
finito
7
Proprietà degli Algoritmi
„ L'algoritmo è caratterizzato da
G. Ascia
ÎFinitezza: Composto da un numero finito di passi
elementari. Le operazioni sono eseguite un numero
finito di volte
ÎNon ambiguità: I risultati non variano in funzione della
macchina/persona che esegue l'algoritmo
(deterministico)
ÎRealizzabilità: Deve essere eseguibile con le risorse a
disposizione
8
Esempi di Algoritmi
„ Verifica se un numero è pari o dispari
G. Ascia
ÎPrendi il numero
ÎCalcola il resto della divisione intera del numero per 2
ÎSe il resto è zero
9 Allora il numero è pari
9 Altrimenti il numero è dispari
9
Algoritmi e programmi
G. Ascia
Un linguaggio formale definito per un computer si chiama
Linguaggio di Programmazione
Un Algoritmo espresso attraverso un Linguaggio di
Programmazione si chiama Programma
10
Processo di sviluppo di un programma
G. Ascia
Problema
Analisi
Soluzione
informale
Formalizzazione
Sistema Informatico:
Strumenti di supporto evoluti (CASE)
Soluzione
Formale
Sistema Informatico:
Ambiente di sviluppo tradizionale
Algoritmo
Programmazione
Programma
(alto livello)
Traduzione
Esecutore del
Linguaggio Macchina
(HW)
Esecutore del
Linguaggio
ad alto livello
Programma
(macchina)
Esecuzione
11
Rappresentare un Algoritmo
„ Rappresentazione grafica
G. Ascia
ÎDiagramma di flusso (noto anche come
diagramma a blocchi o flow-chart)
„ Rappresentazione testuale
ÎNotazione Lineare Strutturata (o
pseudocode)
12
Operazioni di Base
G. Ascia
„ Le operazioni primarie sono
ÎTrasferimento di informazioni (istruzioni di I/O)
9 Lettura dati, scrittura risultati, visualizzazione dati intermedi
ÎEsecuzione di calcoli (valutazione espressioni)
ÎIstruzioni di assegnamento
ÎStrutture di controllo (che modificano il flusso sequenziale di
esecuzione delle operazioni)
13
Simboli Convenzionali
G. Ascia
ingresso/uscita
inizializzazione
documento
Elaborazione
inizio/fine
input manuale
elab. predefinita
connessioni
disco
decisione
mem. sequenziale
14
Istruzioni di I/O
G. Ascia
„ Lettura di dati in ingresso (input)
„ Scrittura dei risultati in uscita (output)
Diagramma a blocchi
Pseudocodice
leggi A
leggi A
scrivi B
scrivi B
15
Istruzione di Assegnamento
G. Ascia
„ Concetto di variabile
ÎIdentificata da un’etichetta/identificatore simbolico
ÎPuò essere comodo pensare alla variabile come ad un
contenitore in cui possiamo memorizzare o reperire dei
dati utilizzati durante il calcolo
ÎL’istruzione di assegnamento permette di assegnare un
valore ad una variabile
A=5
Alla variabile A
viene assegnato il
valore 5
16
Istruzione di Assegnamento
G. Ascia
„ Inizializzazione
Î All’inizio di un algoritmo una variabile non ha alcun valore
Î Non ha quindi senso utilizzarla in una espressione (è un errore!)
Î Essa deve essere inizializzata
9 O esplicitamente mediante un assegnamento
9 Oppure mediante una operazione di lettura
START
START
B=0
leggi B
A=B+3
A=B+3
CORRETTO
CORRETTO
START
A=B+3
ERRORE
B non è inizializzata
17
Istruzione di Assegnamento
G. Ascia
„ E’ stato usato il simbolo = per indicare l’istruzione di assegnamento
„ Alcuni testi/autori indicano invece il simbolo ← (per evitare confusione
con l’operatore di uguaglianza)
„ Dato il seguente frammento di codice
…
A=5
A=A+1
Cosa fa quell’istruzione?
„ L’esecutore esegue i seguenti passi
Î Prima valuta l’espressione a destra, cioè calcola il valore di A+1 che vale 6
Î Dopo assegna tale valore alla variabile a sinistra, cioè ad A
Î Alla fine dell’esecuzione di quella istruzione quindi, A vale 6
18
Valutazione delle Espressioni
G. Ascia
„ L’esecutore è in grado di valutare espressioni aritmetiche
Diagramma a blocchi
Pseudo-codice
B = 5*(82-35)/7
B = 5*(82-35)/7
A = (B+34)/B*2
A = (B+34)/B*2
19