Dall analisi alla codifica (1)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dall analisi alla codifica (1)"

Transcript

1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 09 Dall analisi alla codifica (1) Aprile 2010 Dall'analisi alla codifica (1) 1

2 Contenuti... Problemi e algoritmi comprensione del problema identificazione di un algoritmo per il problema dall algoritmo all oggetto qualità degli algoritmi Introduzione agli algoritmi un linguaggio per scrivere algoritmi progettazione di algoritmi Dall'analisi alla codifica (1) 2

3 ... Contenuti Problemi di ingresso e uscita (esempi ed esercizi) lettura e somma di due numeri interi somma di una sequenza di numeri interi somma dei pari e dei dispari in una sequenza massimo di una sequenza di dieci numeri traccia dell esecuzione di un metodo o di un algoritmo Dall'analisi alla codifica (1) 3

4 Una metodologia per il progetto di programmi Uno degli scopi fondamentali dell informatica è la risoluzione di problemi un problema è un compito che si vuole far risolvere automaticamente a un calcolatore i problemi sono di solito parametrici (classi di problemi) per risolvere un problema bisogna comprendere il problema definire un algoritmo (un procedimento risolutivo) per il problema implementare l algoritmo in un linguaggio di programmazione Dall'analisi alla codifica (1) 4

5 Una metodologia per il progetto di programmi Comprendere il problema Specifica del problema: Dati di input eventuali vincoli sui dati: pre-condoizioni Dati calcolati in output Condizioni che deve soddisfare l output per essere una soluzione corretta al problema: post-condizioni Definire un procedimento risolutivo Espresso in linguaggio naturale o con i diagrammi a blocchi Implementare l algoritmo in un dato linguaggio di programmazione Dall'analisi alla codifica (1) 5

6 Comprensione di un problema: Specifica La specifica di un problema insieme di ingresso o parametri i parametri del problema l insieme di ingresso è suddiviso in un insieme di dati di ingresso ( o un insieme di oggetti di ingresso) pre-condizione condizione relativa all insieme di ingresso descrive le proprietà soddisfatte dai dati di ingresso e dagli oggetti di ingresso (considerati nel loro stato iniziale) insieme di uscita o risultati le informazioni che devono essere calcolate nella risoluzione del problema l insieme di uscita è suddiviso in dati di uscita (o oggetti di uscita) post-condizione condizione relativa all insieme di uscita descrive le proprietà soddisfatte dai dati di uscita e dallo stato finale degli oggetti coinvolti dal problema, anche con riferimento ai dati di ingresso e allo stato iniziale degli oggetti di ingresso Dall'analisi alla codifica (1) 6

7 Identificazione di un algoritmo per il problema Un algoritmo per un problema una sequenza di istruzioni che permette di far evolvere gli oggetti di interesse da uno stato iniziale che soddisfa la pre-condizione a uno stato finale che soddisfa la post-condizione sulla base di eventuali ulteriori dati di ingresso calcolando eventuali dati in uscita Gli algoritmi vanno espressi in termini delle istruzioni di un esecutore automatico (ad es., un calcolatore, un oggetto) ciascuna istruzione deve poter essere eseguita dall esecutore in tempo finito l intera sequenza di istruzioni deve poter essere eseguita in tempo finito, per ogni possibile insieme di ingresso che soddisfa la precondizione del problema Dall'analisi alla codifica (1) 7

8 Qualità degli algoritmi Due qualità fondamentali di un algoritmo correttezza l algoritmo permette effettivamente di risolvere il problema efficienza l esecuzione dell algoritmo richiede un uso limitato di risorse Altre qualità degli algoritmi leggibilità essere facilmente comprensibile modificabilità essere facilmente modificabile, a fronte di (piccole) modifiche nelle specifiche del problema risolto dall algoritmo parametricità riusabilità Dall'analisi alla codifica (1) 8

9 Introduzione agli algoritmi (per esempi) Le nozioni di problema e di algoritmo vengono ora approfondite mediante lo studio di alcuni esempi, che illustrano gli aspetti principali nella risoluzione di problemi un algoritmo è una sequenza di istruzioni che, se eseguite ordinatamente, permettono di risolvere un certo problema gli algoritmi vengono scritti mediante un linguaggio per esprimere algoritmi basato sull uso di un numero limitato di tipologie di istruzioni (chiamato pseudo-codice) la progettazione degli algoritmi avviene solitamente per raffinamenti successivi, in cui i passi di un algoritmo vengono descritti via via con maggior dettaglio la verifica delle qualità di un algoritmo (in particolare, la correttezza e l efficienza) richiede strumenti adeguati (che saranno studiati solo in capitoli successivi) Dall'analisi alla codifica (1) 9

