informatica generale scienza della comunicazione paolo amico problemi e programmi

27
Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi Problemi e Programmi

Upload: rosanna-tucci

Post on 01-May-2015

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Informatica generale Scienza della Comunicazione

Paolo Amico

Problemi e ProgrammiProblemi e Programmi

Page 2: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

CARATTERISTICHE FONDAMENTALI DI CARATTERISTICHE FONDAMENTALI DI UN ESECUTOREUN ESECUTORE

Un’azione fondamentale presente in un processo eseguito da un calcolatore è l’assegnamento.

V 9

V E

EEspressione, cioè una formula che specifica sempre un valore.Ogni espressione è composta da operandi e operatori

Gli operandi possono essere costanti, espressioni o variabili

Gli operatori possono essere di tre tipi: aritmetici, di relazione e logici

Page 3: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

CARATTERISTICHE FONDAMENTALE CARATTERISTICHE FONDAMENTALE DI UN ESECUTOREDI UN ESECUTORE

Operatori aritmetici

+ addizione

- sottrazione

* moltiplicazione

div Divisione tra numeri interi

/ Divisione tra numeri reali

mod Calcolo del resto della divisione tra interi

^ Elevamento a potenza

Page 4: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

CARATTERISTICHE FONDAMENTALE CARATTERISTICHE FONDAMENTALE DI UN ESECUTOREDI UN ESECUTORE

Operatori di relazione

< Minore di

<= Minore o uguale di

> Maggiore

>= Maggiore o uguale di

<> Diverso

Page 5: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

CARATTERISTICHE FONDAMENTALI CARATTERISTICHE FONDAMENTALI DI UN ESECUTOREDI UN ESECUTORE

Operatori logici

And Per il prodotto logico (congiunzione)

Or Per la somma logica (disgiunzione)

Not Per la negazione

Xor Per l’OR esclusivo

Page 6: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Diagrammi di flusso• Per la descrizione degli algoritmi si utilizzano particolari rappresentazioni

grafiche denominate diagrammi di flusso, schemi a blocchi o flowchart

• Questa descrizione costituisce un efficace strumento per la descrizione degli algoritmi, più valido di una esposizione di tipo discorsivo (troppo generica e ambigua)

• Qualsiasi algoritmo può essere decomposto in poche funzioni elementari

Trasferimento dati

Blocco operativo

Blocco decisionale

Inizio o fine

Simbolo di connessione

Page 7: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

LA PSEUDOCODIFICALA PSEUDOCODIFICALa pseudocodifica è la descrizione di un algoritmo ottenuta utilizzando termini e parole del linguaggio comune, ma applicando una serie di regole che permettono di organizzare un tipo di testo formalmente rigoroso e strettamente orientato alla stesura degli algoritmi.

La pseudocodifica utilizza delle regole per strutturare il testo: Le parole chiave che aprono e chiudono il testo di un algoritmo sono INIZIO e FINE. Altre parole chiave sono A, ALLORA, ALTRIMENTI, CASO, DA, DI, ESEGUI, FINCHE’, MENTRE, PASSO, PER, RIPETI, SE.

Ogni istruzione è indicata con una frase del linguaggio corrente e può contenere un’espressione di tipo aritmetico o logico

Le istruzioni leggi(lista di variabili) e scrivi(variabili e costanti) vengono utilizzate per descrivere le operazione di immissione ed emissione dei dati

La richiesta all’utente per acquisire i dati necessari all’elaborazione può essere indicata con chiedi(lista dei dati che servono) Le variabili, le costanti vengono indicate da parole in minuscolo dette identificatori

Page 8: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

ESEMPIOESEMPIO

h

bA= b h

Dati input

Base e altezza del rettangolo

Dati output Area del rettangolo

Algoritmo rettangolo

INIZIO

Chiedi(base, altezza)Leggi(base, altezza)Area base * altezzaScrivi area

FINE

Page 9: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

ESEMPIOESEMPIO

h

bA= b h

Dati input

Base e altezza del rettangolo

Dati output Area del rettangolo

Inizio Inizio

Fine Fine

Chiedi base, altezzaChiedi base, altezza

Leggi base altezzaLeggi base altezza

Scrivi areaScrivi area

Area base * altezzaArea base * altezza

Page 10: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

La programmazione strutturata è una tecnica di programmazione che ha lo scopo di semplificare la struttura di un algoritmo disciplinando l'organizzazione di uno schema a blocchi

In particolare prevede l'uso di un numero limitato di strutture di controllo fondamentali

Struttura di controllo: flowchart parziale da assumere come modello di computazione, con un ingresso ed una uscita

La programmazione strutturata vincola quindi l'utilizzo delle strutture di controllo, ma offre i seguenti vantaggi:

rende possibile una progettazione di tipo Top-Down permette la definizione di algoritmi più leggibili, essendo più facile individuare i moduli corrispondenti alle varie parti di cui si compone l'algoritmo test, correzione e manutenzione del programma sono perciò più semplici

Programmazione Strutturata

Page 11: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Programmazione strutturata

• Si assumono come strutture di controllo fondamentali:

A

B

Falsop

Vero

A B

p A

Vero

Sequenza

Selezione binaria

While do (ripeti mentre)

