algoritmi e programmazione strutturata n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Algoritmi e Programmazione strutturata PowerPoint Presentation
Download Presentation
Algoritmi e Programmazione strutturata

Loading in 2 Seconds...

play fullscreen
1 / 32

Algoritmi e Programmazione strutturata - PowerPoint PPT Presentation


  • 158 Views
  • Uploaded on

Algoritmi e Programmazione strutturata. Dal problema al programma Definizione di algoritmo I dati e le istruzioni La rappresentazione degli algoritmi Algoritmi e il teorema di B öhm-Jacopini Le strutture di sequenza, selezione e iterazione Contatore e totalizzatore

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Algoritmi e Programmazione strutturata' - eric-hull


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
algoritmi e programmazione strutturata

Algoritmi e Programmazione strutturata

Dal problema al programma

Definizione di algoritmo

I dati e le istruzioni

La rappresentazione degli algoritmi

Algoritmi e il teorema di Böhm-Jacopini

Le strutture di sequenza, selezione e iterazione

Contatore e totalizzatore

Esempio di codifica in VB2005 della struttura di iterazione

dal problema al programma
Dal problema al programma

Esempio: ordinamento dei nomi degli studenti nel registro di classe

  • PROBLEMA REALE: dato un insieme di nomi e cognomi, organizzarli in ordine alfabetico.
  • DATI: cognome e nome degli studenti.
  • TECNICA DI ELABORAZIONE: l’insieme delle operazioni necessarie per ordinare un generico insieme di nomi in ordine alfabetico.
  • USO DELL’ELABORATORE: dopo aver introdotto le operazioni e i dati, codificati in modo opportuno, il computer può eseguire automaticamente l’ordinamento dei nomi degli studenti.
le fasi principali della programmazione
Le fasi principali della programmazione
  • Lettura del testo del problema
  • Analisi dei dati di input e di output

(tabella dei dati)

  • Organizzazione dell’algoritmo risolutivo

(tabella di traccia per testare l’algoritmo)

  • Stesura del programma (codifica)
  • Prove di esecuzione del programma (test)
le fasi principali della programmazione1
Le fasi principali della programmazione
  • Lettura del testo del problema
  • Analisi dei dati di input e di output

(tabella dei dati)

  • Organizzazione dell’algoritmo risolutivo

(tabella di traccia per testare l’algoritmo)

  • Stesura del programma (codifica)
  • Prove di esecuzione del programma (test)
cos un algoritmo
Cos’è un algoritmo?

Un algoritmo è una sequenza di passi che devono essere eseguiti secondo un ordine prefissato per arrivare al risultato partendo da dati noti.

  • Un algoritmo deve fornire la soluzione di un problema indipendentementedal linguaggio di programmazione che si utilizzerà per scrivere il programma finale.
  • Il termine algoritmo si fa derivare dal nome del matematico arabo Al-Khuwarizmi, vissuto nel IX secolo, ed è quindi un concetto che è sempre stato utilizzato nella matematica come sinonimo di metodo per la risoluzione di un problema generale.
  • Esempi di algoritmi che applichiamo per la soluzione di problemi di vita quotidiana sono:
    • le istruzioni di uso di un elettrodomestico
    • la sequenza di passi da seguire per compilare un modulo
    • la realizzazione di una ricetta di cucina
    • ecc.
esempio di algoritmo
Esempio di algoritmo

Per descrivere in modo corretto un algoritmo è importante aver chiaro qual è l’obiettivo da raggiungere, ossia i risultati da ottenere.

  • Esempio
  • per ottenere un buon piatto di pasta bisogna aver chiare tutte le informazioni di partenza:
  • il tipo di pasta (fa variare il tempo di cottura),
  • il numero di persone che dovranno mangiare la pasta, per determinare la quantità di pasta e, di conseguenza, la quantità di acqua e di sale.
  • La risoluzione del problema è data dai seguenti passi:
  • far bollire la quantità di acqua stabilita
  • aggiungere la quantità di sale stabilita
  • mettere nell’acqua bollente la quantità di pasta stabilita
  • far cuocere la pasta per i minuti stabiliti