10 Un linguaggio per scrivere algoritmi Gli algoritmi vengono solitamente espressi mediante linguaggi intermedi tra linguaggi di programmazione e linguaggio naturale pseudocodice a metà strada tra un metodo e una descrizione testuale pseudocodifica, diagramma a blocchi Un linguaggio per scrivere algoritmi può essere basato sull uso delle seguenti tipologie di istruzioni istruzioni semplici invio di un messaggio a un oggetto calcolo di una espressione e assegnazione istruzioni di controllo sequenza una sequenza finita di istruzioni istruzione condizionale esegue una istruzione condizionatamente al verificarsi di una condizione istruzione ripetitiva esegue una istruzione ripetutamente al verificarsi di una condizione Dall'analisi alla codifica (1) 10

11 Sequenza Una sequenza (o istruzione composta o blocco) è un gruppo di istruzioni che devono essere eseguite in sequenza in sequenza una alla volta, una dopo l altra sintassi di un blocco { istruzione-1 istruzione-2... istruzione-n } Semantica (significato) esegui istruzione-1, poi istruzione-2,..., poi istruzione-n Dall'analisi alla codifica (1) 11

12 Istruzione condizionale L istruzione condizionale (istruzione if-else) consente di eseguire una istruzione tra una coppia di istruzioni istruzione-1 e istruzione- 2 condizionatamente al verificarsi (o meno) di una condizione condizione sintassi if (condizione) istruzione-1 else istruzione-2 Semantica 1. valuta la condizione condizione 2. se la condizione condizione si è verificata allora esegui l istruzione istruzione-1, altrimenti esegui l istruzione istruzione-2 Una variante l istruzione if Dall'analisi alla codifica (1) 12

13 Istruzione ripetitiva L istruzione ripetitiva (istruzione while) consente di eseguire ripetutamente una istruzione istruzione fintanto che la condizione condizione risulta verificata sintassi while (condizione) istruzione Semantica l istruzione istruzione è il corpo dell istruzione ripetitiva 1. valuta la condizione condizione 2. se la condizione condizione si è verificata allora esegui l istruzione istruzione e torna a eseguire questi due passi se invece la condizione condizione non si è verificata, allora l esecuzione dell istruzione ripetitiva viene considerata terminata Dall'analisi alla codifica (1) 13

14 Progettazione di algoritmi Scrivere un algoritmo è una attività complessa Una metodologia efficace nella progettazione degli algoritmi è basata sulla strategia top-down (dall alto verso il basso) la strategia top-down consiste nel decomporre iterativamente un problema da risolvere in sottoproblemi, fino a quando ciascun sotto-problema non possa che essere risolto in modo elementare la soluzione congiunta di tutti i sotto-problemi costituisce una soluzione per il problema iniziale Dall'analisi alla codifica (1) 14

15 Una metodologia per la progettazione di algoritmi Progettazione di algoritmi per raffinamenti successivi scrivi una versione iniziale dell algoritmo una sequenza di uno o più passi raffina ciascun passo dell algoritmo, fintanto che l algoritmo non sia completo di tutti i dettagli il raffinamento di un passo consiste nella sostituzione del passo con una istruzione semplice o con una istruzione di controllo la progettazione di un algoritmo per raffinamenti successivi è una attività iterativa il raffinamento di un passo può richiedere ulteriori raffinamenti Dall'analisi alla codifica (1) 15

16 Problemi di ingresso-uscita I problemi di ingresso-uscita sono una classe ristretta di problemi i dati di ingresso del problema vengono letti dalla tastiera i dati di uscita calcolati risolvendo il problema vengono visualizzati sullo schermo Un esempio di problema di ingresso-uscita si vuole leggere dalla tastiera una coppia di numeri A e B, calcolarne la somma e visualizzarla sullo schermo Scrivi due numeri interi La somma dei due numeri è 25 problemi di questo tipo portano alla scrittura di applicazioni (piuttosto che di metodi) Dall'analisi alla codifica (1) 16