Page 12: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Istruzioni per il controllo di flusso• Forniscono al programmatore il meccanismo per decidere se e come

eseguire blocchi di istruzioni condizionatamente a meccanismo decisionali definiti all’interno della applicazione

Istruzioni per il controllo di flusso

Istruzione Descrizione

if Esegue o no un blocco di codice a seconda del valore restituito da una espressione booleana

if-else Esegue permette di selezionare tra due blocchi di codice quello da eseguire a seconda del valore restituito da una espressione booleana

while Esegue ripetutamente un blocco di codice controllando il valore di una espressione booleana

do-while Esegue ripetutamente un blocco di codice controllando il valore di una espressione booleana

Page 13: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Sequenza

• Flowchart della struttura sequenza– Due azioni eseguite in ordine

somma l’inverso del cubo di i ad s

Incrementa il contatore

Page 14: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Ciclo while

p A

Vero

Esegue una istruzione mentre una condizione è verificata

Page 15: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Ciclo do-while

Esegue una istruzione finché una condizione diventa falsa

A

p

FalsoVero

Page 16: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

La selezione binaria if

• È usata per scegliere fra due alternative– Pseudocodice

• Se il voto è maggiore di 18 allora l’esame è superato

Falsovoto>=18

Vero

stampa

Esempio di flowchart della struttura if

if è una struttura con un solo punto di uscita

Page 17: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

La selezione binaria if/else

• Strutture di selezione– if

• Esegui una singola operazione se la condizione è vera– if/else

• Esegui operazioni diverse quando la condizione è vera o quando è falsa

• Pseudocodice

• Se il voto è maggiore o uguale di 18Stampa “Esame superato”

altrimenti

Stampa “Esame non superato”

Page 18: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

La selezione binaria if/else

verofalso

Stampa “Esame non superato” Stampa “Esame superato”

voto >= 18

Page 19: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

stampa 30 volte la parola TRE

START

END

C := 1

C := C + 1

stampa “TRE”

C = 30V F

Ciclo controllato da un contatore

Page 20: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Ciclo controllato da un contatore

• Media dei voti:– Descrizione del problema:

• Una classe di 10 studenti affronta un quiz. I risultati sono interi fra 0 e 100. Calcolare la media complessiva.

• È una iterazione controllata da un contatore– Il ciclo viene ripetuto finché un contatore non

raggiunge un determinato valore– Il numero di iterazioni è noto: si usa un contatore

Page 21: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

• Descrizione a parole:

1. azzera somma parziale - accumulatore

2. azzera il contatore dei numeri già introdotti

3. leggi un dato

4. somma il dato all’accumulatore

5. incrementa il contatore

6. se il numero di dati letti (contatore) è minore di 10 torna a 3, altrimenti continua

7. stampa la media

Falso

Inizio

I = 0S = 0

I<10

Letturadato Di

S: = S + Di

I = I + 1

Stampa media

Fine

Vero

I contatore

S accumulatore

Page 22: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

somma due numeri avendo a

disposizione solo l’operazione di

incremento unitario

(macchina a strati)

START

END

dati A B

RIS := A; CON := 1

stampa RIS CON := CON + 1

CON = BV F

RIS := RIS + 1

A e B > 0

Page 23: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

moltiplica due numeri avendo a disposizione

solo l’operazione di

somma (macchina a

strati)

START

END

dati A B

RIS := 0; CON := 1

stampa RIS CON := CON + 1

CON = BV F

RIS := RIS + A

A e B > 0

Page 24: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Ciclo controllato da una sentinella

Problema: costruire un algoritmo che, assegnati N dati numerici

A1, A2, A3, …, AN

Con N non noto a priori, sia capace di:

1) Contare i dati, ossia determinare N2) Calcolare la somma S dei Dati

Occorre un contatote Ct che, inizialmente azzerato, viene incrementato di unaunità ogni volta che uno dei dati viene introdotto in memoria

Occorre una sentinella (flag) adibita a segnalare il momento in cui si realizzaL’evento: “la lettura dei dati è terminata”

Page 25: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

A tale scopo si usa una variabile che chiameremo spia e che manterremoSpenta (spia=0) per tutta la durata della lettura dei dati eche accenderemo(spia=1) subito dopo l’immissione dell’ultimo dato

Algoritmo

INIZIOSpia:=0Ct:=0S:=0RipetiIntroduzione del dato in AIntroduzione di 0 o 1 in spia a seconda che la lettura dei dati non sia, o siaterminataIncrementa il contatoreIncrementa la sommaFinché (spia=1)Visualizza contatoreVisualizza sommaFINE

Page 26: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

Inizio

Spia: = 0Ct: = 0S:=0

Spia=1

Letturadato A, spia

Fine

Ct: = Ct+1S:=S+A

N=CtSomma=S

falso

vero

Page 27: Informatica generale Scienza della Comunicazione Paolo Amico Problemi e Programmi

MCD(m,n) m,n >0

1. Leggi m e n;

2. considera il minore tra i due numeri (min)

3. verifica se min è divisore sia di m che di n. In caso positivo min è il MCD cercato altrimenti

3.1 sottrai 1 a min e torna al punto 3

Leggi n

Leggi m

Stampa min

r1m mod min

si

(r1=0 and r2=0)

minmin-1si

r2n mod min

m>n

minnminm