DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE



Похожие документы
Descrizione di un algoritmo

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Lezione 8. La macchina universale

Metodologie di programmazione in Fortran 90

Fasi di creazione di un programma

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Informatica

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Elementi di Informatica

GESTIONE INFORMATICA DEI DATI AZIENDALI

La selezione binaria

Arduino: Programmazione

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

Funzioni in C. Violetta Lonati

Gli algoritmi: definizioni e proprietà

Codifica: dal diagramma a blocchi al linguaggio C++

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Semantica Assiomatica

Esempi di algoritmi. Lezione III

La struttura dati ad albero binario

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Matematica in laboratorio

Introduzione al MATLAB c Parte 2

Introduzione al Linguaggio C

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Studente: SANTORO MC. Matricola : 528

Laboratorio di Informatica

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Interesse, sconto, ratei e risconti

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

4 3 4 = 4 x x x 10 0 aaa

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

regola(1,[e,f],b) regola(2,[m,f],e) regola(3,[m],f) regola(4,[b,f],g) regola(5,[b,g],c) regola(6,[g,q],a)

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Come ragiona il computer. Problemi e algoritmi

MANUALE EDICOLA 04.05

Introduzione alla programmazione in C

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

Architettura MVC-2: i JavaBeans

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

FONDAMENTI di INFORMATICA L. Mezzalira

Interesse, sconto, ratei e risconti

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi

Scheda operativa Versione rif c00. Libro Inventari

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Funzionalità di un Algoritmo

Introduzione. Informatica B. Daniele Loiacono

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

I file di dati. Unità didattica D1 1

Dispensa YACC: generalità

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Nozione di algoritmo. Gabriella Trucco

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Metodi Stocastici per la Finanza

Prova di Laboratorio di Programmazione

Istruzioni condizionali. Istruzioni condizionali IF-THEN- ELSE IF-THEN-ELSE. Statistica computazionale Carla Rampichini a.a.

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

Definizione di nuovi tipi in C

(anno accademico )

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Concetto di Funzione e Procedura METODI in Java

Algebra Booleana ed Espressioni Booleane

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Esercizio: numero primo

RISOLUTORE AUTOMATICO PER SUDOKU

Algoritmi e Strutture Dati

Esercitazione Informatica I AA Nicola Paoletti

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Esercizi Capitolo 5 - Alberi

DAL DIAGRAMMA AL CODICE

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Esercizi su. Funzioni

INFORMATICA 1 L. Mezzalira

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

CONCETTO DI ANNIDAMENTO

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

Introduzione. Installare EMAS Logo Generator

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Транскрипт:

DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE

Il problema Un computer è usato per risolvere dei problemi Prenotazione di un viaggio Compilazione e stampa di un certificato in un ufficio comunale Preparazione di una fattura Gioco degli scacchi... Per poter funzionare il computer deve però essere stato precedentemente predisposto (o programmato)

Il programma (o codice) Un programma è un insieme di istruzioni, scritte in un linguaggio che il computer può comprendere, che descrivono come si fa per risolvere un problema...

Programmazione L insieme delle attività che vanno dalla formulazione del problema alla predisposizione dell elaboratore prende il nome di programmazione Analisi e Formulazione del problema Strategia di soluzione Scrittura del codice

Input e output Quando ci si rivolge ad un agenzia per prenotare un viaggio, il programma già esiste e l elaboratore è già predisposto... L impiegato fornisce i dati specifici del problema (input) e ha inizio l elaborazione al termine della quale viene fornita la soluzione (output) La stampa della prenotazione fatta

Ricapitolando... 1) Il computer è già stato predisposto (contiene il programma di prenotazione viaggi) Input Output 3) Avviene l elaborazione San Salvador......... 2) San Salvador (Bahamas) 4) Stampa prenotazione

Programmazione: attività complessa

Un errore comune da evitare... tuffarsi nella programmazione senza seguire un metodo...

Ariane 5 Esplosione di Ariane 5. Il sistema di guida del razzo si spegne in volo a causa di un errore di programmazione. Il razzo esplode nel suo viaggio inaugurale (10 anni di lavoro - 7 miliardi di $) [NY Times Magazine] 37 secondi dopo il lancio 04/06/1996 - Alla partenza (viaggio inaugurale)