17 Problemi di ingresso-uscita Specifica di un problema di ingresso-uscita dati di ingresso i parametri del problema, che devono essere letti dalla tastiera pre-condizione condizione che descrive le proprietà dei dati di ingresso si assume che sia verificata, nel senso che si ipotizza che i dati di ingresso che vengono inseriti dalla tastiera soddisfano la precondizione dati di uscita i risultati del problema, che devono essere visualizzati sullo schermo post-condizione condizione che descrive le proprietà dei dati di uscita rispetto ai dati di ingresso Dall'analisi alla codifica (1) 17

18 Lettura e somma di due numeri interi Si consideri il seguente semplice problema di ingresso-uscita si vuole leggere dalla tastiera una coppia di numeri A e B, calcolarne la somma e visualizzarla sullo schermo Problema lettura e somma di due numeri interi Dati di ingresso una coppia di numeri interi, A e B Pre-condizione nessuna Dati di uscita un numero S Post-condizione S è la somma di A e B Dall'analisi alla codifica (1) 18

19 Lettura e somma di due numeri interi Si osservi la natura parametrica del problema della lettura e somma di due numeri interi risolvere questo problema vuol dire identificare e implementare un algoritmo in grado di leggere e calcolare la somma di due numeri interi A e B indipendentemente dagli specifici valori di A e B in generale, i problemi di interesse per l informatica sono parametrici, nel senso che dipendono da dati i cui valori non sono noti al momento in cui si vuole affrontare e risolvere il problema Dall'analisi alla codifica (1) 19

20 Algoritmo per la lettura e somma di due numeri interi Algoritmo per il problema della lettura e somma di due numeri interi 1. leggi (dalla tastiera) i due numeri interi a e b 2. calcola la somma somma di a e b 3. visualizza somma (sullo schermo) Una sequenza di tre passi il procedimento non è ancora sufficientemente dettagliato, e quindi i tre passi devono essere ulteriormente raffinati Dall'analisi alla codifica (1) 20

21 Raffinamento del passo 1 1. leggi (dalla tastiera) i due numeri interi a e b Il passo 1 può essere raffinato usando una istruzione di controllo per sequenza 1. leggi (dalla tastiera) i due numeri interi a e b 1.1 leggi il numero intero a dalla tastiera 1.2 leggi il numero intero b dalla tastiera Dall'analisi alla codifica (1) 21

22 Raffinamento dei passi 1.1 e 1.2 I passi ottenuti dal raffinamento del passo 1 possono essere ulteriormente raffinati sulla base delle seguenti considerazioni per la lettura dalla tastiera è possibile usare l oggetto Lettore.in per la lettura di un numero intero con l oggetto Lettore.in va usato il metodo int leggiint() La seguente porzione dell algoritmo è stata ottenuta mediante lo svolgimento di due raffinamenti (uno per ciascun passo) 1. leggi (dalla tastiera) i due numeri interi a e b 1.1 leggi il numero intero a dalla tastiera a = Lettore.in.leggiInt(); 1.2 leggi il numero intero b dalla tastiera b = Lettore.in.leggiInt(); Dall'analisi alla codifica (1) 22

23 Raffinamento dei passi 2 e 3 2. calcola la somma somma di a e b 3. visualizza somma (sullo schermo) Il passo 2 può essere raffinato usando una istruzione semplice di assegnazione 2. calcola la somma somma di a e b somma = a + b; Il passo 3 può essere raffinato usando una istruzione semplice di invio di un messaggio all oggetto System.out 3. visualizza somma (sullo schermo) System.out.println(somma); Dall'analisi alla codifica (1) 23

24 Algoritmo per la lettura e somma di due numeri interi In sintesi, il problema della lettura e somma di due numeri interi può essere risolto dal seguente algoritmo 1. leggi (dalla tastiera) i due numeri interi a e b 1.1 leggi il numero intero a dalla tastiera a = Lettore.in.leggiInt(); 1.2 leggi il numero intero b dalla tastiera b = Lettore.in.leggiInt(); 2. calcola la somma somma di a e b somma = a + b; 3. visualizza somma (sullo schermo) System.out.println(somma); Dall'analisi alla codifica (1) 24

25 Variabili e oggetti per l algoritmo L algoritmo per la lettura e somma di due numeri interi fa uso delle seguenti variabili e oggetti la variabile intera a rappresenta il primo numero intero letto dalla tastiera la variabile intera b rappresenta il secondo numero intero letto dalla tastiera la variabile intera somma rappresenta la somma di a e b l oggetto Lettore.in che rappresenta la tastiera, da cui vanno letti i dati per utilizzare questo oggetto non è necessaria nessuna variabile l oggetto System.out che rappresenta lo schermo, su cui vanno visualizzati i risultati per utilizzare questo oggetto non è necessaria nessuna variabile Dall'analisi alla codifica (1) 25