un algoritmo deve essere
Un algoritmo deve essere ....
  • FINITO: un algoritmo deve essere composto da un numero finito di passi e deve presentare un punto di inizio e uno di fine, raggiunto il quale si interrompe l’esecuzione delle operazioni.
  • DETERMINISTICO: l’algoritmo a fronte degli stessi dati di input deve produrre gli stessi risultati (es. l’istruzione “moltiplica 2x5” produce sempre il medesimo risultato, mentre l’istruzione “tira una freccia contro il bersaglio” può avere risultati diversi anche se è rivolta al medesimo arciere munito del suo solito arco).
  • NON AMBIGUO: i passi che compongono l’algoritmo devono essere interpretati in modo univoco dall’esecutore, senza lasciar dubbi (es. “se il numero è abbastanza grande allora dividilo per 3”  istruzione ambigua!)
  • REALIZZABILE: è necessario che esista un esecutore in grado di eseguire ogni passo dell’algoritmo ed in un tempo finito (es. “calcola tutte le cifre decimali di π” non avrà mai fine in quanto tali cifre sono infinite).
elementi fondamentali di un algoritmo

ALGORITMO +

ESECUTORE

DATI DI INPUT

DATI DI OUTPUT

Elementi fondamentali di un algoritmo

1) dati iniziali e finali:sono gli elementi che vengono elaborati dall’algoritmo (dati iniziali o di input) e i risultati prodotti dall’algoritmo (dati finali o di output).

Es. nell’algoritmo dell’addizione, i dati iniziali sono gli addendi, il dato finale è la somma.

2) sequenza di azioni (istruzioni o passi elementari):un’azione è un’istruzione (operazione elementare) che deve essere eseguita sui dati in ingresso per ottenere i dati in uscita.

3) esecutore: è il soggetto che compie le azioni, cioè legge le istruzioni, le interpreta e le esegue.

Le istruzioni quindi devono essere scritte in modo che l’esecutore possa comprenderle ed eseguirle correttamente.

i dati

Dati NUMERICI: dati che contengono numeri e sui quali si possono effettuare operazioni aritmetiche. Possono essere ulteriormente suddivisi in:

    • INTERI: dati numerici che non prevedono cifre decimali
    • REALI: dati numerici che prevedono cifre decimali
  • Dati ALFANUMERICI (o STRINGHE): sono i dati che contengono caratteri alfabetici (A,B,...), caratteri speciali ($,%,&,...) e cifre (0,1,2,...) sulle quali non sono possibili operazioni aritmetiche (ad esempio il codice fiscale).
I DATI
  • Dati di INPUT: sono quelli che devono essere forniti dall’esterno per poter risolvere il problema.
  • Dati di OUTPUT: sono quelli che vengono comunicati all’esterno come risultato della soluzione del problema.
  • Dati INTERNI o di LAVORO: sono i dati utilizzati nella trasformazione compiuta dall’algoritmo ma trasparenti all’utente (non sono forniti in output).
dati costanti e variabili
DATI Costanti e Variabili
  • COSTANTE: il valore del dato rimane immutato durante l’esecuzione dell’algoritmo
  • VARIABILE: il valore del dato può cambiare durante l’esecuzione dell’algoritmo

Ad esempio: dobbiamo calcolare l’area di un cerchio di cui si conosce il raggio. I dati su cui opera l’algoritmo sono: raggio, π, area

e l’istruzione da eseguire è: area = raggio * raggio * π

π è una costante, infatti il suo valore non deve cambiare

area e raggio sono delle variabili: il loro valore cambia in funzione del particolare cerchio che si prende in considerazione.

Il concetto di variabile è molto importante nella definizione degli algoritmi:

una variabile è caratterizzata da un nome e dal tipo (numerico o stringa) del dato che andrà a contenere.

le istruzioni
Le ISTRUZIONI
  • LETTURA: assegna ad una variabile un valore immesso tramite la tastiera del computer.
    • leggi (raggio) : se dalla testiera è stato digitato 5, la variabile raggio conterrà il valore 5
  • SCRITTURA: permette di visualizzare sul monitor del computer o sulla stampante un messaggio o il valore di una variabile.
    • scrivi (“benvenuto”) : visualizza sul video il messaggio scritto tra apici
    • scrivi (raggio) : visualizza sul video il contenuto della variabile raggio, ossia se raggio ha valore 5, sul video sarà visualizzato 5.
  • ASSEGNAZIONE: assegna un valore ad una variabile. Per indicare questa operazione si usa il simbolo = o una freccia 
    • raggio = 5 : alla variabile raggio è assegnato il valore 5
    • raggio = R : alla variabile raggio viene assegnato il valore di un’altra variabile di nome R
    • raggio = (R + 5)*2 : alla variabile raggio viene assegnato il risultato di una espressione
