• Non ci sono risultati.

Elementi di informatica Elementi di informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Elementi di informatica Elementi di informatica"

Copied!
25
0
0

Testo completo

(1)

1

Elementi di informatica Elementi di informatica

Problemi, algoritmi e programmi

L’ELABORATORE ELETTRONICO

Il calcolatore elettronico è uno strumento in grado di

• eseguire insiemi di azioni elementari

• le azioni vengono eseguite su oggetti (dati) per produrre produrre altri oggetti (risultati)

• l’esecuzione di azioni viene richiesta

all’elaboratore attraverso frasi scritte

in qualche linguaggio (istruzioni)

(2)

3

PROGRAMMAZIONE

L’attività con cui si predispone l’elaboratore a eseguire un particolare insieme di azioni su particolari dati , allo scopo di risolvere un problema

I N P U T

D A T I Elaboratore

Elettronico

O U T P U T R I S U L T A T I

agente di calcolo Uno degli scopi fondamentali dell’informatica è:

la risoluzione di problemi la risoluzione di problemi

problema = compito che si vuole far risolvere automaticamente al calcolatore

Problem

Problem solving solving

(3)

5

Problem

Problem solving solving (cont ( cont.) .)

I problemi che siamo interessati a risolvere sono di natura molto varia:

™ Trovare il maggiore tra due numeri

™ Dato un elenco di nomi e numeri di telefono, trovare il numero di una data persona

™ Dati a e b, risolvere l’equazione ax+b=0

™ Stabilire se una parola precede alfabeticamente un’altra

™ Prenotare aerei, treni, hotel, …

™ Ordinare un elenco di nomi

™ Ecc.

Problem

Problem solving solving (cont ( cont.) .)

input

acquisire i dati

Elaborazione

Elaborazione output

presentare i

risultati

(4)

7

Esempio: somma Esempio: somma

n

1

, n

2

totale totale

= n

1

+ n

2

totale

= n

1

+ n

2

RISOLUZIONE DI PROBLEMI

La descrizione del problema non fornisce (in generale) un metodo per risolverlo

.

– Affinché un problema sia risolvibile è però necessario che la sua definizione sia chiara e completa

Non tutti i problemi sono risolvibili attraverso l’uso del calcolatore. Esistono classi di problemi per le quali la soluzione automatica non è proponibile.

Ad esempio:

– se il problema presenta infinite soluzioni

– per alcuni dei problemi non è stato trovato un metodo risolutivo – per alcuni problemi è stato dimostrato che non esiste un metodo

risolutivo automatizzabile

(5)

9

RISOLUZIONE DI PROBLEMI RISOLUZIONE DI PROBLEMI

La risoluzione di un problema è il processo che, dato un problema e individuato un

opportuno metodo risolutivo, trasforma i dati iniziali nei corrispondenti risultati finali.

Affinché la risoluzione di un problema possa essere realizzata attraverso l’uso del

calcolatore, tale processo deve poter essere definito come sequenza di azioni elementari.

Attività per risolvere un problema Attività per risolvere un problema

1. Comprendere il problema

2. Definire un procedimento risolutivo ( algoritmo ) 3. Implementare l’algoritmo in un linguaggio di

programmazione 4. Prova

5. Documentazione

6. Manutenzione

(6)

11

Comprendere il problema Comprendere il problema

• Focalizzare gli obiettivi

• Evidenziare

le regole

i dati espliciti ed impliciti

• Eliminare i dettagli inutili ed ambigui

Attività per risolvere un problema Attività per risolvere un problema

1. Comprendere il problema

2. Definire un procedimento risolutivo ( algoritmo ) 3. Implementare l’algoritmo in un linguaggio di

programmazione 4. Prova

5. Documentazione

6. Manutenzione

(7)

13

Algoritmo Algoritmo

Descrizione rigorosa

Un algoritmo è una sequenza finita di azioni che risolve in un tempo finito una classe di problemi.

L'esecuzione delle azioni nell'ordine specificato dall'algoritmo consente di ottenere, a partire dai dati di ingresso, i risultati che risolvono il problema di ingresso

RISULTATI

ESECUTORE

una macchina astratta capace di eseguire le azioni specificate dall’algoritmo.

Esecutore

Metodo Risolutivo (algoritmo )

DATI

Considerazioni Considerazioni

1. Suddivisione in sottoproblemi 2. Precisione dell’algoritmo cresce al

diminuire delle capacità dell’agente di

calcolo

(8)

15

Caratteristiche di un algoritmo Caratteristiche di un algoritmo

Eseguibilità: ogni azione dev’essere essere eseguibile dall’esecutore in un tempo finito Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore Finitezza : il numero totale di azioni da