26 Programma per la lettura e somma di due numeri interi L algoritmo per la lettura e somma di due numeri interi può essere codificato da una applicazione Java l algoritmo viene implementato dal metodo main import fiji.io.*; /* Applicazione che legge dalla tastiera due numeri interi e ne calcola e visualizza la somma. */ class SommaDueNumeri { } public static void main(string[] args) { }... Dall'analisi alla codifica (1) 26

27 Programma per la lettura e somma di due numeri interi public static void main(string[] args) { int a; // il primo numero intero int b; // il secondo numero intero int somma; // la somma di a e b /* leggi dalla tastiera i due numeri interi a e b */ System.out.println("Scrivi due numeri interi"); /* leggi il numero intero a dalla tastiera */ a = Lettore.in.leggiInt(); /* leggi il numero intero b dalla tastiera */ b = Lettore.in.leggiInt(); /* calcola la somma somma di a e b */ somma = a+b; } /* visualizza somma (sullo schermo) */ System.out.print("La somma dei due numeri è "); System.out.println(somma); Dall'analisi alla codifica (1) 27

28 Somma di una sequenza di numeri interi Si consideri il seguente problema di ingresso-uscita si vuole leggere dalla tastiera una sequenza di numeri interi, disposti su una singola linea e separati da spazi, calcolare la somma degli elementi della sequenza e visualizzarla sullo schermo Scrivi una sequenza di numeri interi La somma dei numeri è 23 Dall'analisi alla codifica (1) 28

29 Lettura e somma di una sequenza di numeri interi Problema lettura e somma di una sequenza di numeri interi Dati di ingresso una sequenza di numeri interi A 1, A 2,..., A N Pre-condizione N>=0, i numeri sono disposti su una singola linea e separati da spazi Dati di uscita un numero S Post-condizione S è uguale alla somma A 1 + A A N Dall'analisi alla codifica (1) 29

30 Lettura e somma di una sequenza di numeri interi Parametricità di questo problema la lunghezza della sequenza il valore degli elementi della sequenza Il problema della lettura e somma di una sequenza di numeri interi non può essere risolto da un algoritmo che sia semplicemente una sequenza di istruzioni semplici il numero degli elementi della sequenza non è noto a priori La versione iniziale dell algoritmo è la seguente 1. leggi una sequenza di numeri interi e calcolane la somma somma 2. visualizza somma System.out.println(somma); nel seguito, i raffinamenti ovvi vengono semplicemente indicati e non più commentati Dall'analisi alla codifica (1) 30

31 Raffinamento del passo 1 1. leggi una sequenza di numeri interi e calcolane la somma somma Raffinamento di questo passo 1. leggi una sequenza di numeri interi e calcolane la somma somma 1.1 inizialmente somma vale zero somma = 0; 1.2 finché ci sono altri elementi, leggili e sommali a somma while ( ci sono altri elementi nella sequenza ) { leggi un elemento della sequenza numero dalla tastiera incrementa somma di numero } È già possibile provare ad applicare questo algoritmo ad es., alla sequenza di ingresso Dall'analisi alla codifica (1) 31

32 Uso della variabile somma La variabile somma è usata nell algoritmo per memorizzare la somma degli elementi che sono stati letti dalla tastiera inizialmente, quando nessun elemento della tastiera è stato letto, vale 0 dopo ciascuna operazione di lettura e incremento, è uguale alla somma degli elementi letti dopo la lettura dell intera sequenza, è uguale alla somma di tutti gli elementi della sequenza che è proprio il valore che deve essere calcolato Dall'analisi alla codifica (1) 32

33 Discussione L uso dell istruzione ripetitiva permette di risolvere il problema l algoritmo legge tutti gli elementi della sequenza il corpo dell istruzione ripetitiva viene eseguito tante volte quanti sono gli elementi della sequenza l algoritmo calcola la somma degli elementi letti Dall'analisi alla codifica (1) 33

34 Ulteriori raffinamenti Alcuni ulteriori raffinamenti sono immediati 1.2 finché ci sono altri elementi nella sequenza, leggili e sommali a somma while (ci sono altri elementi nella sequenza) { } leggi un elemento della sequenza numero dalla tastiera numero = Lettore.in.leggiInt(); incrementa somma di numero somma = somma + numero; Che cosa vuol dire somma = somma + numero? Dall'analisi alla codifica (1) 34

35 Raffinamento della condizione while ( ci sono altri elementi nella sequenza ) Rimane da raffinare la condizione dell istruzione ripetitiva bisogna sapere che l oggetto Lettore.in fornisce una operazione boolean eoln() che verifica se è stata raggiunta la fine della linea corrente End Of Line (fine della linea) eoln() verifica se non ci sono altri caratteri che possono essere letti dalla linea corrente la condizione che deve essere usata nell istruzione ripetitiva è la negazione logica della condizione calcolata da eoln() ci sono altri elementi nella sequenza se eoln() è falso l operatore! calcola la negazione di una condizione la condizione dell istruzione ripetitiva può essere scritta come!lettore.in.eoln() Dall'analisi alla codifica (1) 35

36 Algoritmo per la somma di una sequenza di numeri interi 1. leggi una sequenza di numeri interi e calcolane la somma somma 1.1 inizialmente somma vale zero somma = 0; 1.2 finché ci sono altri elementi nella sequenza, leggili e sommali a somma while ( ci sono altri elementi nella sequenza ) while (!Lettore.in.eoln() ) { leggi un elemento della sequenza numero dalla tastiera numero = Lettore.in.leggiInt(); incrementa somma di numero somma = somma + numero; } 2. visualizza somma System.out.println(somma); Dall'analisi alla codifica (1) 36

37 Programma per la somma di una sequenza di numeri int numero; int somma; // elemento corrente della sequenza // somma degli elementi della sequenza /* leggi una sequenza di numeri interi e * calcolane la somma */ /* inizialmente somma vale zero */ somma = 0; /* finché ci sono altri elementi nella sequenza, * leggili e sommali a somma */ while (!Lettore.in.eoln()) { // finché ci sono // altri elementi /* leggi un elemento della sequenza */ numero = Lettore.in.leggiInt(); /* incrementa somma di numero */ somma = somma + numero; } /* visualizza somma */ System.out.println(somma); Dall'analisi alla codifica (1) 37

38 Somma dei pari e dei dispari in una sequenza Si consideri il seguente problema di ingresso-uscita, che è una variante dei problemi precedenti si vuole leggere dalla tastiera una sequenza di numeri interi, disposti su una singola linea e separati da spazi, calcolare la somma degli elementi di valore pari e la somma degli elementi di valore dispari, e visualizzare la somma dei pari e la somma dei dispari sullo schermo Scrivi una sequenza di numeri interi La somma dei pari è 8 La somma dei dispari è 15 Una variante della lettura e somma di una sequenza ci sono due dati di uscita anziché uno solo Dall'analisi alla codifica (1) 38

39 Somma dei pari e dei dispari in una sequenza Per risolvere il problema bisogna gestire una coppia di variabili sommapari la somma degli elementi di valore pari della sequenza sommadispari la somma degli elementi di valore dispari della sequenza Queste due variabili devono essere gestite come segue inizialmente valgono entrambe zero per ogni numero della sequenza se il numero è pari, allora deve essere usato per incrementare sommapari altrimenti il numero è dispari, e deve essere usato per incrementare sommadispari Dall'analisi alla codifica (1) 39

40 Algoritmo per la somma dei pari e dei dispari In questo caso, all interno dell istruzione ripetitiva, deve essere usata una istruzione condizionale if-else per ogni elemento della sequenza deve essere eseguita una tra due istruzioni al verificarsi (o meno) di una condizione una possibile istruzione è l incremento di sommapari l altra possibile istruzione è l incremento di sommadispari comunque deve essere eseguita esattamente una tra queste due istruzioni la condizione è numero è pari l operatore % calcola il resto della divisione tra due numeri interi un numero è pari se diviso per due dà resto zero la condizione dell istruzione condizionale può essere scritta come numero%2==0 Dall'analisi alla codifica (1) 40

41 Uso dell istruzione if-else leggi gli elementi della sequenza e calcola la somma dei pari e la somma dei dispari sommapari = 0; sommadispari = 0; finché ci sono altri elementi nella sequenza, leggili e calcola la somma dei pari e la somma dei dispari while (!Lettore.in.eoln() ) { numero = Lettore.in.leggiInt(); se numero è pari, incrementa sommapari di numero, altrimenti incrementa sommadispari di numero if ( numero%2==0 ) else } sommapari = sommapari + numero; sommadispari = sommadispari + numero; Dall'analisi alla codifica (1) 41

42 Programma per la somma dei pari e la somma dei dispari int numero; // elemento corrente della sequenza int sommapari; // somma degli elementi pari int sommadispari; // somma degli elementi dispari /* leggi una sequenza di numeri interi e calcola * la somma dei pari e la somma dei dispari */ /* inizialmente le somme valgono zero */ sommapari = 0; sommadispari = 0; /* finché ci sono altri elementi nella sequenza, leggili * e calcola la somma dei pari e la somma dei dispari */ while (!Lettore.in.eoln()) { /* leggi un elemento della sequenza */ numero = Lettore.in.leggiInt(); /* se numero è pari, incrementa sommapari di numero, * altrimenti incrementa sommadispari di numero */ Dall'analisi alla codifica (1) 42

43 Programma per la somma dei pari e dei dispari (continua) if (numero%2==0) // se numero è pari /* incrementa sommapari di numero */ sommapari = sommapari + numero; else // altrimenti numero è dispari /* incrementa sommadispari di numero */ sommadispari = sommadispari + numero; } /* visualizza le somme */ System.out.println(sommaPari); System.out.println(sommaDispari); Dall'analisi alla codifica (1) 43

44 Calcolo del massimo di dieci numeri Si consideri il seguente problema di ingresso-uscita si vuole leggere dalla tastiera una sequenza di numeri interi di lunghezza fissata (ad esempio, di lunghezza 10), calcolare il valore massimo degli elementi e visualizzarlo sullo schermo Scrivi una sequenza di dieci numeri interi Il valore massimo calcolato e : 12 Dall'analisi alla codifica (1) 44

45 Calcolo del massimo di una sequenza di 10 numeri interi Problema lettura di una sequenza di 10 numeri interi e calcolo del valore massimo degli elementi Dati di ingresso una sequenza di dieci numeri interi A 1, A 2,..., A 10 Pre-condizione nessuna Dati di uscita un numero max Post-condizione max è il massimo degli elementi della sequenza A 1, A 2,..., A 10 Dall'analisi alla codifica (1) 45

46 Algoritmo per il calcolo del massimo tra 10 interi L algoritmo può essere realizzato gestendo le seguenti variabili num cont max valore dell elemento corrente della sequenza contatore degli elementi della sequenza già letti valore massimo degli elementi della sequenza già letti La gestione delle variabili max e cont avviene come segue inizialmente cont vale 0 leggi il primo numero num, assumilo provvisoriamente come valore del massimo max, e incrementa cont di uno per ogni numero num letto max deve essere confrontato con num ed eventualmente modificato cont deve essere incrementata di uno Dall'analisi alla codifica (1) 46

47 Algoritmo per il calcolo del massimo tra 10 interi Leggi una sequenza di dieci numeri interi e calcolane il massimo: 1. inizializza il contatore dei numeri letti cont = 0; 2. leggi un numero num da input 3. inizializza max max = num; 4. incrementa il contatore dei numeri letti cont = cont + 1; 5. finché ci sono ancora numeri da leggere while (cont <= 9) 5.1 leggi un numero num 5.2 confronta num con max se num > max memorizza il contenuto di num in max if (num > max) max = num; 5.3 incrementa cont cont = cont + 1; 6. il risultato è max Dall'analisi alla codifica (1) 47

48 Codifica per il calcolo del massimo tra 10 interi int num; int max; int cont; //numero letto //massimo calcolato //contatore dei numeri letti //precondizioni sequenza non vuota: almeno un elemento /* inizializzazione del contatore */ cont = 0; /* lettura del primo numero - fuori dal ciclo */ System.out.println("Scrivi una sequenza di 10 numeri interi"); num = Lettore.in.leggiInt(); /* appena leggo un numero incremento il contatore */ cont = cont + 1; /* essendo l'unico numero letto esso e' il massimo */ max = num;... Dall'analisi alla codifica (1) 48

49 ... Codifica per il calcolo del massimo tra 10 interi /* devono essere letti altri 9 numeri */ while (cont <= 9){ /* lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); cont = cont+1; /* se num e' maggiore del max, aggiorno max */ if (num > max) max = num; } System.out.print( Il valore massimo calcolato e : "); System.out.println(max); Dall'analisi alla codifica (1) 49

50 Applicazione per il calcolo del massimo tra 10 interi... import fiji.io.*; /* Applicazione che calcola il massimo tra 10 numeri */ class Max10Numeri{ public static void main(string[] args){ int num; //numero letto int max; //massimo calcolato int cont; //contatore dei numeri letti... //precondizioni sequenza non vuota: almeno un elemento /* inizializzazione del contatore */ cont = 0; /* lettura del primo numero - fuori dal ciclo*/ System.out.println("Scrivi una sequenza di 10 numeri interi"); num = Lettore.in.leggiInt(); Dall'analisi alla codifica (1) 50

51 ... Applicazione per il calcolo del massimo tra 10 interi... /* appena leggo un numero incremento il contatore */ cont = cont + 1; /*essendo l'unico numero letto esso e' il massimo */ max = num; /* devono essere letti altri 9 numeri */ while (cont <= 9){ /*lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); cont = cont + 1; /* se num e' maggiore del max, aggiorno max */ if (num > max) max = num; } System.out.print("valore massimo calcolato e : "); System.out.println(max); } } Dall'analisi alla codifica (1) 51

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e

Dettagli

Problemi, algoritmi e oggetti

Problemi, algoritmi e oggetti Fondamenti di informatica Oggetti e Java Luca Cabibbo Capitolo 5 Marzo 2007 1 Fondamenti di informatica: Oggetti e Jav Contenuti... Problemi e algoritmi comprensione del problema identificazione di un

Dettagli

Dall analisi alla codifica (2)

Dall analisi alla codifica (2) Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Dall analisi alla codifica (2) Aprile 2010 Dall analisi alla codifica (2) 1 Contenuti Problemi di ingresso e uscita (esempi ed esercizi)

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Novembre 2011 1 Contenuti q Somma di una sequenza di numeri interi

Dettagli

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E07 Iterazione C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Iterazione 1 Contenuti Si vogliono formalizzare

Dettagli

Iterazione (introduzione)

Iterazione (introduzione) Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Esercizi sui metodi Carla Limongelli Maggio 2010 Esercizi 1 Passaggio di parametri di tipo primitivo Indicare che cosa viene visualizzato sullo

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

L ELABORATORE ELETTRONICO!

L ELABORATORE ELETTRONICO! L ELABORATORE ELETTRONICO! Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzioni di controllo Iterative Condizionali Algoritmi e Diagrammi di flusso Esercizi 28/03/2011 2 Istruzioni iterative while do

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Correttezza (prima parte)

Correttezza (prima parte) Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di

Dettagli

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie Università degli Studi di Verona Dipartimento di Biotecnologie Laurea in Biotecnologie Corso di Informatica2014/2015 Algoritmie Diagrammidiflusso Gennaio 2015 - Sergio Marin Vargas Problemi e soluzioni

Dettagli

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

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 3. Espressioni booleane I comandi if-else e while Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if

Dettagli

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota Corso di Problemi ed algoritmi Ing Pasquale Rota Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso Problemi ed algoritmi - Ing. Pasquale Rota 2 Proprietà degli algoritmi

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1 Corso di Laurea Ingegneria Civile Elementi di Informatica Esercizi Carla Limongelli Esercizi 1 Quanti giorni in un mese? Scrivere un metodo che ricevuto in input un mese e un anno, restituisca il numero

Dettagli

Elaboratore Elettronico

Elaboratore Elettronico L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati)) per produrre rre altri oggetti

