Il Concetto Intuitivo di Calcolatore I Problemi e la loro Soluzione

Il Problemi e la loro Soluzione
(esempio)
Il Concetto Intuitivo di Calcolatore
Variabile
di uscita
Classe di
domande
omogenee
Elementi di Informatica e
Programmazione
Variabile di
ingresso
Problema
Quanto vale la radice quadrata
Y di un numero naturale X ?
Istanza
Ingegneria Gestionale
Quanto vale la
radice quadrata
intera Y di 49?
Università degli Studi di Brescia
Docente: Prof. Alfonso Gerevini
Dati = N (numeri naturali)
Soluzione
dell’istanza = 7
Risultati = R (numeri reali)
Docente: A.Gerevini
2
Elementi di Informatica e Programmazione U. Brescia
Esercizio
I Problemi e la loro Soluzione…
Problema
•
Problema: classe di domande omogenee alle quali è possibile dare
risposta mediante una procedura uniforme
•
Istanza del problema: ogni specifica domanda della classe
•
Variabili di ingresso: termini variabili che caratterizzano la
formulazione di un problema
•
Variabili di uscita: termini variabili che caratterizzano le soluzioni
attese di un problema
•
Dati: valori che possono assumere le variabili d’ingresso
•
Risultati: valori che possono assumere le variabili d’uscita
•
Soluzione di un’istanza di un problema: risposta alla specifica
domanda che l’istanza rappresenta
Quanto vale la radice quadrata
intera Z di un numero naturale
W (con approssimazione per
difetto) ?
Istanza = ?
Dati = ?
Soluzione
dell’istanza = ?
Risultati = ?
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
Variabili ingresso
e uscita = ?
3
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
4
Processo di Risoluzione
Risoluzione di un Problema
(come trovare soluzioni per le istanze)
Soggetto 1
Problema
b
Procedimento di risoluzione di un problema
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
Individuazione soluzione
Analisi
1. Analisi del problema e individuazione di una
soluzione del problema (non è la soluzione
delle istanze!)
2. Descrizione della soluzione
3. Interpretazione della soluzione
4. Attuazione della soluzione da parte di un
esecutore
Formulazione
descrizione
Soggetto 2
5
Docente: A.Gerevini
Descrizione interpretata
Attuazione
soluzione
Soluzione
Fondamenti di Informatica A – Università di Brescia
6
Un altro esempio
• Problema: come si fa una telefonata a X?
• Soluzione:
1.
2.
3.
4.
Solleva il ricevitore
Componi il numero X
Attendi il segnale di libero
Se arriva il segnale di libero allora attendi che
venga qualcuno a rispondere altrimenti riaggancia
5. Se dopo un po’ non arriva nessuno a rispondere
allora riaggancia altrimenti fai la tua conversazione
Fondamenti di Informatica A – Università di Brescia
Interpretazione
descrizione
boppure
Un esempio di problema e di
soluzione (esecutore umano)
Docente: A.Gerevini
Descrizione soluzione
10
• Problema: qual è il numero più piccolo Y
(variabile di uscita) tra tre numeri
(variabili di ingresso) X1, X2, X3 ???
• Soluzione: ???
Assumere di poter svolgere solo operazioni
aritmetiche e confronti (<, >, =) tra numeri
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
10
Un altro esempio
Una possibile soluzione
• Problema: qual è la radice quadrata intera
Y di un numero naturale X (approssimata
per difetto)?
• Soluzione: ???
1.
2.
3.
4.
5.
6.
7.
Assumere di poter svolgere solo operazioni
aritmetiche e confronti tra numeri
Per semplicità assumere X minore di 20 e maggiore di
uno.
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
Se 2*2 = X allora Y = 2 e STOP
Se 2*2 > X allora Y = 1 e STOP
Se 3*3 = 3 allora Y = 3 e STOP
Se 3*3 > X allora Y = 2 e STOP
Se 4*4 = X allora Y = 4 e STOP
Se 4*4 > X allora Y = 3 e STOP
Y = 4 e STOP
10
Una soluzione migliore…
1. Per ogni valore della variabile di lavoro I
che va da 2 a X
2.
Se I*I > X allora Y=I-1 e STOP
3.
Se I*I = X allora Y=I e STOP
Soluzioni e Algoritmi…
• La soluzione è quindi espressa come
sequenza di operazioni la cui esecuzione
porta alla soluzione del problema Î
ALGORITMO RISOLUTIVO
ALGORITMO
DATI
Docente: A.Gerevini
SOLUZIONE
Fondamenti di Informatica A – Università di Brescia
11
Problema: Richiesta di un Libro
•
Il problema diventa…
1. Decido quale libro richiedere
2. Cerco la scheda del libro nello schedario
3. Mi segno numero dello scaffale e
posizione nello scaffale
4. Cerco lo scaffale
5. Cerco il libro nella sua posizione
all’interno dello scaffale
6. Prelevo il libro
Come procedo?
1. Decido quale libro richiedere
2. Prelevo il libro
•
Il secondo passo va dettagliato, ovvero va
scomposto in sotto-problemi (procedura
per raffinamenti successivi o top-down)
Non è un problema elementare!
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
14
Docente: A.Gerevini
(se lo schedario è ordinato!)
1.
2.
• Scompongo in sotto-sotto-problemi:
1. Prendo la prima scheda
2. 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
3. Se le schede sono esaurite, allora il libro non esiste
3.
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
NB: il passo 2 deve “accorgersi” anche se il libro non esiste,
diventa:
• Esistono metodi più efficienti per risolvere
lo stesso problema… come fareste voi?
Fondamenti di Informatica A – Università di Brescia
15
Un metodo più efficiente…
Cercare la scheda…
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
“se la scheda corrisponde al libro cercato oppure se
la parte di schedario da esaminare è vuota allora
termino la ricerca”
16
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
17
Il Calcolatore come Esecutore
(una prima definizione)
Soggetto Esecutore
• Il soggetto esecutore (soggetto 2) deve essere in grado di
interpretare la descrizione della soluzione
• 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)
• Caratteristiche di un calcolatore: linguaggio che è in
grado di interpretare e istruzioni che è in grado di eseguire
• Quando/perchè usare un calcolatore come esecutore?
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
Soluzione di un problema
(programma - descrizione di un
algoritmo -)
CALCOLATORE
Dati iniziali
Risultati dell’esecuzione
in corrispondenza dei dati
iniziali
(assegnati a
variabili di
input)
19
Docente: A.Gerevini
Caratteristiche di un Esecutore
(assegnati a variabili di
output)
20
Fondamenti di Informatica A – Università di Brescia
Sintassi e Semantica
La struttura
• Sintassi di un linguaggio:
1. 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
2. L’insieme delle azioni che è in grado di compiere
3. L’insieme delle regole che a ogni frase del
linguaggio associano le relative azioni da
compiere
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
insieme delle regole che specificano la scrittura di
istruzioni formalmente corrette (ben formate),
indipendentemente dal loro significato
• Semantica di un linguaggio:
Il significato
insieme delle regole che specificano il significato di
ciascuna istruzione, cioè l’azione che viene compiuta
quando l’istruzione viene eseguita
21
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
23
Computazione: definizioni
Algoritmi e Programmi
• Computazione: esecuzione di un algoritmo in
corrispondenza di certi dati iniziali
• Passo di computazione: ogni singolo passo elementare che
l’esecutore compie durante una computazione
• Sequenza computazione: sequenza di passi elementari che
l’esecutore compie in corrispondenza di certi dati iniziali
durante l’esecuzione di un algoritmo
• Algoritmo: una sequenza di azioni (istruzioni)
che, operando sui dati iniziali, consentono di
ottenere la soluzione dell’istanza del problema in
esame
Algoritmo = concetto statico
• Ogni azione della sequenza è detta passo (step)
dell’algoritmo
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
24
Proprietà di un Algoritmo
Docente: A.Gerevini
Computazione = concetto dinamico
Fondamenti di Informatica A – Università di Brescia
Proprietà di un Algoritmo (cont.)
• Finitezza: un algoritmo deve essere costituito da un
numero finito di istruzioni
• Funzione rappresentata: un algoritmo associa ai valori
per le variabili di input valori per le variabili di uscita.
• Univocità: ogni istruzione deve essere univocamente
interpretabile ed eseguibile
• Correttezza: calcola correttamente la funzione
rappresentata (associata al problema da risolvere)
• Effettività: deve esistere un esecutore in grado di eseguire
ogni istruzione dell’algoritmo in un tempo finito
• Efficienza: l’algoritmo perviene alla soluzione del compito
impiegando una certa quantità di risorse fisiche
• Determinismo: per qualunque dato di ingresso, a ogni
passo della computazione, esiste al più un passo
successivo. Ovvero:
– Risorse fisiche: tempo, memoria, ….
• Terminazione: l’esecuzione di un algoritmo deve
terminare in un numero finito di passi di computazione
assegnato un dato di ingresso, esiste una e una sola
sequenza di computazione possibile dell’algoritmo
Docente: A.Gerevini
Fondamenti di Informatica A – Università di Brescia
25
26
Algoritmi, Programmi e
Calcolatore
Il Calcolatore come Esecutore di
Istruzioni
• Programma: descrizione formale di un algoritmo
attraverso un linguaggio di programmazione
• 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
• Un programma è una sequenza di istruzioni
scritte in un opportuno linguaggio comprensibile
al calcolatore
• Il calcolatore è un esecutore di programmi
• 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 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