Pseudocodice Con pseudocodice o pseudolinguaggio si intende un linguaggio intermedio tra un particolare linguaggio di programmazione e la normale lingua parlata Non è un linguaggio di programmazione, il computer non può capirlo! Serve ai programmatori per sviluppare un programma corretto Var DATI[1:1000], N, BIG, I: Integer acquisire dall esterno il valore N acquisire dall esterno i valori per i primi N elementi di DATI BIG <- DATI[1]; For I from 2 to N trovare il più grande tra BIG e DATI(I) e sostituirlo a BIG

Il metodo della scomposizione 1. Dato il problema da risolvere occorre capirlo in profondità e definirlo precisamente 2. Occorre scegliere una strategia di soluzione 3. Si applica la scomposizione del problema in sottoproblemi fino ad ottenere una scomposizione finale che contenga solo azioni eseguibili Le scomposizioni vengono espresse in Pseudocodice ordinare in modo crescernte i numeri 5, 2, 9, 1 non è un azione eseguibile 3+5 è un azione eseguibile

Ovvero... Pseudocodice Problema Strategia di soluzione Scomposizione Scomposizione... Scomposizione finale Codice Byob o Java o C++ Solo azioni eseguibili!

Problema 1 Dati tre numeri interi A, B, C calcolare la differenza tra il più grande e il più piccolo Numeri interi: 0, 1, 2, 3, 4, 5,... Esempio: Input: 6, 2, 9 Output: 7 Il nostro obbiettivo è quello di scrivere un programma che risolve il problema 1 applicando il metodo di scomposizione ed utilizzando lo pseudocodice

Strategia di soluzione e scomposizione 1. Acquisire dall esterno i valori A,B,C 2. Calcolare il più grande di A,B,C 3. Calcolare il più piccolo di A,B,C 4. Calcolare la differenza tra i risultati del primo e del secondo sottoproblema 5. Rendere disponibile all esterno il risultato Input di esempio 6, 2, 9 7 9 2 7 Nelle scomposizioni successive andremo a dettagliare i sottoproblemi sostituendo il testo tra... con lo pseudocodice

In pseudocodice Ci servono sei variabili (o contenitori): tre per gli input (A, B, C), una per il valore più grande (BIG), una per il valore più piccolo (SMALL) ed una per il risultato (RESULT) A B C BIG SMALL 6 2 9 0 0 1. Acquisire dall esterno valori A, B, C 2. Calcolare il più grande di A,B,C 3. Calcolare il più piccolo di A,B,C 4. Calcolare la differenza tra i risultati del primo e del secondo sottoproblema 5. Rendere disponibile all esterno il risultato Var A, B, C, BIG, SMALL,RESULT: Integer 1. acquisire dall esterno valori A, B, C 2. BIG <- CALCOLA_MASSIMO(A, B,C); 3. SMALL <- CALCOLA_MINIMO(A,B,C); 4. RESULT<- BIG - SMALL; 5. rendere disponibili all esterno

Scomposizione: CALCOLA_MASSIMO A B C BIG Var A, B, C, BIG: Integer 6 2 9 0 6 2 9 6 1. Se A è più grande di B allora metti in BIG il valore di A altrimenti quello di B 6 2 9 9 9 2. Se C è più grande di BIG allora metti in BIG il valore di C

In pseudocodice: CALCOLA_MASSIMO Var A, B, C, BIG: Integer 1. Se A è più grande di B allora metti in BIG il valore di A altrimenti quello di B 2. Se C è più grande di BIG allora metti in BIG il valore di C 3. restituisci BIG Var A, B, C, D, BIG: Integer If A>B then BIG <- A; else BIG <-B ; endif If C>BIG then BIG <- C; endif Return BIG; Solo azioni eseguibili!

Scomposizione: CALCOLA_MINIMO A B C SMALL Var A,B,C, SMALL: Integer 6 2 9 0 6 2 9 2 1. Se A è più piccolo di B allora metti in SMALL il valore di A altrimenti quello di B 6 2 9 2 2 2. Se C è più piccolo di SMALL allora metti in SMALL il valore di C

In pseudocodice: CALCOLA_MINIMO Var A, B,C, SMALL: Integer 1. Se A è più piccolo di B allora metti in SMALL il valore di A altrimenti quello di B 2. Se C è più piccolo di SMALL allora metti in SMALLil valore di C 3. restituisci SMALL Var A, B,C, SMALL: Integer If A<B then SMALL <- A; else SMALL<-B ; endif If C<BIG then SMALL <- C; endif Return SMALL; Solo azioni eseguibili!