Dettagli

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

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina Algoritmo Dato un problema, un algoritmo

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Lezione 6 programmazione in Java

Lezione 6 programmazione in Java Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi 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)

Dettagli

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Dettagli

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Richiami di Fondamenti di Informatica - 1

Richiami di Fondamenti di Informatica - 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Richiami di Fondamenti di Informatica - 1 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Richiami di FdI-1

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda

Dettagli

Formalismi per la descrizione di algoritmi

Formalismi per la descrizione di algoritmi Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano

Dettagli

Esempi di Problemi Iterativi

Esempi di Problemi Iterativi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E07 C. Limongelli Dicembre 2011 1 Contenuti q Esercizi: Palindroma Anagramma Fibonacci 2 Palindroma q Scrivere un programma che

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni

Dettagli

Esempi di Problemi Iterativi

Esempi di Problemi Iterativi Corso di Laurea Ingegneria Civile Elementi di Informatica Esempi di Problemi Iterativi C. Limongelli Esempi di Problemi Iterativi 1 Contenuti Esercizi: Palindroma Anagramma Fibonacci Esempi di Problemi

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzione condizionale switch Istruzioni di salto break e continue Uso di variabili di tipo boolean Variabili di tipo array (monodimensionali)

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Strutture di controllo iterative

Strutture di controllo iterative Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Dettagli

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

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione

Dettagli

Le strutture di controllo

Le strutture di controllo INFORMATICA B Ingegneria Elettrica Le strutture di controllo Selezione un esempio introduttivo Si disegni il diagramma di flusso di un algoritmo che chiede all utente un valore intero e visualizza il suo

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 06 Programmi e Oggetti Software Marzo 2010 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

1 Esercizi in pseudocodice

1 Esercizi in pseudocodice Questa dispensa propone esercizi sulla scrittura di algoritmi in un linguaggio semiformale, utile all acquisizione delle abilità essenziali per implementare algoritmi in qualsiasi linguaggio di programmazione.

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE INTRODUZIONE ALLE ISTRUZIONI ITERATIVE DISPENSA 03.01 03-01_Iterazioni_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative

Dettagli

Esercitazioni di Fondamenti Informatica - Modulo A 1

Esercitazioni di Fondamenti Informatica - Modulo A 1 Esercitazioni di Fondamenti Informatica - Modulo A 1 Da MSDN: The while statement executes a statement or a block of statements until a specified expression evaluates to false while ( expression ) statement

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

Costrutti iterativi. Utilizzo dei costrutti iterativi

Costrutti iterativi. Utilizzo dei costrutti iterativi Costrutti iterativi Utilizzo dei costrutti iterativi Costrutti iterativi (1/3) I costrutti iterativi permettono di eseguire ripetutamente del codice Il linguaggio Java mette a disposizione tre costrutti