eseguire, per ogni insieme di dati di ingresso, deve essere finito

Caratteristiche di un algoritmo Caratteristiche di un algoritmo

Quindi, l’algoritmo deve: essere applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell’algoritmo

essere costituito da operazioni appartenenti ad un

determinato insieme di operazioni fondamentali

essere costituito da regole non ambigue, cioè

interpretabili in modo univoco qualunque sia

l’esecutore (persona o “macchina”) che le legge

(9)

17

Struttura in passi elementari Struttura in passi elementari

Tutte le operazioni specificate dall’algoritmo devono essere eseguibili dall’agente (operazioni elementari)

… altrimenti è necessario scomporre il problema troppo complesso in sotto problemi più semplici

Esempio: l’area di una campana Esempio: l’area di una campana

r

h2 b

Sottoproblema 1 A1 = ½ π r2 Sottoproblema 2 A2 = b h2 Sottoproblema 3 A3 = b h1 +

½ ( ½ (B-b) h1) +

½ ( ½ (B-b) h1)

Area della campana = A1 + A2 +A3

h1 B

r=b/2 h2 b

h1 B

b

(10)

19

Esempio: gestione biblioteca Esempio: gestione biblioteca

™ Libri disposti sugli scaffali

™ La posizione di ogni libro è fissa ed è individuata da due coordinate:

• numero dello scaffale

• posizione nello scaffale

™ La biblioteca è dotata di uno schedario (ordinato per autore/i e titolo). Ogni scheda contiene, nell’ordine:

• Cognome e nome dell’autore

• Titolo del libro

• Numero dello scaffale

• Posizione attribuita al libro nello scaffale

Esempio di scheda Esempio di scheda

Autore: Manzoni

Titolo: I promessi Sposi Scaffale: 33

Posizione: 13 Autore: Manzoni

Titolo: I promessi Sposi Scaffale: 33

Posizione: 13

(11)

21

Problema Problema

Trovare un libro??

Formulazione dell’algoritmo Formulazione dell’algoritmo

1. Cerca la scheda del libro nello schedario 2. Segnati numero scaffale e posizione 3. Cerca lo scaffale indicato

4. Accedi alla posizione indicata e preleva il libro

Questo modo incrementale di procedere si dice top-down o anche procedimento per

raffinamenti successivi

(12)

23

Primo sotto

Primo sotto -algoritmo di ricerca - algoritmo di ricerca

1. Prendi la prima scheda dello schedario

2. Se titolo e autore/i sono quelli cercati, la ricerca termina con successo, altrimenti passa alla

scheda successiva

3. Continua di scheda in scheda finché non trovi quella cercata. Se vengono esaurite le schede, il libro cercato non esiste. Devi cercare il libro in un’altra biblioteca.

Cosa succede se l’autore cercato è Cosa succede se l’autore cercato è Zuzzurellone?

Zuzzurellone?

(13)

25 Autore:Manzoni

Titolo:

Scaffale:33 Posizione:13 Autore:Manzoni Titolo:

Scaffale:33 Posizione:13

Cosa succede se l’autore cercato è Cosa succede se l’autore cercato è Zuzzurellone?

Zuzzurellone?

Autore:Alighieri Titolo:La Divina Commedia Scaffale:5

Posizione:10 Autore:Alighieri Titolo:La Divina Commedia Scaffale:5

Posizione:10

Autore:

Zuzzurellone Titolo:

Scaffale:33 Posizione:13 Autore:Verga Titolo:

Scaffale:33 Posizione:13 Autore:Petrarca Titolo:

Scaffale:33 Posizione:13 Autore:Manzoni Titolo:

I promessi Sposi Scaffale:33 Posizione:13 Autore:Leopardi Titolo:

Scaffale:33 Posizione:13 Autore:Alighieri

Titolo:La Divina Commedia Scaffale:5

Posizione:10 Autore:Alighieri Titolo:La Divina Commedia Scaffale:5

Posizione:10

schedario

Autore:Zuzzurellone Titolo:

Scaffale:33 Posizione:13

Autore:Goldoni Titolo:

Scaffale:33 Posizione:13

Autore:Petrarca

Titolo:

Scaffale:33 Posizione:13 Autore:Manzoni

Titolo:

Scaffale:33 Posizione:13 Autore:Leopardi

Titolo:

Scaffale:33 Posizione:13 Autore:Goldoni

Titolo:

Scaffale:33 Posizione:13

schedario

Secondo sotto

Secondo sotto -algoritmo di ricerca - algoritmo di ricerca

1. Esamina la scheda centrale dello schedario 2. Se la scheda centrale corrisponde al libro

cercato allora la ricerca termina

3. In caso contrario, prosegui allo stesso modo nella

