Algoritmi e soluzione di problemi

Похожие документы
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Formalismi per la descrizione di algoritmi

Strutture di Controllo

Analisi strutturata 1

Diagrammi a blocchi 1

Rappresentazione con i diagrammi di flusso (Flow - chart)

Introduzione alla programmazione

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

PROGRAMMAZIONE: Le strutture di controllo

Cicli. S i a i = a 1 + a 2 + a a n

Diagrammi a blocchi 1

PROGRAMMAZIONE STRUTTURATA

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

CAPITOLO 3 - ALGORITMI E CODIFICA

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Come ragiona il computer. Problemi e algoritmi

Sviluppo di programmi

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

INFORMATICA. Strutture iterative

Algoritmi. Pagina 1 di 5

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

IL TEOREMA DI BOEHM-JACOPINI

Unità di apprendimento 6. Dal problema al programma

Risoluzione di un problema

LA METAFORA DELL UFFICIO

Unità di apprendimento 6. Dal problema al programma

Fondamenti di Informatica

Fasi di creazione di un programma

2. Algoritmi e Programmi

Corso di Informatica di Base

Teoria dell Informazione

A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica

1 Esercizi in pseudocodice

PROGRAMMAZIONE: La selezione

Fondamenti di Informatica

Dispensa di Informatica II.1

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Come scrivere bene codice? (1 di 1)

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Algoritmi e diagrammi di flusso versione biennio

Informatica (A-K) 5. Algoritmi e pseudocodifica

Lezione 5. La macchina universale

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Транскрипт:

Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni) da compiere per risolvere un problema: partendo dai dati di input disponibili elaborando i dati di input fornendo infine all utente i dati di output INPUT ALGORITMO OUTPUT 1

Algoritmo della telefonata Start 1. Solleva la cornetta 2. Componi il numero con il prefisso 3. Se libero attendi che il destinatario risponda Altrimenti vai al punto 5 4. Parla e ascolta 5. Posa la cornetta End 2

Un algoritmo deve essere: Caratteristiche degli algoritmi generale: cioè deve risolvere una classe di problemi dello stesso tipo (es. la somma di due numeri non è un algoritmo generale come la somma di n numeri) finito: ogni algoritmo deve essere composto da un numero finito di istruzioni e deve avere un punto di inizio e un punto di fine (es. calcola tutte le cifre decimai di pi-greco non avrà mai fine) completo: per tutti i casi che si possono verificare deve essere indicato un percorso da seguire (es. se il numero è positivo estrai la radice non è completo) riproducibile: ogni esecuzione dell algoritmo con i medesimi dati iniziali deve produrre sempre i medesimi risultati finali (es. la somma di n numeri deve fornire sempre lo stesso risultato corretto) 3

Metodologia di programmazione 1. Analisi del problema comprensione del problema individuazione dei dati di I/O eventuali vincoli (per esempio: numero > 0, numero compreso tra 1 e 5, ) 2. Algoritmo diagramma di flusso / pseudocodifica simulazione dell algoritmo su casi di prova 3. Codifica del programma scrittura del programma sorgente (source) in un linguaggio di programmazione 4. Validazione Traduzione in linguaggio macchina 4

Dati: variabili e costanti Variabile: cella che contiene un valore che può cambiare durante l esecuzione dell algoritmo numero Costante: cella che contiene un valore che NON cambia pigreco 3.14 Ogni dato (variabile o costante) ha un nome, un tipo (intero, reale, carattere, ) e un valore 5

Diagrammi di flusso L algoritmo può essere descritto con uno schema grafico detto diagramma di flusso. Start End Blocchi di inizio e di fine dell algoritmo I O Blocchi di I/O Blocco di azione F T Blocco di selezione (scelta) 6

Diagrammi di flusso Istruzioni di input, di output e di assegnazione con le variabili x i Istruzione di input per INSERIRE un valore da tastiera nella variabile x x o Istruzione di output per VISUALIZZARE sul monitor il valore contenuto nella variabile x X valore Istruzione di assegnazione per assegnare alla variabile a sinistra del simbolo il valore dell espressione a destra del simbolo di assegnazione 7

Calcolo dell area di un trapezio (1) 1. Analisi del problema Dati di input bmin = base minore nmag = base maggiore h = altezza Dati di output area = area del trapezio bmin bmag h Area del trapezio area 8

Calcolo dell area di un trapezio (2) 2. Algoritmo Start Diagramma di flusso bmin, bmag, h I Pseudocodifica Start Inserisci bmin, bmag, h area (bmin + bmag) * h / 2 Visualizza area End area (bmin + bmag) * h / 2 area O End 9

Programmazione strutturata Nell algoritmo le istruzioni sono organizzate secondo le seguenti strutture di controllo: sequenza: istruzioni eseguite nell ordine con cui sono scritte selezione binaria: scelta tra due possibili alternative iterazione pre-condizionale: ripetizione di un istruzione Ci sono alcune strutture derivate fornite dalla maggior parte dei linguaggi di programmazione: scelta multipla iterazione post-condizionale iterazione con contatore (ciclo FOR) 10

Teorema di Bohm-Jacopini La programmazione strutturata è la progettazione di software secondo un preciso modello organizzativo per ottenere una buona qualità dei programmi. Un corretto approccio al lavoro di creazione degli algoritmi è il teorema di Bohm-Jacopini che afferma: Qualsiasi algoritmo può essere scritto utilizzando soltanto tre strutture di controllo sequenza, selezione e iterazione 11

Sequenza Flow chart Start Pseudocodifica Istruzione1 Istruzione2 Start Istruzione1 Istruzione2 Istruzione3 End Istruzione3 End 12

Selezione binaria La struttura di selezione binaria permette di eseguire in alternativa una o più istruzioni in base al valore di una condizione logica. Flow chart T F Condizione Istruzione1 Istruzione2 Pseudocodifica Se condizione Allora istruzione1 Altrimenti istruzione2 Fine se 13

Selezione binaria Uno dei due rami della struttura può essere assente. T Condizione F Se condizione Allora istruzione Fine se Istruzione 14

Selezione binaria Posso avere strutture di scelta binaria annidate. Flow chart Pseudocodice T Istruzione1 Cond1 T F Cond2 F Se cond1 Allora istruzione1 Altrimenti Se Cond2 Allora istruzione2 Altrimenti istruzione3 Fine se Fine se Istruzione2 Istruzione3 15

Iterazione pre-condizionale L iterazione pre-condizionale permette di eseguire zero, una o più volte una o più istruzioni mentre è vera una determinata condizione. Flow chart Pseudocodice COND T Istruzioni F Mentre Cond Esegui Istruzioni Fine-Mentre 16

Iterazione pre-condizionale Nell iterazione pre-condizionale: la condizione di fine ciclo precede le istruzioni contenute nel ciclo (corpo del ciclo) iterazione con controllo in testa le istruzioni contenute nel ciclo potrebbero non essere mai eseguite se la condizione di fine ciclo è inizialmente falsa 17

Sommare 10 numeri inseriti da input c=0 s=0 inizializzazione contatore di ciclo c < 10 T c = c + 1 F condizione di fine ciclo incremento del contatore x s = s + x s 18