41
1 Laboratorio di Informatica AA 2007/2008 1 Algoritmi, dati e programmi Laboratorio di Informatica AA 2007/2008 2 Scopo della lezione Introduzione ai concetti di: – problema – dato – algoritmo – linguaggio di programmazione – programma – diagramma di flusso

Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

1

Laboratorio di Informatica AA 2007/2008

1

Algoritmi, dati e programmi

Laboratorio di Informatica AA 2007/2008

2

Scopo della lezione

Introduzione ai concetti di:– problema– dato – algoritmo– linguaggio di programmazione – programma– diagramma di flusso

Page 2: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

2

Laboratorio di Informatica AA 2007/2008

3

Informatica

informatica

calcolatori

mezzi

programmi

informazioneproceduremezzi fisici

rappresentazione dell’informazione

Laboratorio di Informatica AA 2007/2008

4

Elaborazione di informazione

Ogni problema di elaborazione di informazione è caratterizzato da– un insieme di dati di partenza– un risultato cercato

Ogni sua soluzione è– una procedura che genera un risultato

sulla base dei dati indicati

Page 3: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

3

Laboratorio di Informatica AA 2007/2008

5

Elaborazione dell’informazione• Es. Problema di elaborazione dell’informazione: “Quanto

fa 21+32?”• Dati di partenza: {21,32}• Risultato cercato: {53}• Soluzione: procedura per l’addizione (addizione delle

unità con riporto + addizione delle decine con riporto, ...)

21 +32 =-----53

Laboratorio di Informatica AA 2007/2008

6

Elaborazione di informazioneDistinguiamo tra:• conoscenza di come si risolve un problema

– analisi del problema– identificazione di una soluzione– descrizione della soluzione

• effettiva capacità di risolvere un problema– interpretazione della soluzione– attuazione della soluzione

Page 4: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

4

Laboratorio di Informatica AA 2007/2008

7

Elaborazione di informazione• Es. Problema di elaborazione dell’informazione: “Quanto fa 21+32?”

• Conoscenza di come si risolve il problema:

– Analisi è un problema di somma tra due numeri interi;– Identificazione di una soluzione esiste una procedura per la somma tra due numeri interi;– Descrizione della soluzione i due numeri interi vanno incolonnati, si sommano le unità, il

riporto viene sommato alla somma delle decine, il riporto viene sommato alla somma delle centinaia, ...

• Effettiva capacità di risolvere il problema:

– Interpretazione della soluzione un utente italiano legge la descrizione del problema e comprende le operazioni da eseguire;

– Attuazione della soluzione 21 +32 =-----53

Laboratorio di Informatica AA 2007/2008

8

Elaborazione di informazione

• La conoscenza di come si risolve un problema è ciò che ci permette di sviluppare un programma.

• Il programma sarà poi interpretato ed eseguito da un esecutore (es.: essere umano, calcolatore, ...)

• Sono competenze distinte.

Page 5: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

5

Laboratorio di Informatica AA 2007/2008

9

Elaborazione di informazione

• Conoscenza di come si risolve un problema Scoperta / invenzione di un algoritmo per la risoluzione di un problema… Richiede uno sforzo creativo.

• Risoluzione del problema Intepretazione di un linguaggio ed esecuzione di una serie di operazioni…Operazioni “meccaniche”.

Laboratorio di Informatica AA 2007/2008

10

Elaborazione di informazioneAnalisi del problema

Individuazione dell’algoritmoScrittura del programma

Intepretazione del programma

Esecuzione del programma

Risultato

Dati

Ambito scientifico del problema

Programmazione

Calcolatore

Page 6: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

6

Laboratorio di Informatica AA 2007/2008

11

Elaborazione di informazionePer la descrizione della soluzione si utilizza:• linguaggio naturale

– italiano, inglese, …• sono linguaggi ambigui

– Es. in una ricetta, “Aggiungere un pizzico di sale…” Quanto è un pizzico di sale?