la rappresentazione degli algoritmi il flow chart
La rappresentazione degli algoritmi: il flow-chart
  • Per poter descrivere un algoritmo non è necessario conoscere un linguaggio di programmazione; la sequenza delle istruzioni può essere rappresentata con un linguaggio semiformale mediante i diagrammi a blocchi che consentono all’utente di seguire il flusso dell’esecuzione delle istruzioni, per questo motivo questi diagrammi sono chiamati diagrammi di flusso o flow-chart.
  • I flow-chart sono formati da SIMBOLI di forma diversa, ciascuno con il proprio significato, all’interno di ogni simbolo è presente un breve testo.
  • Le LINEE con FRECCE che uniscono i vari simboli indicano il flusso delle operazioni.
i simboli dei flow chart

è il simbolo dell’elaborazione e contiene l’istruzione da eseguire

è il simbolo per le operazioni di Input / Output

F

V

è il simbolo di decisione ed è usato per stabilire se una proposizione è vera (V) o falsa (F)

condizione

I simboli dei flow-chart

INIZIO

questi simboli indicano il punto di partenza e di terminazione dell’algoritmo

FINE

un esempio

INIZIO

I

raggio

INIZIO

F

V

raggio = 0

I

raggio

area = raggio * raggio * π

area = 0

area = raggio * raggio * π

O

area

O

area

FINE

FINE

Un esempio
algoritmo
ALGORITMO

Successione finita di istruzioni ciascuna

delle quali rappresenta un’operazione da

eseguire per risolvere un problema.

Occorre definire un insieme di regole e di linee guida per organizzare il lavoro di creazione di un algoritmo

Programmazione strutturata

la programmazione strutturata
La programmazione strutturata
  • Un metodo per realizzare algoritmi:
    • l’algoritmo viene visto come un insieme di blocchi di istruzioni ognuno fornito di un solo ingresso e di una sola uscita;
    • ogni blocco è isolato dagli altri (non è possibile saltare dall’interno di un blocco all’interno di un altro).
teorema di b hm jacopini
Teorema di Böhm-Jacopini

Qualsiasi algoritmo può essere scritto utilizzando esclusivamente le tre strutture di controllo fondamentali:

SEQUENZA – SELEZIONE –ITERAZIONE

Nel 1966 due matematici italiani Corrado Böhm e Giuseppe Jacopini hanno formulato uno dei più importanti teoremi dell’informatica.

La domanda è: «Quali algoritmi sono codificabili con i tre costrutti sequenza, selezione e iterazione?».

Risposta: «Con i tre costrutti fondamentali è possibile codificare tutti gli algoritmi».

Questo teorema esclude dalla programmazione strutturata l’istruzione di salto (GOTO) considerandola la principale causa del codice-spaghetti, cioè codice scritto in modo tanto ingarbugliato da non poter essere compreso neanche dallo stesso programmatore che lo ha scritto!!

N.B. sono nomi equivalenti:

Sequenza = Concatenazione ; Selezione = Alternativa ; Iterazione = Ripetizione

struttura di sequenza

istruzione1

istruzione2

istruzione3

Struttura di sequenza
struttura di selezione

istruzione1

istruzione2

Struttura di selezione

F

V

condizione

struttura di iterazione
Struttura di iterazione
  • Si deve eseguire un blocco di istruzioni finché non si verifica una determinata condizione.

Esempio:costruire un algoritmo che dati in input 5 numeri ne determini la somma

esempio pseudocodice
Sequenza

INIZIO

Leggi (N1)

Leggi (N2)

Leggi (N3)

Leggi (N4)

Leggi (N5)

Somma  N1+N2+N3+N4+N5

Scrivi (Somma)

FINE

Iterazione

INIZIO

Somma  0

Conta  0

ESEGUI

Leggi (N)

Somma  Somma+N

Conta  Conta+1

RIPETI FINCHÉ Conta = 5

Scrivi (Somma)

FINE

Esempio: pseudocodice
esempio flow chart

Somma  0

Conta  0

leggi (N)

Somma  Somma + N

Conta  Conta + 1

scrivi (Somma)

Esempio: flow-chart

INIZIO

F

V

Conta = 5

FINE

azioni comuni negli algoritmi i
Azioni comuni negli algoritmi (I)
  • Contare: nell’esempio abbiamo usato una sola variabile per richiedere i numeri (N)  dobbiamo “contare” quanti numeri stiamo inserendo!
    • variabilecontatore di tipo numerico (cont)
    • inizializzazione (cont = 0)
    • incremento (cont = cont + 1)