Mettendo tutto assieme Var BIG: Integer Var A, B, C, BIG, SMALL: Integer Read A, B, C; BIG <- CALCOLA_MASSIMO(A, B,C); SMALL <- CALCOLA_MINIMO(A,B,C); RESULT<- BIG - SMALL; Write RESULT; If A>B then BIG <- A; else BIG <-B ; endif If C>BIG then BIG <- C; endif Var SMALL: Integer Return BIG; If A<B then SMALL <- A; else SMALL<-B ; endif If C<BIG then SMALL <- C;

Problema 2 Dati n numeri interi trovare il più grande (n<=1000) Generalizzazione del sottoproblema genera_massimo visto prima Per produrre la scomposizione relativa a questo problema occorrono le seguenti variabili DATI[1:1000], per i valori dei numeri tra cui si deve trovare il massimo È un vettore!!!!! N, per indicare tra quanti numeri si deve trovare il massimo BIG, per contenere l output del problema I, da usare come indice per esaminare gli elementi del vettore

I vettori Si dice vettore una variabile che ha una rappresentazione intuitiva data da una scatola che ha un nome ed è divisa in più scomparti, numerati progressivamente ciascuno dei quali contiene un valore Es. Vettore chiamato A di sei elementi Variabile Vettore A 5 4 2 9 3 4 A(1) A(2) A(3) A(4) A(5) A(6)

I cicli Spesso occorre scorrere tutti gli elementi di un vettore La soluzione è usare un istruzione FOR per ciclare su tutti gli elementi DAT I 5 For I from 1 to 6 Write DATI(I) endfor 4 2 9 3 4 5 4 2 9 3 4

Prima scomposizione Var DATI[1:1000], N, BIG, I: Integer acquisire dall esterno il valore N acquisire dall esterno i valori per i primi N elementi di DATI BIG <- DATI(1); For I from 2 to N trovare il più grande tra BIG e DATI(I) e sostituirlo a BIG 9 endfor rendere disponibili all esterno il valore BIG 5 N=6 4 2 9 3 4 BIG=5 I=2 DATI(2)=4 BIG=5 I=3 DATI(3)=2 BIG=5 I=4 DATI(4)=9 BIG=9 I=5 DATI(5)=3 BIG=9 DATI(1) DATI(2) DATI(3) DATI(4) DATI(5) DATI(6) I=6 DATI(6)=4 BIG=9

Seconda (e ultima) scomposizione Var DATI[1:1000], N, BIG, I: Integer acquisire dall esterno il valore N acquisire dall esterno i valori per i primi N elementi di DATI BIG <- DATI[1]; For I from 2 to N trovare il più grande tra BIG e DATI(I) e sostituirlo a BIG endfor rendere disponibili all esterno il valore BIG Var DATI[1:1000], N, BIG, I: Integer Read N; For I from 1 to N Read DATI(I); endfor BIG <- DATI(1); For I from 2 to N If DATI(I) > BIG then BIG <-DATI(I); endif endfor Write BIG;

Sintassi pseudocodice Var <lista variabili>: <tipo>; <variabile> <- <espressione>; Dichiarazione di variabili Assegnazione di una variabile If <condizione> then <istruzioni 1> else <istruzioni 2> endif If <condizione> then <istruzioni 1> endif Istruzioni condizionali While <condizione> do <istruzioni> endwhile For <indice> from <estremo1> to <etremo2> do <istruzioni> endfor Cicli Write <variabile>; Read <variabile>; Input - Output

Altri esempi? Dati in input due numeri naturali A ed B: Scrivere un programma in pseudocodice che calcola e stampa il valore di A elevato alla N.

MCD Dati in input due numeri naturali A ed B: Scrivere un programma che calcola e stampa il massimo comun divisore (MCD) di A e B sfruttando le seguenti proprietà: Mcd (a, b) =a se a = b Mcd (a, b) = Mcd (a-b, b) se a > b Mcd(a, b) = Mcd (a, b-a) se a < b

Soluzioni e dispense introduttive Mandatemi le vostre soluzioni (pseudo codice) all'indirizzo giorgio.delzanno@unige.it Contattatemi allo stesso indirizzo per informazioni su materiale introduttivo (dispense e lucidi)!!

Chiudiamo con un augurio...

Domande?