• linguaggio formale– formalismo matematico– pseudo-codice– diagramma di flusso (flow-chart)– linguaggio di programmazione– codice macchina

• sono linguaggi non ambigui

Laboratorio di Informatica AA 2007/2008

12

Elaborazione di informazioneLa descrizione della soluzione può essere

fatta a diversi livelli di dettaglio:Esempio: • cucinare le lasagne al forno

– preparare il ragù– preparare la besciamella

• setacciare 50g di farina e stemperarla con 10cc di latte– …

• aggiungere 30cc di latte e 50g di burro a pezzetti• ….

– bollire le lasagne– mettere a strati nella teglia e cuocere in forno

Alto livelloBasso livello

Page 7: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

7

Laboratorio di Informatica AA 2007/2008

13

Elaborazione di informazioneAnalisi del problema

Individuazione dell’algoritmoScrittura del programma

Intepretazione del programma

Esecuzione del programma

Risultato

Dati

Ambito scientifico del problema

Programmazione

Calcolatore

Laboratorio di Informatica AA 2007/2008

14

Algoritmo

algoritmo [al-go-rìt-mo] s.m. Dal Dal nome del matematico ar. Al-Khuwa¯rizmi¯ (sec. IX): 1 (mat.) procedimento sistematico di calcolo: algoritmo algebrico, euclideo 2 nel Medioevo, il calcolo basato sull'uso delle cifre arabiche 3 in logica matematica, procedimento meccanico che permette la risoluzione di problemi mediante un numero finito di passi | (inform.) serie di operazioni logiche e algebriche, espresse in linguaggio comprensibile all'elaboratore, la cui sequenza costituisce un programma.

