• Non ci sono risultati.

Realizzazione software

N/A
N/A
Protected

Academic year: 2021

Condividi "Realizzazione software"

Copied!
16
0
0

Testo completo

(1)

Realizzazione software

• Due fasi:

1. Specifica dell'algoritmo

1.a Definizione dei dati

1.b Definizione della modalità della loro elaborazione

2. Realizzazione algoritmo con un particolare

linguaggio (traduzione)

(2)

Algoritmi

• Risolvere un problema significa individuare un procedimento che permetta di arrivare al

risultato partendo dai dati

• Il procedimento (chiamato algoritmo ) è composto da passi elementari

• Il modo di esprimere la sequenza dei passi

elementari deve essere standardizzato

(3)

Proprietà degli algoritmi

• L'algoritmo è caratterizzato da:

– finitezza: composto da un numero finito di passi elementari; le operazioni sono eseguite un numero finito di volte

– non ambiguità: i risultati non variano in

funzione della macchina/persona che esegue l'algoritmo (deterministico)

– realizzabilità: deve essere eseguibile con le risorse a disposizione

(4)

Algoritmo

• Per definire un algoritmo è necessario:

– condurre un'attenta analisi del problema – individuare i possibili ingressi

– precisare le uscite

– definire completamente e dettagliatamente la sequenza dei passi che portano alla soluzione

è conveniente suddividere il problema in piccoli sottoproblemi

(5)

Rappresentazione degli algoritmi

• Si fa riferimento ai diagrammi di flusso ( flow chart )

• Sono rappresentazioni grafiche dei passi elementari; visione globale del problema

• Strumento efficace per descrivere un algoritmo (più della descrizione a parole, troppo generica o appesantita da troppi dettagli)

• Le operazioni base sono 4

(6)

Operazioni base

• Le operazioni primarie sono:

– Trasferimento di informazioni

lettura dati, scrittura risultati, visualizzazione dati intermedi

– Esecuzione di calcoli – Assunzione di decisioni – Esecuzione di iterazioni

ripetizione di sequenze di operazioni

• Sono rappresentate da forme geometriche diverse

(7)

Simboli convenzionali

ingresso/uscita

elaborazione

elab. predefinita

decisione

inizializzazione

inizio/fine

connessioni

documento

input manuale

disco

mem. sequenziale

(8)

Esempi

• Diagramma di flusso per:

– somma di N dati – media di N dati

– calcolo del fattoriale

– calcolo della radice quadrata approssimata – calcolo dei primi N numeri primi

– inserimento/ricerca di un elemento in un

(9)

Tecniche di programmazione

• Programmazione top-down :

– scomposizione iterativa del problema in sottoproblemi

– i sottoproblemi devono essere indipendenti ed avere interfacce ben definite

– visibilità dei dettagli di ogni sottoproblema

• Programmazione strutturata

(10)

Programmazione strutturata

• Teoria nata nel 1965

• Basata su eliminazione dei salti

incondizionati e -più generalmente- sulla definizione di restrizioni

• Rendono la scrittura dei programmi e la loro manutenzione più semplici

• Migliorano la leggibilità dei programmi

(11)

Teorema di Jacopini-Bohm

• Per costruire un programma sono necessari 3 soli blocchi:

1. blocco di elaborazione

è assimilabile ad una sola istruzione o un solo blocco con un ingresso e una uscita

2. meccanismo di ripetizione (o loop)

3. meccanismo di decisione binaria

(12)

• While-Do

I

O

I

O

Strutture per il controllo di flusso

(13)

• Repeat-Until

I

O

I

O

Strutture per il controllo di flusso

(14)

• If-Then-Else

I

I

O

Strutture per il controllo di flusso

(15)

Teorema di Jacopini-Bohm

• All'interno di ogni blocco si nasconde un ciclo o una biforcazione

• Il programma risulta quindi composto da una sequenza di blocchi, senza controlli di flusso

• Simile alla programmazione top-down

dove, però, i blocchi non devono essere

indipendenti e omogenei

(16)

Scelta dell'algoritmo

• Non esistono strutture (dati e di controllo) preferite: la loro scelta dipende dal tipo di linguaggio in cui si codifica l'algoritmo

• La scelta dell'algoritmo ottimo dipende dal linguaggio a disposizione: occorre

conoscere bene il linguaggio e le primitive

che esso offre

Riferimenti

Documenti correlati

Problema X si riduce polinomialmente (Cook) al problema Y se istanze generiche del problema X possono essere risolte usando:..  numero polinomiale di passi

– uno strumento in grado di eseguire insiemi di azioni elementari – le azioni vengono eseguite su oggetti (dati) per produrre altri.

A questo punto raffiniamo la catena con N e ripetiamo il procedimento, dopo un numero finito di passi passi otteniamo una serie di composizione.. ⇒ Segue dal

● Associamo a ciascun elemento della struttura dati un numero di crediti. – Un credito può essere utilizzato per eseguire O(1)

•Complessità di un algoritmo: misura del numero di passi elementari che si devono eseguire per risolvere il problema. •Complessità di un problema: complessità del migliore

Tutte le operazioni dell’algoritmo devono essere di base e poter essere eseguite in un tempo finito.

le istruzioni che compongono un algoritmo devono sempre essere in numero finito, ossia il procedimento deve concludersi dopo un numero finito di operazioni;. ogni istruzione

– La correttezza dei risultati dipende non solo dalla corretta esecuzione delle singole operazioni, ma anche dalla corretta sequenza con cui sono