INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf ·...

33
INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08 prof. Paolo Mancarella 1 Dipartimento di Informatica email: [email protected] prof. P. Mancarella Dip.to Informatica INFORMATICA 1 a.a. 07/08 pag. 1

Transcript of INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf ·...

Page 1: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

INFORMATICA 1Corso di Laurea in Fisica

a.a. 2007/08

prof. Paolo Mancarella

1Dipartimento di Informaticaemail: [email protected]

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 1

Page 2: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Introduzione al corso Informazioni utili

Informazioni utiliI Ricevimento studenti: MERCOLEDI’ 15-18I email: [email protected] Materiale didattico: questi lucidi

pagina web corso:http://www.di.unipi.it/∼paolo/Informatica1/Testi consigliati per consultazione:

I Ceri-Mandrioli-SbattellaInformatica: programmazioneMcGraw-Hill

I Kelley-PohlC: didattica e programmazioneAddison Wesley

I Crescenzi-Gambosi-GrossiStrutture di dati e algoritmiAddisonWesley

I Modalita d’esameProva scritta (o due compitini)Prova orale (con voto >= 16 allo scritto)

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 2

Page 3: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Introduzione al corso Programma di massima del corso

Programma di massima del corso

I Concetti di base della programmazione

I Rappresentazione dell’informazione (cenni)

I Architettura degli elaboratori (cenni)

I La programmazione nel linguaggio C

I Cenni di programmazione ricorsiva

I Cenni di complessita computazionale

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 3

Page 4: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Cosa e?

Cosa intendiamo per programmazione

I I calcolatori sono macchine in grado di eseguire velocemente e conprecisione sequenze di operazioni elementari.

I A differenza di altre macchine automatiche (es. lavatrici, calcolatricitascabili, registratori di cassa, ecc.) i calcolatori sono programmabili:la funzione svolta di volta in volta dipende dal particolare programmacon cui l’utente istruisce la macchina per la soluzione di un problema.

I Un programma e una sequenza di operazioni necessarie per risolvereun problema, espressa in un linguaggio di programmazione che ilcalcolatore e in grado di comprendere ed eseguire.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 4

Page 5: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Cosa e?

Cosa intendiamo per programmazione

I Il procedimento che porta alla definizione dei programmi adatti arisolvere problemi e detto programmazione.

I I concetti che stanno alla base della programmazione si possonospiegare e comprendere senza far riferimento al calcolatore.

I La programmazione e tuttavia divenuta una vera e propria disciplinasolo con l’avvento dei moderni calcolatori elettronici.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 5

Page 6: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Le fasi della programmazione

Ad un primo livello di astrazione l’attivita della programmazione puoessere suddivisa in quattro (macro) fasi principali.

1. Definizione del problema (specifica)

2. Individuazione di un procedimento risolutivo (algoritmo)

3. Codifica dell’algoritmo in un linguaggio di programmazione (codifica)

4. Esecuzione e messa a punto (esecuzione)

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 6

Page 7: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Specifica

I La prima fase della programmazione consiste nel comprendere edefinire (specificare) il problema che si vuole risolvere.

I La specifica del problema puo essere fatta in maniera piu o menorigorosa, a seconda del formalismo descrittivo utilizzato.

I La specifica di un problema prevede la descrizione dello stato inizialedel problema (dati iniziali, input) e dello stato finale atteso (i risultati,output).

I La caratterizzazione degli stati iniziale e finale dipende dal particolareproblema in esame e dagli oggetti di interesse.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 7

Page 8: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Esempi di specifica informale

1. Dati due numeri, trovare il maggiore.

2. Dato un elenco telefonico e un nome, trovare il numero di telefonocorrispondente.

3. Data la struttura di una rete stradale e le informazioni sui flussi deiveicoli, determinare il percorso piu veloce da A a B.

4. Scrivere tutti i numeri pari che non sono la somma di due numeriprimi (Congettura di Goldbach).

5. Decidere per ogni programma e per ogni dato in ingresso, se ilprogramma C termina quando viene eseguito su quel dato.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 8

Page 9: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Esempi (contd.)

Caratteristiche comuni ai problemi

informazioni in ingresso =⇒ informazioni in uscitastato iniziale =⇒ stato finale

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 9

Page 10: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Osservazioni sulla formulazione dei problemi:

I la descrizione non fornisce un metodo risolutivo (es. 3 )

I la descrizione del problema e talvolta ambigua o imprecisa (es. 2, conMario Rossi che compare piu volte )

I per alcuni problemi non e noto un metodo risolutivo (es. 4 )

I esistono problemi per i quali e stato dimostrato che non puo esistereun metodo risolutivo (es. 5 )�

��

Noi considereremo solo problemi per i qualie noto che esiste un metodo risolutivo.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 10