Dettagli

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Programmazione a blocchi. Algobuild Prof. Sergio Roselli Programmazione a blocchi Algobuild Prof. Sergio Roselli Blocchi base Inizio programma I Fine programma F Input IN A Output Esecuzione OUT A A = 5 + 1 L interprete Algobuild Algobuildpermette di trascrivere

Dettagli

ALGORITMI: PROPRIETÀ FONDAMENTALI

ALGORITMI: PROPRIETÀ FONDAMENTALI ALGORITMI: PROPRIETÀ FONDAMENTALI Non si può risolvere un problema senza prima fissare un insieme di azioni, i di mosse elementari possibili per l'esecutore. Bisogna conoscerne le caratteristiche, le mosse

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Programmi e Oggetti Software Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Programmi e Oggetti Software

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

La principale modalità di calcolo è l applicazione di funzioni

La principale modalità di calcolo è l applicazione di funzioni 1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un

Dettagli

Cosa si intende con stato

Cosa si intende con stato Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando

Dettagli

Teoria dell Informazione

Teoria dell Informazione Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

unità didattica 3 Le strutture condizionali e le strutture iterative

unità didattica 3 Le strutture condizionali e le strutture iterative unità didattica 3 Le strutture condizionali e le strutture iterative 1. La struttura condizionale Il Pascal prevede la codifica della struttura condizionale (indicata anche con il nome di struttura dell

Dettagli

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 17. Correttezza. Maggio Correttezza

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 17. Correttezza. Maggio Correttezza Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 17 Maggio 2010 1 Contenuti Introduzione alla correttezza dei metodi specifica di un metodo correttezza di un metodo correttezza e responsabilità

Dettagli

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

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dal Problema all Algoritmo Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Cosa Impareremo Informazioni e codici Definizione e soluzione di un problema Individuazione dei dati Definizione

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) INFORMATICA Cosa è l informatica Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) E una scienza E una tecnologia Cosa può essere automatizzato nell

Dettagli

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Dettagli

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione Il Progetto degli Algoritmi Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Dal problema a un programma comprensibile dal calcolatore

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Strutture di Controllo

Strutture di Controllo Introduzione Strutture di Controllo per strutture condizionali e cicliche Quando si affronta la programmazione si devono indicare al computer delle istruzioni da eseguire. Se il computer potesse comprendere

Dettagli

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1 Valori Alfanumerici Finora abbiamo utilizzato solo valori numerici; Se vogliamo usare valori alfanumerici (caratteri e numeri), usiamo le stringhe; In Logo le stringhe si delimitano con le parentesi quadre;

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

CORSO DI ELEMENTI DI INFORMATICA

CORSO DI ELEMENTI DI INFORMATICA CORSO DI ELEMENTI DI INFORMATICA Corso di Laurea Triennale in Ingegneria Gestionale della Logistica e della Produzione Area didattica Ingegneria Elettrica a.a. 2016/2017 Docente: Ing. Domenico Amalfitano

Dettagli

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica 15 dicembre 2008 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.

Dettagli

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli