Il Concetto Intuitivo di Calcolatore I Problemi e la loro Soluzione

I Problemi e la loro Soluzione…
Il Concetto Intuitivo di Calcolatore
• Problema: classe di domande omogenee alle quali è possibile dare
risposta mediante una procedura uniforme
• Istanza del problema: ogni specifica domanda della classe
Fondamenti di Informatica A
• Variabili di ingresso: termini variabili che caratterizzano la
formulazione di un problema
Ingegneria Gestionale
• Variabili di uscita: termini variabili che caratterizzano le soluzioni
attese di un problema
Università degli Studi di Brescia
• Dati: valori che possono assumere le variabili d’ingresso
Docente: Prof. Alfonso Gerevini
• Risultati: valori che possono assumere le variabili d’uscita
• Soluzione di un’istanza di un problema: risposta alla specifica
domanda che l’istanza rappresenta
Docente: A.Gerevini
Classe di
domande
omogenee
Problema
Quanto vale la radice quadrata
Y di un numero naturale X ?
Variabile di
ingresso
Quanto vale la
radice quadrata
intera Y di 49?
Risultati = R (numeri reali)
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
• Procedimento di risoluzione di un problema
– Analisi del problema e individuazione di un
metodo di soluzione
– Descrizione della soluzione
– Interpretazione della soluzione
– Attuazione della soluzione
Istanza
Dati = N (numeri naturali)
2
Risoluzione di un Problema
Esempio
Variabile
di uscita
Fondamenti di Informatica A – Università di Brescia
Soluzione
dell’istanza = 7
3
ATTENZIONE: soluzione del problema e
soluzione dell’istanza non sono la stessa cosa!
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
4
Esempio: montaggio di un
elettrodomestico
Processo di risoluzione
Soggetto 1
Problema
b
SOGGETTO 1
Individuazione soluzione
Analisi
Formulazione
descrizione
Soggetto 2
Conoscenza di come
si risolve il problema
Descrizione soluzione
Interpretazione
descrizione
Attuazione
soluzione
Soluzione
Fondamenti di Informatica A – Università di Brescia
5
Analisi del Problema
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
6
• Cos’è un modello?
• Dato un certo problema, un modello del problema è una
rappresentazione semplificata del problema stesso che
evidenzia:
– Comprensione del problema: eliminando ogni
ambiguità nella sua formulazione, focalizzando
gli obiettivi, evidenziando i dati impliciti ed
espliciti del problema
– Modellazione del problema: creando un
modello
– Ricerca della soluzione
Fondamenti di Informatica A – Università di Brescia
Es. l’acquirente
dell’elettrodomestico
Modellazione del Problema
• L’analisi di un problema consiste in:
Docente: A.Gerevini
SOGGETTO 2
Effettiva capacità di
risolvere il problema
Descrizione interpretata
boppure
Docente: A.Gerevini
Es. progettista di un
elettrodomestico
– Gli elementi del problema
– Le loro proprietà e le relazioni fra di essi
• Un modello è solo un ausilio alla risoluzione del problema,
non è sufficiente da solo a risolvere il problema
• E’ importante che la soluzione trovata sul modello possa
essere interpretata correttamente in modo da essere
trasferita sulla realtà
7
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
8
Un esempio di problema e di
soluzione
Relazione tra Realtà e Modello
Mondo
reale
Un MODELLO è un’astrazione
del problema. Rappresenta una
semplificazione completa e
autoconsistente della realtà,
creata per comprendere il
problema
• Problema: come si fa una telefonata?
• Soluzione:
–
–
–
–
Solleva il ricevitore
Componi il numero
Attendi il segnale di libero
Se arriva il segnale di libero allora attendi che
venga qualcuno a rispondere altrimenti riaggancia
– Se dopo un po’ non arriva nessuno a rispondere
allora riaggancia altrimenti fai la tua conversazione
Astrae dai dettagli
irrilevanti del mondo
MODELLO
analisi
f(x) = g'(y) ° h(z)
Docente: A.Gerevini
–
9
Fondamenti di Informatica A – Università di Brescia
• La soluzione è quindi espressa come
sequenza di operazioni la cui esecuzione
porta alla soluzione del problema
Î ALGORITMO RISOLUTIVO
DATI
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
10
Procedura di Risoluzione di un
Problema
Soluzioni e Algoritmi…
ALGORITMO
(soluzione problema)
Quali sono le istanze del problema?
SOLUZIONE
(istanza)
11
• Problemi elementari (o primitivi) sono quei problemi la
cui soluzione corrisponde all’esecuzione di un’azione
elementare
• Azione elementare: azione che può essere direttamente
eseguita da un esecutore
• Esempio: “componi il numero” può essere considerata
un’azione elementare, in quanto solitamente non occorre
spiegare di più (tutto dipende però dal soggetto
esecutore…)
• Risolvere un problema = risolvere un’opportuna
successione di problemi più semplici
Î SCOMPOSIZIONE IN SOTTO-PROBLEMI
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
12
Esempio di Scomposizione di un
Problema
Problema: Richiesta di un Libro
• Gestione di una biblioteca in cui:
•
– I libri sono disposti sugli scaffali
– La posizione di ogni libro è data da: numero dello
scaffale e posizione nello scaffale
– Esiste un schedario in cui ogni scheda riporta le
seguenti informazioni:
•
•
•
•
•
Docente: A.Gerevini
– Decido quale libro richiedere
– Prelevo il libro
•
Cognome e nome dell’autore
Titolo del libro
Data di pubblicazione
Numero dello scaffale in cui si trova
Posizione nello scaffale
Fondamenti di Informatica A – Università di Brescia
Come procedo?
13
Il secondo passo va dettagliato, ovvero va
scomposto in sotto-problemi (procedura
per raffinamenti successivi o top-down)
Docente: A.Gerevini
Il problema diventa…
•
•
•
•
•
•
• Scompongo in sotto-sotto-problemi:
– Prendo la prima scheda
– Il titolo, l’autore e la data corrispondono a quelli
del libro che sto cercando? Se sì allora ho
individuato la scheda, altrimenti passo alla scheda
successiva e ripeto il controllo
– Se le schede sono esaurite, allora il libro non esiste
Non è un problema elementare!
Fondamenti di Informatica A – Università di Brescia
14
Cercare la scheda…
Decido quale libro richiedere
Cerco la scheda del libro nello schedario
Mi segno numero dello scaffale e
posizione nello scaffale
Cerco lo scaffale
Cerco il libro nella sua posizione
all’interno dello scaffale
Prelevo il libro
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
15
• Esistono metodi più efficienti per risolvere
lo stesso problema… come fareste voi?
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
16
Un metodo più efficiente…
Elaborazione di Informazione
(se lo schedario è ordinato)
•
•
•
Esamino la scheda centrale dello schedario
Se la scheda corrisponde al libro cercato allora termino
la ricerca
Altrimenti cerco (con lo stesso metodo) nella metà
inferiore o superiore dello schedario, a seconda che il
libro cercato preceda o segua il libro indicato sulla
scheda
• Una certa classe di problemi richiede l’elaborazione di
informazione (attraverso uno o più algoritmi)
• Problema di elaborazione dell’informazione: insieme di
dati di partenza e risultato ricercato
• Ogni soluzione di un problema è una procedura che
genera un risultato sulla base dei dati di partenza
NB: il passo 2 deve tener conto che se il libro potrebbe non esistere,
diventa:
Elaborazione
“se la scheda corrisponde al libro cercato oppure se
la parte di schedario da esaminare è vuota allora
termino la ricerca”
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
dati
17
Soggetto Esecutore
Docente: A.Gerevini
Soluzione di un problema
(programma - descrizione di un
algoritmo -)
• Deve inoltre essere in grado di eseguire le azioni presenti
nella descrizione interpretata
• Il calcolatore è un esecutore di soluzioni identificate e
descritte da esseri umani (in genere un team di progettisti,
programmatori e utenti)
CALCOLATORE
Risultati dell’esecuzione
in corrispondenza dei dati
iniziali
Dati iniziali
• Caratteristiche di un calcolatore: linguaggio che è in grado
di interpretare e istruzioni che è in grado di eseguire
(assegnati a
variabili di
input)
• Quando/perchè usare un calcolatore come esecutore?
Fondamenti di Informatica A – Università di Brescia
18
Fondamenti di Informatica A – Università di Brescia
Il Calcolatore come Esecutore
(una prima definizione)
• Il soggetto esecutore (soggetto 2) deve essere in grado di
interpretare la descrizione della soluzione
Docente: A.Gerevini
risultato
19
Docente: A.Gerevini
(assegnati a variabili di
output)
Fondamenti di Informatica A – Università di Brescia
20
Risolvere le ambiguità…
Caratteristiche di un Esecutore
•
Caratteristiche di un esecutore (in modo più formale)
Il linguaggio che è in grado di interpretare
Un linguaggio si fonda su un certo numero di simboli
di un certo alfabeto A. Con i simboli si formano le
parole; tra le parole si inseriscono connettivi a formare
frasi
•
•
Insieme delle azioni che è in grado di compiere
Insieme delle regole che a ogni frase del
linguaggio associano le relative azioni da
compiere
Docente: A.Gerevini
21
Fondamenti di Informatica A – Università di Brescia
•
Il linguaggio che l’esecutore è in grado di interpretare
deve essere definito in termini formali: caratterizzazione
sintattica dell’esecutore
•
L’insieme delle azioni che l’esecutore è in grado di
compiere deve essere univocamente definito, e tali azioni
devono essere deterministiche
•
L’insieme delle regole di associazione tra costrutti del
linguaggio e azioni deve essere univocamente definito:
caratterizzazione semantica dell’esecutore
Docente: A.Gerevini
Sintassi e Semantica
• Sintassi di un linguaggio:
La struttura
• Algoritmo: una sequenza di azioni (istruzioni)
che, operando sui dati iniziali, consentono di
ottenere i risultati che costituiscono la soluzione
dell’istanza del problema
Il significato
• Tali azioni sono determinate tramite la
scomposizione del problema in sottoproblemi
insieme delle regole che specificano il significato di
ciascuna istruzione, cioè l’azione che viene compiuta
quando l’istruzione viene eseguita
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
22
Algoritmi e Programmi
insieme delle regole che specificano la scrittura di
istruzioni formalmente corrette (ben formate),
indipendentemente dal loro significato
• Semantica di un linguaggio:
Fondamenti di Informatica A – Università di Brescia
• La soluzione di un sottoproblema è detta passo
(step) dell’algoritmo
23
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
24
Computazione
Proprietà di un Algoritmo
• Computazione: esecuzione di un algoritmo in
corrispondenza di certi dati iniziali
• Passo di computazione: ogni singolo passo elementare che
l’esecutore compie durante l’esecuzione di un algoritmo
• Sequenza computazione: sequenza di passi elementari che
l’esecutore compie in corrispondenza di certi dati iniziali
durante l’esecuzione di un algoritmo
Algoritmo = concetto statico
Docente: A.Gerevini
• Finitezza: un algoritmo deve essere costituito da un
numero finito di istruzioni
• Univocità: ogni istruzione deve essere univocamente
interpretabile ed eseguibile
Computazione = concetto dinamico
Fondamenti di Informatica A – Università di Brescia
25
• Effettività: deve esistere un esecutore in grado di eseguire
ogni istruzione dell’algoritmo in un tempo finito
• Determinismo: per qualunque dato di ingresso, a ogni
passo della computazione, esiste al più un passo successivo.
Ovvero: assegnato un dato di ingresso, esiste una e una
sola sequenza di computazione possibile dell’algoritmo
Docente: A.Gerevini
Proprietà di un Algoritmo (cont.)
• Funzione rappresentata: un algoritmo associa ai valori
per le variabili di input valori per le variabili di uscita (i
risultati).
• Correttezza: l’algoritmo perviene alla soluzione del
compito cui è preposto senza difettare di alcun passo
fondamentale (calcola correttamente la funzione
rappresentata)
• Efficienza: l’algoritmo perviene alla soluzione del compito
impiegando il numero minimo di risorse fisiche
– Risorse fisiche: tempo, memoria, ….
• Terminazione: l’esecuzione di un algoritmo deve
terminare in un numero finito di passi
Fondamenti di Informatica A – Università di Brescia
26
Programmi e Calcolatori
• Un algoritmo deve essere comprensibile al suo
esecutore
• Programma: descrizione formale di un algoritmo
attraverso un linguaggio di programmazione
• Il calcolatore è un esecutore di programmi
• Un programma è una sequenza di istruzioni
scritte in un opportuno linguaggio comprensibile
al calcolatore
• Il compito di un esperto informatico consiste nel
produrre algoritmi e codificarli in programmi
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
27
Il Calcolatore come Esecutore di
Istruzioni
“Linguaggio Macchina”
• L’insieme di istruzioni più complesso può essere
riscritto in un linguaggio elementare basato su un
alfabeto binario (composto dei soli simboli 0 e 1)
ed un insieme di poche distinte operazioni per la
manipolazione del sequenze di 0 e 1
• Il calcolatore digitale è un dispositivo che è in
grado di interpretare ed eseguire le istruzioni
scritte in questo linguaggio elementare
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
29
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
30
Il Calcolatore come Esecutore
(una definizione rivisitata)
• In generale, oggi i programmatori usano linguaggi di
programmazione di alto livello
• Questi linguaggi:
• Un calcolatore è un sistema che, ricevendo in
ingresso la descrizione, in un opportuno
linguaggio, di un algoritmo risolvente A[In,Out]
(cioè un programma) per un certo problema
P[In,Out] e un dato In, produce un risultato Out,
ovvero la soluzione Out dell’istanza P[In,Out]
– hanno costrutti più vicini al ragionamento umano
– consentono al programmatore di descrivere i problemi a un livello
di astrazione di poco inferiore a quello degli algoritmi
– permettono di ragionare secondo una logica vicina al problema
piuttosto che alle caratteristiche fisiche del calcolatore
• I programmi scritti in questi linguaggi devono subire un
processo di traduzione (compilazione) per essere
comprensibili da parte del calcolatore:
Un calcolatore “capisce” solo la sua lingua (il linguaggio
macchina)
Fondamenti di Informatica A – Università di Brescia
• L’insieme di queste istruzioni costituisce il
linguaggio macchina
• I programmi eseguibili da un calcolatore sono
sequenze finite di istruzioni in linguaggio
macchina (che descrivono algoritmi)
Linguaggi di Programmazione
Docente: A.Gerevini
• I circuiti elettronici di un calcolatore sono in grado
di riconoscere ed eseguire un numero limitato di
istruzioni
• Un calcolatore è un esecutore universale di
programmi
31
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
32
Esempio
Programma per il calcolo della
potenza n-esima di x: P[x, n, y]
input output
CALCOLATORE
dati iniziali
Risultati dell’esecuzione
in corrispondenza dei
dati iniziali
x = 2, n = 5
Istanza del problema = P[2,5,y]
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
y = 32
33