Page 11: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Algoritmi

I Una volta specificato il problema, si determina un procedimentorisolutivo dello stesso (algoritmo), ovvero un insieme di azioni daintraprendere per ottenere i risultati attesi.

I Il concetto di algoritmo ha origini molto lontane: l’uomo ha utilizzatospesso algoritmi per risolvere problemi di varia natura. Solo in eramoderna, tuttavia, ci si e posti il problema di caratterizzare problemie classi di problemi per i quali e possibile individuare una soluzionealgoritmica e solo nel secolo scorso e stato dimostrato che esistonoproblemi per i quali non e possibile individuare una soluzionealgoritmica.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 11

Page 12: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Algoritmi (cont.)

I Utilizziamo algoritmi nella vita quotidiana tutte le volte che, adesempio, seguiamo le istruzioni per il montaggio di unaapparecchiatura, per la sostituzione della cartuccia di una stampante,per impostare il ciclo di lavaggio di una lavastoviglie, per prelevarecontante da uno sportello Bancomat, ecc.

��

��

Un algoritmo e una sequenza di passi che, se intrapresada un esecutore, permette di ottenere i risultati attesi

a partire dai dati forniti.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 12

Page 13: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Proprieta di un algoritmo

La descrizione di un procedimento risolutivo puo considerarsi unalgoritmo se rispetta alcuni requisiti essenziali, tra i quali:

Finitezza: un algoritmo deve essere composto da una sequenzafinita di passi elementari.

Eseguibilita: il potenziale esecutore deve essere in grado di eseguireogni singola azione in tempo finito con le risorse adisposizione

Non-ambiguita: l’esecutore deve poter interpretare in modo univocoogni singola azione.

Tipici procedimenti che non rispettano alcuni dei requisiti precedentisono:

I le ricette di cucina: aggiungere sale q.b. - non rispetta 3)I le istruzioni per la compilazione della dichiarazione dei redditi (!)

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 13

Page 14: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Codifica

I Questa fase consiste nell’individuare una rappresentazione deglioggetti di interesse del problema ed una descrizione dell’algoritmo inun opportuno linguaggio noto all’esecutore.

I Nel caso in cui si intenda far uso di un elaboratore per l’esecuzionedell’algoritmo, quest’ultimo deve essere tradotto (codificato) in unopportuno linguaggio di programmazione. Il risultato in questo caso eun programma eseguibile al calcolatore.

I Quanto piu il linguaggio di descrizione dell’algoritmo e vicino allinguaggio di programmazione scelto, tanto piu semplice e la fase ditraduzione e codifica. Se addirittura il linguaggio di descrizionecoincide con il linguaggio di programmazione, la fase di traduzione esuperflua.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 14

Page 15: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Codifica (cont.)

I linguaggi di programmazione forniscono strumenti linguistici perrappresentare gli algoritmi sottoforma di programmi che possanoessere compresi da un calcolatore.

In particolare dobbiamo rappresentare nel linguaggio diprogrammazione

I l’algoritmo

I le informazioni iniziali

I le informazioni utilizzatedall’algoritmo

I le informazioni finali

=⇒ programma

=⇒ dati in ingresso

=⇒ dati ausiliari

=⇒ dati in uscita

In questo corso impareremo a codificare algoritmi utilizzando illinguaggio di programmazione denominato C.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 15

Page 16: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Esecuzione

I La fase conclusiva consiste nell’esecuzione vera e propria delprogramma.

I Spesso questa fase porta alla luce errori che possono coinvolgereciascuna delle fasi precedenti, innescando un procedimento di messa apunto tale da richiedere la revisione di una o piu fasi (dalla specifica,alla definizione dell’algoritmo, alla codifica di quest’ultimo).

I Nel caso dei linguaggi di programmazione moderni, vengono fornitistrumenti (denominati di solito debugger) che aiutano nellaindividuazione degli errori e nella messa a punto dei programmi.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 16

Page 17: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Esempi

Negli esempi che seguono, utilizziamo un linguaggio pseudo-naturale perla descrizione degli algoritmi.

Tale linguaggio utilizza, tra l’altro, le comuni rappresentazioni simbolichedei numeri e delle operazioni aritmetiche.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 17

Page 18: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Problema 1: Calcolo del prodotto di due interi positivi

SpecificaInput: due valori interi positivi A e BOutput: il valore di A×B

AlgoritmoSe l’esecutore che scegliamo e in grado di effettuare tutte leoperazioni di base sui numeri, un semplice algoritmo e il seguente:

Passo 1. Acquisisci il primo valore, sia esso APasso 2. Acquisisci il secondo valore, sia esso BPasso 3. Ottieni il risultato dell’operazione A×B

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 18

Page 19: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Problema 1 (cont.)

CodificaUn esecutore che rispetta le ipotesi precedenti e una persona dotatadi una calcolatrice tascabile. La codifica dell’algoritmo in questo casopuo essere allora la seguente:

Passo 1. Digita in sequenza le cifre decimali del primo valorePasso 2. Digita il tasto ∗Passo 3. Digita in sequenza le cifre decimali del secondo valorePasso 4. Digita il tasto =

Esecuzione

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 19

Page 20: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Problema 1 (cont.)

I Supponiamo ora che l’esecutore scelto sia in grado di effettuare solole operazioni elementari di somma, sottrazione, confronto tra numeri.

I E necessario individuare un nuovo procedimento risolutivo che tengaconto delle limitate capacita dell’esecutore

Algoritmo 2Passo 1. Acquisisci il primo valore, sia esso APasso 2. Acquisisci il secondo valore, sia esso BPasso 3. Associa 0 ad un terzo valore, sia esso CPasso 4. Finche B>0 ripeti

Passo 4.1. Somma a C il valore APasso 4.2. Sottrai a B il valore 1

Passo 5. Il risultato e il valore C

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 20

Page 21: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Le fasi della programmazione

Problema 1: (cont.)

Un esecutore che rispetta le ipotesi precedenti e un bimbo in grado dieffettuare le operazioni richieste (somma, sottrazione e confronto) e diriportare i risultati di semplici calcoli su un quaderno.Codifica

Passo 1. Scrivi il primo numero nel riquadro APasso 2. Scrivi il secondo numero nel riquadro BPasso 3. Scrivi il valore 0 nel riquadro CPasso 4. Ripeti i seguenti passi finche il valore nel

riquadro B e maggiore di 0:- calcola la somma tra il valore in A e il valore in C- scrivi il risultato ottenuto in C- calcola la differenza tra il valore in B ed il numero 1- scrivi il risultato ottenuto in B

Passo 5. Il risultato e quanto contenuto nel riquadro C.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 21

Page 22: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Il concetto di stato

Il concetto di stato

Gli esempi visti finora consentono di fare le seguenti considerazioni dicarattere generale:

I La specifica (astratta) di un problema consiste nella descrizione diuno stato iniziale (che descrive i dati del problema) e di uno statofinale (che descrive i risultati attesi).

I E necessario individuare una rappresentazione degli oggetti coinvolti(e dunque dello stato) che sia direttamente manipolabiledall’esecutore prescelto.

I Un algoritmo e una sequenza di passi elementari che, se intrapresi daun esecutore, comportano ripetute modifiche dello stato fino alraggiungimento dello stato finale desiderato.

I Le azioni di base che l’esecutore e in grado di effettuare devonodunque prevedere, tra le altre, azioni che hanno come effettocambiamenti dello stato.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 22

Page 23: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Il concetto di stato

Un’astrazione dello stato

Introduciamo una possibile astrazione del concetto di stato, di cui faremospesso uso in seguito.

Stato

Uno stato e un insieme di associazioni tra nomi simbolici e valori.

In uno stato, ad ogni nome simbolico e associato al piu un valore.

Rappresentiamo una associazione tra il nome simbolico x ed il valore valcon la notazione �� ��x val

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 23

Page 24: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Il concetto di stato

Lo stato: esempi

Stati correttiI {nome Antonio, cognome Rossi, eta’ 25}I {importo $1650, tasso 10%, interesse $165 }I {a 25, b 3, c 50}

Stati non correttiI {nome Antonio, nome Paolo, eta’ 25}I {b 45, a 150, b 10}

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 24

Page 25: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Pseudo-linguaggio

I Utilizziamo inizialmente uno pseudo-linguaggio con un insieme dicostrutti linguistici che costituiscono il nucleo di un qualunquelinguaggio di programmazione reale.

I Senza entrare in eccessivi dettagli formali, nel presentare le notazioniutilizzate (sintassi) diamo anche una descrizione informale(semantica) di cio che accade al momento dell’esecuzione incorrispondenza dei vari costrutti.

Il linguaggio contiene costrutti per:

I rappresentare semplici calcoli attraverso le comuni operazionilogico/aritmetiche (espressioni)

I modificare le associazioni nello stato (assegnamento e ingresso)

I controllare l’ordine di esecuzione delle azioni (controllo)

I fornire i risultati (produzione in uscita dello stato finale)

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 25

Page 26: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Espressioni

Espressioni NumericheIl linguaggio consente di rappresentare semplici calcoli algebrici,attraverso le usuali espressioni costruite a partire dai valori numerici edalle operazioni di

somma +sottrazione -prodotto *divisione intera /resto della divisione intera %.

Il significato di un’espressione e il suo valore ottenuto secondo leusuali regole di calcolo.Esempio:

il valore di 3 ∗ 5 + 6 e 21il valore di 3 ∗ (5 + 6) e 33

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 26

Page 27: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Espressioni (cont.)

Oltre ai valori numerici, le espressioni possono contenere nomi simbolici: ilcalcolo di un’espressione che contiene un nome simbolico x dipende dallostato, e precisamente dal valore associato al nome x nello stato.

Esempio:il valore di 3 ∗ (5 + x) e

I 33 in uno stato che contiene l’associazione x 6

I 18 in uno stato che contiene l’associazione x 1

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 27

Page 28: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Espressioni (cont.)

Espressioni BooleaneIl linguaggio consente poi di rappresentare condizioni ovveroespressioni il cui valore e un valore di verita (true o false).

Le condizioni sono costruite attraverso le usuali operazioni diconfronto (==, ! =, <, >, <=, >=) e, come nel caso delleespressioni aritmetiche, il loro valore puo dipendere dallo stato.Esempio: il valore di y==x+1 e

I true in uno stato che contiene le associazioni x 5 e y 6I false in uno stato che contiene le associazioni x 5 e y 9

Condizioni piu complesse possono essere costruite attraversooperatori logici quali negazione (simbolo !), congiunzione (simbolo&&) e disgiunzione (simbolo ||).

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 28

Page 29: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Espressioni (cont.)

I Significato di ! - il valore di verita di ! P eI true se il valore di verita di P e falseI false se il valore di verita di P e true

I Significato di && - il valore di verita di P && Q eI true se i valori di verita di P e Q sono entrambi trueI false altrimenti

I Significato di || - il valore di verita di P || Q eI false se i valori di verita di P e Q sono entrambi falseI true altrimenti

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 29

Page 30: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Esempio:I Il valore di (y >= x) &&(x > 5) e

- true in uno stato che contiene le associazioni x 15 e y 30- false in uno stato che contiene le associazioni x 3 e y 30

I Il valore di (y >= x) || (x > 5) e

- true in uno stato che contiene le associazioni x 2 e y 30- false in uno stato che contiene le associazioni x 3 e y 1

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 30

Page 31: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Modifica dello stato: ASSEGNAMENTO

I L’istruzione che consente di rappresentare modifiche di stato eusualmente nota come assegnamento.

I L’assegnamento consente di cambiare un’associazione nello stato,ovvero il valore associato nello stato ad un nome simbolico.

I Useremo per l’assegnamento la seguente notazione�� ��x = exp;

dove x e un nome simbolico e exp una espressione.I L’esecuzione dell’assegnamento x = exp; consiste nel

(i) calcolare il valore, sia esso val, dell’espressione exp(ii) introdurre nello stato l’associazione x val

I Si noti che (ii) comporta la rimozione dallo stato della eventualeassociazione gia presente per il nome simbolico x (si parla a questoproposito di assegnamento distruttivo).

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 31

Page 32: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

ASSEGNAMENTO: esempi

Vediamo alcuni esempi, indicando lo stato prima e dopo l’esecuzionedegli assegnamenti proposti. Le associazioni modificate nello statofinale sono evidenziate in verde.

Stato iniziale Assegnamento Stato Finale

{ x 10, y 20} x = 5; { x 5, y 20}{ x 10, y 20} x = y*2; { x 40, y 20}{ x 10, y 20} x = x+1; { x 11, y 20}

Si noti come, nel terzo esempio, lo stesso nome simbolico x giochi unduplice ruolo:

- a destra del simbolo = indica un valore (il valore associato ad x nellostato iniziale)

- a sinistra del simbolo = indica l’associazione da modificare nello statoa seguito dell’assegnamento.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 32

Page 33: INFORMATICA 1 Corso di Laurea in Fisica a.a. 2007/08paolo/Informatica1/Lezioni/Lez2008-02-13.pdf · primi (Congettura di Goldbach). 5. Decidere per ogni programma e per ogni dato

Concetti di base della programmazione Pseudo-linguaggio per la specifica di algoritmi

Modifica dello stato: INPUT

I La seconda istruzione di modifica dello stato consente di acquisirevalori dal mondo esterno al momento dell’esecuzione. La notazioneutilizzata e �� ��Input(x);

dove x indica un nome simbolico.I L’esecuzione consiste nel:

(i) Acquisire un nuovo valore, sia esso val(ii) Introdurre nello stato l’associazione x val

I Come nel caso dell’assegnamento, il punto (ii) comporta la rimozionedallo stato dell’eventuale associazione gia presente per il nomesimbolico x

I La presenza di tale istruzione permette di descrivere algoritmi generaliin cui non tutti i dati sono noti a priori, ma lo saranno solo almomento dell’esecuzione.

prof. P. Mancarella – Dip.to Informatica INFORMATICA 1 a.a. 07/08 – pag. 33