metà superiore o inferiore dello schedario a

seconda che il libro cercato segua o preceda

quello indicato sulla scheda

(14)

27

Cosa succede ora se l’autore cercato Cosa succede ora se l’autore cercato è Zuzzurellone?

è Zuzzurellone?

Autore:Verga Titolo:

Scaffale:33 Posizione:13 Autore:

Zuzzurellone Titolo:

Scaffale:44 Posizione:12

Cosa succede ora se l’autore cercato Cosa succede ora se l’autore cercato è Zuzzurellone?

è Zuzzurellone?

Autore:Alighieri Titolo:La Divina Commedia Scaffale:5

Posizione:10 Autore:Alighieri Titolo:La Divina Commedia Scaffale:5

Posizione:10

Autore:Petrarca Titolo:

Scaffale:33 Posizione:14 Autore:Manzoni Titolo: I promessi Sposi Scaffale:33

Posizione:13 Autore:Leopardi Titolo:

Scaffale:33 Posizione:13 Autore:Goldoni Titolo:

Scaffale:33 Posizione:13

schedario

(15)

29

Secondo sotto

Secondo sotto -algoritmo di ricerca: - algoritmo di ricerca:

errore errore

1. Esamina la scheda centrale dello schedario

2. Se la scheda centrale corrisponde al libro cercato allora la ricerca termina

3. In caso contrario, prosegui allo stesso modo nella metà superiore o inferiore dello schedario a seconda che il libro cercato segua o preceda quello indicato sulla scheda

L’algoritmo è incompleto:

c’è un’altra condizione di terminazione quando il libro non esiste

Revisione del passo 2 Revisione del passo 2

Se la scheda centrale corrisponde al libro cercato Se la scheda centrale corrisponde al libro cercato

Se la parte dello schedario da consultare è vuota

Se la parte dello schedario da consultare è vuota

Terminazione Terminazione

oppure

Libro trovato Libro inesistente

(16)

31

Qualità degli algoritmi Qualità degli algoritmi

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

un algoritmo è tanto più efficiente quanto meno risorse richiede per la sua esecuzione. Una risorsa importante è il tempo di esecuzione

Esempio: gestione biblioteca Esempio: gestione biblioteca

• Entrambi gli algoritmi di ricerca sono corretti

• Il secondo algoritmo è più efficiente

del primo

(17)

33

Altre 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à

• riusabilità

Esempi Esempi

Soluzione dell’equazione ax+b=0 – leggi i valori di a e b

– calcola calcola -b

– dividi quello che hai ottenuto per a e chiama x il risultato – stampa x

Calcolo del massimo di un insieme

–Scegli un elemento come massimo provvisorio max –Per ogni elemento i dell’insieme: se i>max eleggi i come nuovo massimo provvisorio max

–Il risultato è max

NOTANOTA

I passi sono eseguiti in sequenza e l’ordine delle istruzioni è essenziale per la correttezza dell’algoritmo

(18)

35

riassumendo riassumendo

Algoritmo Algoritmo

Sequenza di azioni che trasforma i dati iniziali in un numero finito di passi, elementari e non ambigui, per giungere al risultato finale

Questa sequenza di azioni può essere eseguita da un agente di calcolo

Attività per risolvere un problema Attività per risolvere un problema

1. Comprendere il problema

2. Definire un procedimento risolutivo ( algoritmo ) 3. Implementare l’algoritmo in un linguaggio di

programmazione 4. Prova

5. Documentazione

6. Manutenzione

(19)

37

Implementazione di un algoritmo Implementazione di un algoritmo

Algoritmo deve essere trascritto in un linguaggio Linguaggi

Linguaggi artificiali usati in informatica:

linguaggi di programmazione Linguaggi naturali

usato dagli uomini per comunicare

™complessi

™ambigui

ALGORITMI E ALGORITMI E ALGORITMI E ALGORITMI E PROGRAMMI

PROGRAMMI

Ogni elaboratore è una macchina in grado di eseguire azioni elementari su oggetti detti DATI.

• L’esecuzione delle azioni è richiesta all’elaboratore tramite comandi elementari chiamati ISTRUZIONI espresse attraverso un opportuno formalismo: il LINGUAGGIO di PROGRAMMAZIONE.

• La formulazione testuale di un algoritmo in un linguaggio comprensibile a un elaboratore è detta programma.

Un programma è la formulazione testuale, in un

certo linguaggio di programmazione, di un algoritmo

che risolve un dato problema.

(20)

39

Alcuni linguaggi di programmazione Alcuni linguaggi di programmazione

“famosi”

“famosi”

• FORTRAN: metà degli anni ’50 (FORmula TRANslator)

• COBOL: metà degli anni ’50