Fonte: Dizionario Garzanti on-line (http://www.garzantilinguistica.it)

Page 8: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

8

Laboratorio di Informatica AA 2007/2008

15

Algoritmo

Definizione di algoritmo:• un insieme ordinato• di passi eseguibili• e non ambigui• che determinano un procedimento atto a risolvere un

problema o una classe di problemi• utilizzando dati iniziali e ottenendo dei risultati• in un tempo finito.

La descrizione rigorosa di un metodo che consente di ottenere un risultato attraverso passi elementari si chiama algoritmo.

Laboratorio di Informatica AA 2007/2008

16

AlgoritmoEsempi:• gli algoritmi per eseguire le 4 operazioni che

ci sono stati insegnati alle elementari– in un linguaggio adatto ai bambini

• la ricetta per fare le lasagne– linguaggio dei libri di cucina

• livello di dettaglio diverso a seconda delle competenze dell’esecutore ( linguaggi a basso / alto livello).

• Att.ne! L’algoritmo è indipendente dal linguaggio nel quale viene espresso!

Page 9: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

9

Laboratorio di Informatica AA 2007/2008

17

Esempi di algoritmi

Algoritmo per accedere a un PC del laboratorio• Accendere lo schermo se è spento• Scrivere il proprio <username> nella riga in

cui compare la scritta login:• Scrivere la propria <password> nella riga in

cui compare la scritta password• Se il sistema risponde con la frase: «utente

non abilitato», chiamare il tutor

Laboratorio di Informatica AA 2007/2008

18

Esempi di algoritmi (2)

12317 753 175941674

Page 10: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

10

Laboratorio di Informatica AA 2007/2008

19

Esempi di algoritmi (3)

Laboratorio di Informatica AA 2007/2008

20

Linguaggio e algoritmo

• Att.ne! Il linguaggio con cui è espresso l’algoritmo non fa parte dell’algoritmo!

• Es. l’algoritmo per effettuare la somma tra due numeri è lo stesso sia in inglese che in italiano… Ciò che cambia è la rappresentazione dell’algoritmo, non l’algoritmo!

Page 11: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

11

Laboratorio di Informatica AA 2007/2008

21

Elaborazione di informazioneAnalisi del problema

Individuazione dell’algoritmoScrittura del programma

Intepretazione del programma

Esecuzione del programma

Risultato

Dati

Ambito scientifico del problema

Programmazione

Calcolatore

Laboratorio di Informatica AA 2007/2008

22

Linguaggio

Un linguaggio è costituito da:• un vocabolario;• una sintassi, cioè un insieme di regole che

specificano come comporre i vocaboli per ottenere costrutti ben formati (sintatticamente corretti);

• una semantica, che associa un significatoad ogni costrutto linguistico sintatticamente corretto.

Page 12: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

12

Laboratorio di Informatica AA 2007/2008

23

Sintassi e semantica

Girare la carta

Un lato grigio Distinguere tra i due lati

Piegare a monte

Piegare a valle

Ripiegare

Piegare internamente produce

produce

rappresenta

rappresenta

Sintassi Semantica Esempi

Laboratorio di Informatica AA 2007/2008

24

Elaborazione di informazioneAnalisi del problema

Individuazione dell’algoritmoScrittura del programma

Intepretazione del programma

Esecuzione del programma

Risultato

Dati

Ambito scientifico del problema

Programmazione

Calcolatore

Page 13: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

13

Laboratorio di Informatica AA 2007/2008

25

Esecutore di algoritmi

Un esecutore è un soggetto in grado di attuare le azioni specificate in un algoritmo

• Nei casi esemplificati, noi

Laboratorio di Informatica AA 2007/2008

26

Esecutore di algoritmi

Un esecutore è quindi caratterizzato da:• il linguaggio che è in grado di interpretare• l’insieme di azioni che è in grado di

compiere• l’insieme delle regole che ad ogni costrutto

linguistico sintatticamente corretto associano le relative azioni da compiere.

Page 14: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

14

Laboratorio di Informatica AA 2007/2008

27

Esecutore di algoritmiA seconda dell’insieme delle azioni, differenti

esecutori possono usare algoritmi diversi per risolvere uno stesso problema

• Nel caso della divisione, un computer NON userebbe l’algoritmo proposto nell’esempio!

• Es. algoritmo per spostarsi avanti di un metro:– muovi le gambe per un esecutore umano;– muovi le ruote per un robot.– CPU diverse possono utilizzare operazioni elementari

diverse per eseguire semplici istruzioni! (es. utilizzano algoritmi diversi per la somma)

Laboratorio di Informatica AA 2007/2008

28

Elaborazione di informazioneAnalisi del problema

Individuazione dell’algoritmoScrittura del programma

Intepretazione del programma

Esecuzione del programma

Risultato

Dati

Ambito scientifico del problema

Programmazione

Calcolatore

Page 15: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

15

Laboratorio di Informatica AA 2007/2008

29

Programmi• I programmi sono sequenze finite di

istruzioni, ognuna scritta in un fissato linguaggio (di programmazione)

• I programmi eseguibili da un computer devono essere scritti usando un linguaggio che il computer è in grado di “comprendere”.

Laboratorio di Informatica AA 2007/2008

30

Programmi e algoritmiUn algoritmo può essere quindi specificato sottoforma

di programma eseguibile da un calcolatore.

Att.ne! Programma e algoritmo sono concetti diversi!

Algoritmo = concetto astratto;Programma = sequenza finita di istruzioni in un

determinato linguaggio… Può essere la rappresentazione di un algoritmo… Ma la sequenza di operazioni può anche non terminare in un tempo finito!

Page 16: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

16

Laboratorio di Informatica AA 2007/2008

31

Linguaggi di programmazioneUn linguaggio di programmazione è

costituito da:• un vocabolario• un insieme di regole sintattiche che

specificano come comporre istruzioni ben formate

• una semantica che associa un “significato” alle istruzioni ben formate, cioè l’azione denotata da ciascuna istruzione.

Laboratorio di Informatica AA 2007/2008

32

Linguaggi di programmazione

• Rispetto ad una qualsiasi lingua parlata da esseri umani, un linguaggio di programmazione è molto più semplice, perché la sua sintassi è molto semplice.

• La teoria dei linguaggi formali fornisce una classificazione dei linguaggi in base alla loro “semplicità”.

Page 17: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

17

Laboratorio di Informatica AA 2007/2008

33

Linguaggi di basso livello• Linguaggi di programmazione le cui istruzioni

corrispondono ad azioni molto elementari. Richiedono uno sforzo di codifica maggiore da parte di un programmatore.

Laboratorio di Informatica AA 2007/2008

34

Linguaggi di alto livello• Linguaggi di programmazione alle cui

istruzioni corrisponde un insieme di azioni piùarticolato. Richiedono uno sforzo di codifica inferiore da parte di un programmatore.

Page 18: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

18

Laboratorio di Informatica AA 2007/2008

35

EsempioIl linguaggio L1 mette a disposizione i comandi:

• Aggiungi_una_unità al dato A• Leggi dato A• Leggi dato B• Esegui per <numero di volte>

Laboratorio di Informatica AA 2007/2008

36

EsempioIl linguaggio L2 mette a disposizione i comandi:

• Leggi dato A• Leggi dato B• Somma <addendo1, addendo2>

Page 19: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

19

Laboratorio di Informatica AA 2007/2008

37

Esempio (2)

In L1• Leggi dato A• Leggi dato B• Esegui per B volte:

Aggiungi _una_unità al dato A

In L2• Leggi dato A• Leggi dato B• Somma (A, B)

Vogliamo scrivere un programma per sommare due numeri A e B:

Laboratorio di Informatica AA 2007/2008

38

Esempio (3)• L2 è un linguaggio di livello più alto rispetto a

L1, perché offre al programmatore la possibilità di usare istruzioni che sono meno “vicine” al modo in cui lavora il processore e più vicine al modo in cui lavoriamo noi.

Page 20: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

20

Laboratorio di Informatica AA 2007/2008

39

Esempio (4)Basso livello

• “preleva dalla memoria il contenuto della cella A e mettilo nel registro AA della CPU”;

• “preleva dalla memoria il contenuto della cella B e mettilo nel registro BB della CPU”;

• “Somma i registri AA e BB e metti il risultato nel registro CC della CPU”;

• “Copia in memoria il registro CC della CPU, in posizione C”.

Alto livello

• C = A + B.

Laboratorio di Informatica AA 2007/2008

40

Linguaggio macchina

• Il processore è in grado di riconoscere (e quindi di eseguire) solo programmi scritti in un proprio linguaggio di basso livello (linguaggio macchina).

• Ogni modello di processore (es: Intel, Pentium, Motorola, PowerPC) ha un proprio linguaggio macchina diverso da quello degli altri processori.

Page 21: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

21

Laboratorio di Informatica AA 2007/2008

41

Linugaggio macchina – diversi processori

• Un processore di tipo A ha N registri;• Un processore di tipo B ha M>N registri;• Per il processore A, ogni istruzione che

utilizza i registri da N+1 a M non ha senso!

• Anche la sintassi o l’insieme di istruzioni del linguaggio possono essere diverse.

Laboratorio di Informatica AA 2007/2008

42

Linugaggio macchina – diversi processori

• Un processore di tipo A implementa direttamente la funzione “prodotto”;

• Un processore di tipo B implementa l’operazione “somma” ma non l’operazione “prodotto”;

• Per il processore B, non è disponibile l’operazione “prodotto” nel linguaggio a basso livello!

• L’insieme di istruzioni del linguaggio macchina sono diverse per A e B.

• Il processore B potrà essere utilizzato per fare dei prodotti utilizzando un ciclo e l’operazione “somma”.

Page 22: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

22

Laboratorio di Informatica AA 2007/2008

43

Linguaggi di alto livello• Un programma scritto in un linguaggio diverso dal

linguaggio macchina deve essere quindi tradotto nel linguaggio che il processore sa riconoscere

• I soggetti preposti a questa traduzione sono a loro volta dei programmi (interpreti e compilatori)

• Compilatore traduce un programma per intero, poi il programma può essere eseguito (es. programmazione in C, compilatore Microsoft);

• Inerprete traduce ed esegue un’istruzione immediatamente (es. Matlab).

Laboratorio di Informatica AA 2007/2008

44

Interpreti e compilatori

Programma (istruzione) in linguaggio ad alto livello

Processore Intel

Processore Athlon

Processore Motorola

Interprete o compilatore

Programma (istruzione) in linguaggio macchina Intel

Programma (istruzione) in linguaggio macchina Athlon

Programma (istruzione) in linguaggio macchina Motorola

Page 23: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

23

Laboratorio di Informatica AA 2007/2008

45

Un confronto

LinguaggiomacchinaLinguaggidi alto livello

Velocità Portabilità Complessità

Laboratorio di Informatica AA 2007/2008

46

Una nota sulla velocità• Molti linguaggi di alto livello vengono tradotti

in linguaggio macchina da un apposito traduttore (detto compilatore), ottenendo in questo modo delle ottime prestazioni anche in termini di velocità

• Esempi: C, PASCAL• JAVA si trova a metà strada

Page 24: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

24

Laboratorio di Informatica AA 2007/2008

47

Elaborazione di informazioneAnalisi del problema

Individuazione dell’algoritmoScrittura del programma

Intepretazione del programma

Esecuzione del programma

Risultato

Dati

Ambito scientifico del problema

Programmazione

Calcolatore

Laboratorio di Informatica AA 2007/2008

48

Dal problema al programma

• Per costruire un programma conviene procedere con metodo, – passando da un’analisi del problema da

risolvere – all’algoritmo di soluzione rappresentato

in un “linguaggio” adatto all’uomo ma non troppo lontano dai linguaggi di programmazione

– e infine al programma scritto nel linguaggio di programmazione prescelto

Page 25: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

25

Laboratorio di Informatica AA 2007/2008

49

Dal problema al programmaRiassumendo, il processo di sviluppo di un

programma prevede le seguenti fasi:– analisi del problema e specificazione dei dati in

ingresso e in uscita;– identificazione e formalizzazione di una soluzione,

definizione dell’algoritmo risolutivo;– programmazione in un linguaggio di

programmazione “ad alto livello”;– traduzione in linguaggio macchina;– verifica (testing).

Laboratorio di Informatica AA 2007/2008

50

Dal problema al programmaApproccio top-down alla progettazione:• si parte da una descrizione ad alto livello della soluzione, in cui

si individuano sotto-problemi• si definiscono le soluzioni dei sotto-problemi in termini di

operazioni più elementari• … e così via, fino ad esprimere tutto in termini di problemi

elementari.

[Programmazione bottom-up – meno intuitiva si parte dalla risoluzione dei singoli sottoproblemi, si assemblano poi le soluzioni dei sottoproblemi per arrivare alla soluzione di problemi più grandi – es. sviluppo di librerie]

Page 26: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

26

Laboratorio di Informatica AA 2007/2008

51

Dal problema al programma

Due aspetti da gestire:• i dati da utilizzare• la successione di operazioni da compiere

Laboratorio di Informatica AA 2007/2008

52

Dal problema al programma• introdurremo la nozione di contenitore di

dati come astrazione dalla nozione di zona della memoria utilizzata da un computer per i dati

• introdurremo i principali tipi di istruzioni• descriveremo gli algoritmi mediante

diagrammi di flusso, strumento per descrivere una successione di operazioniadatto all’uomo e orientato alla traduzione in un linguaggio di programmazione

Page 27: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

27

Laboratorio di Informatica AA 2007/2008

53

Processo di sviluppo di un algoritmo orientato alla programmazione

• Descriveremo i passi da seguire nella costruzione di un algoritmo, intesa come passo preliminare alla costruzione di un corrispondente programma.

• Il processo delineato è adatto alla programmazione in piccolo– programmazione in piccolo = costruzione di

programmi di dimensioni trattabili da un singolo programmatore

• La programmazione in grande richiede processi di sviluppo ingegnerizzati, che non tratteremo.

Laboratorio di Informatica AA 2007/2008

54

I contenitori di datiUn contenitore dati

– è un’astrazione della nozione di area di memoria contenente dei dati,

– è detto anche variabile di programma.• Un contenitore dati ha un tipo, che caratterizza

– un insieme di elementi, cioè l’insieme dei valori ammessi per quel contenitore

– le operazioni possibili su di essi– Es.: tipo intero (32 bit per ogni variabile)

• insieme: insieme dei numeri interi rappresentabili• operazioni: +, -, *, /, ecc.

Page 28: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

28

Laboratorio di Informatica AA 2007/2008

55

I contenitori di dati

• Es. tipo BYTE• Occupazione in memoria: 1 byte per

variabile• Operazioni possibili: +, -, (attenzione

all’overflow!), >, <, ==, *, / (con approssimazioni!)

• Numeri da 0 a 255– 0 [00000000]– 255 [11111111]

Laboratorio di Informatica AA 2007/2008

56

I contenitori di dati

• Es. tipo BOOLEAN• Occupazione in memoria: 1 byte per

variabile• TRUE o FALSE

– 0 [00000000] –> FALSE– Qualsiasi altra rappresentazione TRUE

• Operazioni possibili: AND, OR, XOR, NOT… Non è possibile eseguire * o /!

Page 29: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

29

Laboratorio di Informatica AA 2007/2008

57

Rappresentazione grafica dei contenitori di dati

Nome del contenitore: pippotipo : intero

Contenuto = dato(appartenete al tipo di dati associato al nome, infatti54 è un numero intero, e su di esso sono ammesse le usuali operazioni aritmetiche)

pippo: intero54

Laboratorio di Informatica AA 2007/2008

58

I contenitori di dati• I linguaggi di programmazione ad alto livello (ma

anche Excel e Access) prevedono la tipizzazione dei dati.

• I dati possono essere di tipo semplice, cioè con un solo valore, ed i tipi comunemente previsti sono:– Intero

• Es.: -158 0 32– Reale

• Es.: 1,414213562373 -56,133– Logico

• vero / falso– Testo

• Es.: a, pippo, Mario_Rossi, casa

Page 30: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

30

Laboratorio di Informatica AA 2007/2008

59

I contenitori di dati• I dati possono essere di tipo strutturato, cioè

contenenti più valori, ad esempio:– vettori e matrici (strutture uniformi, cioè più

valori dello stesso tipo)• Es.: vettore di interi [2,5,7,3,12,43]

– record (strutture non uniformi, cioè più valori non necessariamente dello stesso tipo)

• Es.: studentecognome : caratteri Rossinome : caratteri Mariomatricola : intero 656565…. ….

Laboratorio di Informatica AA 2007/2008

60

Istruzioni

• Tre categorie:– istruzioni di ingresso e uscita (lettura e

scrittura)– istruzioni aritmetico-logiche (assegnamento)– istruzioni di controllo (selezione, iterazione)

Page 31: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

31

Laboratorio di Informatica AA 2007/2008

61

Istruzioni• Le istruzioni di ingresso / uscita permettono di

acquisire dati e di presentare risultati

Esempi:• read a

– acquisisci un dato da tastiera e mettilo nel contenitore ‘a’

• print 'La media dei valori dati in ingresso è ', media– stampa il contenuto di ‘media’ preceduto da un

commento

Laboratorio di Informatica AA 2007/2008

62

Istruzioni• Le istruzione di assegnamento modificano lo

stato di memoria, cioè i valori dei contenitori dati (detti variabili). Sono della forma:– CONTENITORE = ESPRESSIONE – (leggi: metti ESPRESSIONE in CONTENITORE)

• Es.: a = b + 3

– ESPRESSIONE può essere: una costante, una variabile, un’espressione vera e propria, una funzione

– CONTENITORE è il nome di una variabile– l’esecutore valuta l’ESPRESSIONE e mette il valore

così calcolato in CONTENITORE, sostituendone il valore precedente.

Page 32: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

32

Laboratorio di Informatica AA 2007/2008

63

Espressioni• Le espressioni aritmetiche esprimono calcoli

numerici– somma, sottrazione, prodotto divisione– elevamento a potenza, radice, logaritmo,

esponenziale, ecc.• Es.: b**2 – 4 * a * c

• Le espressioni sui caratteri modificano parole e testi.– concatenazione

• Es.: moto&sega (risultato: motosega)– …

Laboratorio di Informatica AA 2007/2008

64

Espressioni• Le espressioni logiche (o booleane)

esprimono calcoli logici e possono quindi assumere solo i valori vero o falso. – Operatori logici relazionali: confronto fra due valori,

ad esempio• x < y• (x + 5) = y• ecc.

– Operatori logici AND, OR, NOT, ecc. per comporre, ad es.:

• (x < y) AND (y < z)• Un valore booleano (vero, falso) è

rappresentabile con un bit. Convenzionalmente si assegna 1 a vero, 0 a falso.

Page 33: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

33

Laboratorio di Informatica AA 2007/2008

65

Espressioni

• Le espressioni di tipo booleano assumono particolare importanza perché, usate nelle istruzioni di controllo, ci permettono di prendere delle decisioni.

Laboratorio di Informatica AA 2007/2008

66

Istruzioni• Le istruzioni di controllo permettono di

modificare il flusso di esecuzione delle istruzioni all’interno di un programma, altrimenti puramente sequenziale.– Selezione

• if, case, ...– Iterazione

• while, repeat• for

• Si basano sull’uso di espressioni booleane– Es. se x > 0, calcola la radice quadrata di x

Page 34: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

34

Laboratorio di Informatica AA 2007/2008

67

Diagrammi di flusso

metti x+y in y metti x-1 in x

• Blocchi di elaborazione: contengono sequenze di azioni

Laboratorio di Informatica AA 2007/2008

68

Diagrammi di flusso

x = 0vero falso

• Blocchi decisionali: contengono una condizione booleana; se vera, si segue la freccia vero, se falsa si segue la freccia falso.

Page 35: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

35

Laboratorio di Informatica AA 2007/2008

69

Diagrammi di flusso

• Un diagramma di flusso si ottiene collegando le frecce uscenti dai blocchi di elaborazione e decisionali.

Laboratorio di Informatica AA 2007/2008

70

Simboli principali

• inizio o fine

• elaborazione

• decisione

• connessione

Page 36: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

36

Laboratorio di Informatica AA 2007/2008

71

Strutture di controllo principali

sequenza

Laboratorio di Informatica AA 2007/2008

72

Strutture di controllo principali

selezionefalsovero

Page 37: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

37

Laboratorio di Informatica AA 2007/2008

73

Strutture di controllo principali

Iterazione(sequenza +selezione)

vero

falso

Laboratorio di Informatica AA 2007/2008

74

EsempioInizio

Acquisisci a

a<0?

b = sqrt (a)

NO

SI’

Scrivi: “la radice di a è <b>”

Fine

Function RadiceQuadrata;

Real a,b; // Si alloca spazio in memoria per a, b

Repeat

Display(‘Dammi a’);

read a;

Until (a>=0)

b=sqrt(a);

Display(‘La radice di a è: <b>’)

end

Page 38: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

38

Laboratorio di Informatica AA 2007/2008

75

Esempio di decomposizione modulare

Laboratorio di Informatica AA 2007/2008

76

Esempio di programma strutturato

programma principale

procedura

chiamata di procedura

Page 39: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

39

Laboratorio di Informatica AA 2007/2008

77

Paradigmi di programmazione• Programmazione Traduzione da diagramma di flusso (o da altra

rappresentazione ad altissimo livello!) a linguaggio di programmazione.• Esistono diversi paradigmi di programmazione… Approfondiamo la

programmazione procedurale:– Basato su moduli (funzioni) che permettono di elaborare dei dati fornendo dei

risultati;– Le funzioni possono essere incapsulate l’una dentro l’altra.

• Es. Altro paradigma di programmazione: ad oggetti– si creano degli oggetti caratterizzati da uno stato e da alcune attività

caratteristiche;– L’interazione tra oggetti fa avanzare il programma.– Es. oggetto panettiere;

• Possibili stati: dietro al bancone, al forno…• Attività caratteristiche: cuocere il pane, emettere scontrino, …

– Oggetto ‘consumatore’• Possibili stati: al lavoro, a fare shopping,…• Attività caratteristiche: acquista pane, …

Laboratorio di Informatica AA 2007/2008

78

Introduzione alla programmazione procedurale

Moduli funzioniUna funzione permette di elaborare i dati, può

avere una serie di input (variabili di ingresso) e di output (variabili di uscita);

Input dati da elaborare;Output risultati.

Esempio:[Quoziente, Resto] = DivisioneIntera (Dividendo, Divisore)

Page 40: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

40

Laboratorio di Informatica AA 2007/2008

79

Introduzione alla programmazione procedurale

Implementazione di: [Quoziente, Resto] = DivisioneIntera(Dividendo, Divisore), notazione Matlab.

[Quoziente, Resto] = function DivisioneIntera (Dividendo, Divisore);Quoziente = div (Dividendo, Divisore);Resto = mod (Dividendo, Divisore);return;

Parole chiave (function, return), caratteristiche del lingugaggio di programmazione.function dichiarazione di una funzione;return per terminare l’esecuzione della funzione (può essere omesso).

Laboratorio di Informatica AA 2007/2008

80

Introduzione alla programmazione procedurale

[Quoziente, Resto] = function DivisioneIntera (Dividendo, Divisore);

• La prima riga contiene la dichiarazione della funzione. Nella dichiarazione viene utilizzata la parola chiave function, che specifica che si sta effettuando una dichiarazione di funzione;

• E’ necessario dichiarare una funzione per poterla utilizzare in seguito;

• Tutte le istruzioni terminano con ‘;’.

Page 41: Algoritmi, dati e programmi - person.dibris.unige.it · ottenere un risultato attraverso passi elementari si chiama algoritmo. Laboratorio di Informatica AA 2007/2008 16 Algoritmo

41

Laboratorio di Informatica AA 2007/2008

81

Introduzione alla programmazione procedurale

Quoziente = div (Dividendo, Divisore);Resto = mod (Dividendo, Divisore);

• Elaborazione dei dati.• Per dichiarare una funzione, la sintassi è data da:

– [Output1, Output2, … OutputN] = function Funzione (Input1, Input2, …input);

• Per utilizzare una funzione, la sintassi è data da:– [Output1, Output2, … OutputN] = Funzione (Input1, Input2, … input);

• E’ comodo creare una libreria di funzioni, perché ciascuna funzione può essere utilizzata da altre funzioni quando necessario (programmazione modulare – ogni funzione è un modulo da riutilizzare).

Laboratorio di Informatica AA 2007/2008

82

Introduzione alla programmazione procedurale

return;

• Infine, la quarta e ultima riga termina l’esecuzione della funzione mediante la parole chiave return (opzionale in Matlab).