azioni comuni negli algoritmi ii
Azioni comuni negli algoritmi (II)
  • Totalizzare: nell’esempio abbiamo usato la variabile Somma che è stata aggiornata ogni volta che si leggeva un numero  alla fine dell’iterazione Somma contiene il valore della somma totale dei 5 numeri!
    • variabiletotalizzatore di tipo numerico (totale)
    • inizializzazione (totale = 0)
    • incremento (totale = totale + X)

(X è la variabile che contiene il numero da sommare)

struttura di iterazione postcondizionale

istruzioni

Struttura di iterazione postcondizionale

La condizione è un’espressione che rappresenta un valore Vero o Falso.

Il ciclo viene ripetuto finché l’espressione non diventa vera.

F

condizione

V

struttura di iterazione precondizionale

istruzioni

Struttura di iterazione precondizionale

La condizione è un’espressione che rappresenta un valore Vero o Falso.

Il ciclo viene ripetuto finché l’espressione non diventa falsa.

F

condizione

V

confronto tra le strutture di iterazione

istruzioni

istruzioni

Confronto tra le strutture di iterazione

Iterazione Finché (Until)

Iterazione Mentre (While)

F

condizione

V

F

condizione

V

le iterazioni in visual basic net
Le iterazioni in Visual Basic.net

L’istruzione Do...Loop... (pag. 155 del libro)

Iterazione postcondizionale:

Do

istruzioni

Loop Until condizione

Do

istruzioni

Loop While condizione

Iterazione precondizionale:

Do While condizione

istruzioni

Loop

Do Until condizione

istruzioni

Loop

codifica esempio somma di 5 numeri
Codifica esempio “somma di 5 numeri”

Dim N As Integer

Dim Somma As Integer = 0, Conta As Byte = 0

Do

N = InputBox (“inserisci un numero”)

Somma = Somma + N

Conta += 1 ‘equivale a scrivere Conta=Conta+1

Loop Until Conta = 5

MessageBox.Show (“La somma dei 5 numeri è: “ & Somma)

in alternativa:

Do While Conta < 5

N = InputBox (“inserisci un numero”)

Somma = Somma + N

Conta += 1 ‘equivale a scrivere Conta=Conta+1

Loop

MessageBox.Show (“La somma dei 5 numeri è: “ & Somma)

esercizio su numeri e caratteri uso di ciclo do loop until
Esercizio su numeri e caratteriuso di ciclo Do...Loop Until...

Private Sub btnEseguiUntil_Click(...) Handles btnEseguiUntil.Click

Dim dato As String, T As Integer = 0, C As Byte = 0

Do

dato = InputBox("inserisci una parola di tre caratteri o cifre")

If dato <> "ZZZ" Then

If IsNumeric(dato) Then

T = T + Convert.ToInt32(dato)

Else

C += 1

End If

End If

Loop Until dato = "ZZZ“

lblT.Text = "La somma dei numeri letti è: " & T

lblC.Text = "Sono stati letti " & C & " dati non numerici"

End Sub

esercizio su numeri e caratteri uso di ciclo do while loop
Esercizio su numeri e caratteriuso di ciclo Do While...Loop

Private Sub btnEseguiWhile_Click(...) Handles btnEseguiWhile.Click

Dim dato As String, T As Integer = 0, C As Byte = 0

dato = InputBox("inserisci una parola di tre caratteri o cifre")

Do While dato <> "ZZZ"

If IsNumeric(dato) Then

T = T + Convert.ToInt32(dato)

Else

C += 1

End If

dato = InputBox("inserisci una parola di tre caratteri o cifre")

Loop

lblT.Text = "La somma dei numeri letti è: " & T

lblC.Text = "Sono stati letti " & C & " dati non numerici"

End Sub

quale soluzione la migliore
Quale soluzione è la migliore?
  • Il numero di volte che si esegue l’istruzione di lettura (InputBox) è lo stesso.
  • Il test sulla condizione di fine ciclo è eseguito:
    • 2 volte ad ogni iterazione nel caso Do...Loop Until ...
      • If dato <> “ZZZ” ........
      • Loop Until dato = “ZZZ”
    • 1 sola volta ad ogni iterazione nel caso Do While...Loop
      • Do While dato <> “ZZZ” ........
  • Se l’utente scrive subito il dato “ZZZ” :
    • nel caso Do...Loop Until ... si eseguono comunque 1 volta tutte le istruzioni del ciclo,
    • nel caso Do While...Loop non si eseguono le istruzioni del ciclo.

L'istruzione Do While...Loop è la migliore!!!