(Common Business-Oriented Language)

• Pascal: inizio degli anni ’70

(nome dal matematico francese Blaise Pascal che fu il primo ad ideare una macchina calcolatrice: la Pascalina)

• C: inizio degli anni ’70

suo antenato: linguaggio B

• Prolog: inizio degli anni ’70 (PROgramming in LOGic)

• …

Linguaggi ad alto livello

Il linguaggio C Il linguaggio C

™ Il linguaggio C è stato sviluppato intorno al 1972, nei Bell Laboratories AT&T americani, da Dennis Ritchie

™ E’ nato come linguaggio di sviluppo del Sistema

Operativo UNIX

(21)

41

Sintassi e semantica Sintassi e semantica

Linguaggio Sintassi

insieme di regole che consentono di costruire correttamente le frasi del linguaggio

Semantica

disciplina che studia il significato delle parole e delle frasi

FORMA NON CORRETTA FORMA CORRETTA

LIVELLO

l’albero è un animale il gatto è un animale

semantico

ho andato a scuola sono andato a scuola

sintattico

Programma Programma

Testo (i.e. sequenza di istruzioni) scritto in accordo alla sintassi e semantica di un

linguaggio di programmazione

(22)

43

Linguaggio macchina Linguaggio macchina

Un calcolatore non è in grado di eseguire direttamente programmi scritti in linguaggi ad alto livello

un calcolatore è in grado di eseguire direttamente solo programmi scritti nel proprio linguaggio macchina

0110001000100101 1101001001010101 0010100101000100 1110100100110101

………

Linguaggio macchina (

Linguaggio macchina (cont cont.) .)

Il linguaggio macchina è

™ linguaggio di programmazione comprensibile direttamente dal calcolatore

™ molto elementare e primitivo: sequenza di cifre binarie.

Ad esempio, una possibile istruzione potrebbe essere

0010110000101100

™ è difficile da comprendere per un essere umano

™ specifico di un calcolatore: calcolatori di tipo diverso hanno

linguaggi macchina differenti

(23)

45

Traduzione Traduzione

Per rendere un programma (scritto in un linguaggio ad alto livello) eseguibile da un calcolatore è necessario tradurre il programma in un programma equivalente scritto nel linguaggio macchina del calcolatore La traduzione può avvenire in due modi:

™ compilazione

™ interpretazione

Compilazione Compilazione

un programma scritto in un linguaggio di programmazione ad alto livello viene trasformato in un programma in linguaggio macchina e poi può essere eseguito più volte senza dover tradurre nuovamente il programma

Programma scritto in C

0110001000100101 1101001001010101 0010100101000100 1110100100110101

………

Compilazione

controllo della

correttezza sintattica

correttezza sintattica

correttezza semantica Nota:

codice sorgente

codice eseguibile

ERRORI

• sintassi (compilatore)

• d’esecuzione (divisione per 0)

• logici

(24)

47

Interpretazione Interpretazione

Traduzione riga per riga:

ciascuna istruzione del programma scritto in un linguaggio di programmazione ad alto livello viene trasformata in istruzioni del linguaggio macchina ed eseguita

Compilazione & interpretazione Compilazione & interpretazione

Una analogia con la traduzione tra linguaggi diversi

™ la compilazione è analoga alla traduzione di un libro

™ l’interpretazione è analoga alla traduzione

simultanea

(25)

49

Riferimenti

Documenti correlati

• sistema operativo (es Windows della Microsoft) permette agli utenti di far eseguire programmi applicativi sull'hardware del computer. • programmi applicativi (es Microsoft

• Nelle moderne architetture di processore si usano due aree di memoria molto veloce (più veloce della RAM, con tempo di risposta di circa 20 nanosecondi) dette cache

Esempio: un monitor a colori da 1024 x 768 ha circa 800 mila pixel sullo schermo, quindi alla profondità cromatica di 24 bit (3 byte) sono necessari 2.5 MB di

• Formato di fruizione (o delivery format): tipo del file che riceve l'utente che accede un documento digitale. • E' rilevante non solo per la miglior

• Ogni macchina che deve comunicare su Internet usa uno o più name server , che sono macchine che gestiscono la corrispondenza tra nomi logici e indirizzi IP numerici. – Esempio:

– Ogni browser sa visualizzare direttamente file html e ascii: occorre definire come aprire i documenti in altri formati, aggiungendo plug in specifici.. Sicurezza

Ritchie, "Il linguaggio C - Seconda Edizione", Pearson Education Italia Altri sussidi didattici. • Copia dei lucidi usati

• Elementi di base dell’architettura di un calcolatore elettronico, dei sistemi di calcolo, delle reti di calcolatori. • Elementi di base dei