La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

Presentazioni simili


Presentazione sul tema: "ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE."— Transcript della presentazione:

1 ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE

2 ALGORITMO 2 PROGRAMMAZIONE STRUTTURATA Teorema di Jacopini Böhm (1966) Qualunque algoritmo può essere implementato utilizzando le tre sole strutture di controllo: sequenza selezione iterazione Tutti i linguaggi imperativi implementano le strutture di controllo fondamentali con opportune istruzioni Naturalmente la forma sintattica può a volte variare leggermente, ma il funzionamento rimane identico

3 ALGORITMO 3 STRUTTURE DI CONTROLLO PRIMITIVE necessarie e sufficienti per risolvere qualsiasi algoritmo (teorema di Bohm-Jacopini) SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE con il controllo in coda ITERAZIONE con controllo in testa ITERAZIONE ENUMERATIVA SCELTA (o selezione) MULTIPLA NON PRIMITIVE derivate da quelle primitive

4 ALGORITMO 4 LA SEQUENZA E un insieme di azioni da svolgere secondo un ordine prefissato. Lordine di esecuzione è dalla prima allultima istruzione seguendo un percorso unico. In Java si utilizza { per indicare linizio della sequenza di istruzioni } per indicare la fine della sequenza ……….. istruzione-1 istruzione-2 istruzione-3 …………… Flow chart pseudocodifica

5 ALGORITMO 5 Esempio di istruzioni in sequenza inizio { scrivi indica il prezzo" leggi PREZZO scrivi indica lo sconto" leggi SCONTO c PREZZO – SCONTO scrivi il prezzo scontato è c } fine PROBLEMA: dato il prezzo di un prodotto e lo sconto effettuato, calcolare e comunicare il prezzo scontato Si propone lalgoritmo disegnato con la tecnica del flow-chart e con la tecnica della pseudocodifca. INIZIO FINE C PREZZO - SCONTO Scrivi il prezzo è C Leggi PREZZO Scrivi indica lo sconto Leggi SCONTO Scrivi indica il prezzo nomeI/OV/CN/Adescrizione PREZZOIVN decimalePrezzo del prodotto SCONTOIVN decimaleSconto effettuato COVN decimalePrezzo scontato soluzione ESERCIZIO: PREZZO codifica il programma descritto nellalgoritmo

6 ALGORITMO 6 Alcune osservazioni sulle tecniche per descrivere lalgoritmo La descrizione di un algoritmo può essere fatta sia con la tecnica del flow-chart che con la tecnica della pseudocodifca. Sono equivalenti, quindi nel seguito ne verrà proposta solo una. Laddove è sufficientemente chiaro, non verranno indicate le istruzioni di output che servono per chiedere allutente di indicare i dati. Ad esempio: INIZIO FINE C PREZZO - SCONTO Scrivi il prezzo è C Leggi PREZZO Scrivi indica lo sconto Leggi SCONTO Scrivi indica il prezzo Leggi PREZZO Scrivi indica il prezzo verrà sostituita dalla sola istruzione Leggi PREZZO La tabella dei dati deve essere sempre descritta

7 ALGORITMO 7 Esercizi proposti sulla sequenza Fornito un valore in input, calcolarne il doppio del quadrato del successivo. Dato un numero in input, calcolare la somma tra il suo doppio e la sua metà. Si devono comprare 3 kg mele e 2 kg di pere; dato in input il prezzo al kg di ciascun prodotto, calcolare la spesa finale Date le coordinate di un punto in un piano cartesiano, calcolare la sua distanza dal centro

8 ALGORITMO 8 LA SELEZIONE (scelta logica ) Nel diagramma a blocchi compaiono due possibili percorsi in base al verificarsi o meno di una condizione. Se la condizione è vera si segue il ramo del SI, se è falsa, il ramo del NO. Con questa struttura si seleziona in modo esclusivo una determinata sequenza/blocco di istruzioni da eseguire sulla base di una rappresentata da una espressione booleana, che può essere vera o falsa Flow chart pseudocodifica se (condizione) { blocco_istruzioni_1 } altrimenti { blocco_istruzioni_2 } Nella pseudocodifica, se la condizione è vera si esegue il primo blocco di istruzioni, se è falsa, si esegue il secondo blocco di istruzioni COND NO SI

9 ALGORITMO 9 Esempio di struttura di selezione Calcolo di D D 0 SI NO Calcolo due radici reali Non ci sono radici reali Data lequazione di 2° grado: Ax 2 + Bx + C = 0 Per trovare le soluzioni reali è necessario calcolare il valore del discriminante D: D = B AC Se D 0 calcolo delle due radici reali dellequazione altrimenti lequazione non ha radici reali.

10 ALGORITMO 10 AZIONI DI TIPO LOGICO Si dice enunciato una proposizione che può essere soltanto vera o falsa ESEMPI DI ENUNCIATI: Dato un enunciato, possiamo esaminare la sua condizione ossia lessere vero o falso e in base a tale valutazione possiamo prendere delle decisioni. Un enunciato può essere vero o falso, ma non entrambe le cose La verità o la falsità di un enunciato sono dette valori di verità e tali valori corrispondono agli unici due valori dellalgebra booleana Vero Falsorappresentati anche con 1 0; ROMA è composta da 4 lettere vero 7 > 3 vero 7 > 12 falso A > Bdipende dal valore assunto dalle variabili A e B NON E UN ENUNCIATO forse pioverà non è né vero né falso

11 ALGORITMO 11 AZIONI DI TIPO LOGICO COMPOSTE Gli enunciati possono essere composti ossia formati da sottoenunciati collegati tra loro da connettivi Connettivo AND (prodotto logico) Siano p e q due enunciati; esaminiamo le tavole di verità dei connettivi AND, OR, NOT pqp AND q VVV VFF FVF FFF Connettivo OR (somma logica) pqp OR q VVV VFV FVV FFF Connettivo NOT (negazione) pNOT p VF FV

12 ALGORITMO 12 Sintassi della struttura di Selezione In Java la struttura di selezione si codifica così if (condizione) istruzione1; else istruzione2 ; Se sono presenti più istruzioni in ciascun ramo RICORDA: Le istruzioni che fanno parte della sequenza sono racchiuse tra le parentesi graffe. if (condizione) { istruzione1; istruzione2; …. } else { istruzione...; … }

13 ALGORITMO 13 Esempio Istruzione di Selezione a due vie // // Selezione.java // import java.util.Scanner; // program uses class Scanner public class Selezione { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); int number1; // read a System.out.print( "Enter an integer: " ); // prompt number1 = input.nextInt(); // read first number from user if((number1%2)==0) { System.out.printf( Il numero e pari %d\n, number1 ); } else { System.out.printf( Il numero e dispari %d\n, number1 ); } } // end method main } // end class Selezione istruzione precedente PROBLEMA: dato un numero si comunichi se il numero è pari o dispari INIZIO FINE Scrivi il numero è dispari Leggi a a %2=0 VF Scrivi il numero è pari soluzione ESERCIZIO: NUMERO POSITIVO acquisire un numero e comunicare se è positivo o negativo

14 ALGORITMO 14 LA SELEZIONE A UNA VIA Sinora abbiamo esaminato casi in cui in base alla condizione si potevano eseguire due diverse azioni alternativamente. In alcuni casi invece è possibile scegliere di compiere o non compiere unazione; in tal caso lazione da eseguire deve essere posta sul ramo del SI. COND SINO In questo caso la codifica in Java è: if (condizione) istruzione1; o nel caso di più istruzioni: if (condizione) { istruzione1; istruzione2; ………….; } La clausola else (altrimenti) in queste situazioni non viene codificata

15 ALGORITMO 15 Esempio Istruzione di Selezione a una via PROBLEMA: dato un numero intero si comunichi il valore della radice quadrata del suo valore assoluto // // Selezione2.java // import java.util.Scanner; // program uses class Scanner public class Selezione2 { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); int number1; // read a double number2; System.out.print( "Enter an integer: " ); // prompt number1 = input.nextInt(); // read first number from user /*if(number1<0) { number1=-number1; }*/ number1 = Math.abs(number1); System.out.printf("Il valore assoluto e' %d\n", number1 ); number2 = Math.sqrt(number1); System.out.printf("La radice quadrata e' %f\n", number2 ); } // end method main } // end class Selezione2 INIZIO FINE Leggi a a >=0 FV a = abs(a); b = sqrt(a); Scrivi b ESERCIZIO: VOTI acquisire 3 voti, calcolare e comunicare la media; se la media è insufficiente, comunicare devi fare i corsi di recupero soluzione

16 ALGORITMO 16 Strutture di Controllo if-else Nidificati A volte si possono usare istruzioni di selezione ( a una o a due vie) nidificate, ossia le istruzioni da eseguire al verificarsi della condizione sono a loro volta istruzioni condizionali Il processo può essere ripetuto a molti livelli Occorre porre molta attenzione nellutilizzare una tale struttura, poiché facilmente ci si perde nellesaminare le varie condizioni ESERCIZIO: NUMERO POSITIVO O NULLO Acquisire un numero e comunicare se è positivo, negativo o nullo Istruzione Successiva Condizione I1 Vera Falsa Istruzione Precedente Condizione I2 VeraFalsa Condizione I3 VeraFalsa I4 soluzione

17 ALGORITMO 17 Esercizi proposti sulla selezione Dati 2 voti, calcolare la media ; se la media è sufficiente, comunicare alunno promosso altrimenti comunicare alunno rimandato Volendo fare la spesa, si ha a disposizione una certa cifra iniziale. Conoscendo limporto da spendere, verificare se la spesa è possibile Dati tre numeri, stabilire se possono essere le misure dei lati di un triangolo rettangolo. Viene fornito in input il punteggio di un candidato ad un concorso. Se tale punteggio è compreso tra 0 e 27, visualizzare RESPINTO, tra 28 e 40 visualizzare AMMESSO, in tutti gli altri casi ERRORE.

18 ALGORITMO 18 ITERAZIONE CON CONTROLLO IN CODA ( do…while ) Per iterazione si intende la ripetizione di una o più azioni sotto il controllo di una condizione. Il gruppo di azioni da ripetere è detto corpo del ciclo In Java, il ciclo che si ripete mentre la condizione è vera; quando la condizione è falsa il ciclo si interrompe, quindi è necessario che allinterno del corpo vi sia una istruzione che modifichi il valore della condizione, altrimenti il ciclo va in loop Nelliterazione con il controllo in coda, la condizione da verificare si trova dopo il corpo del ciclo Il corpo del ciclo verrà eseguito almeno una volta. Condizione Istruzione Precedente Corpo Istruzione Successiva Vera Falsa

19 ALGORITMO 19 Esecuzione di un ciclo do..while ESERCIZIO: Leggi ripetutamente un numero finchè il numero letto è > 0 // // Ciclo.java // import java.util.Scanner; // program uses class Scanner public class Ciclo { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); int number1; // read a do { System.out.print( "Dammi un numero: " ); // prompt number1 = input.nextInt(); // read first number from user if(number1<=0) { System.out.println( "Numero non positivo-ripetere"); } while(number1<=0); System.out.println( "Fine"); } // end method main } // end class Ciclo La struttura do..while, consente di eseguire ripetutamente il corpo del ciclo anche per un numero di volte indeterminato schermo Dammi un numero - 30 Numero non positivo-ripetere Dammi un numero Numero non positivo-ripetere Dammi un numero Fine Questa struttura può essere utilizzata per il controllo dei dati in input

20 ALGORITMO 20 num=5 cont=1 ris=num*cont scrivi ris cont=cont+1 cont 10 s N ESERCIZIO: Visualizzazione dei primi 10 multipli di 5 Inizio ciclo Istruzioni interne al ciclo ripetute mentre la variabile cont è minore o uguale a 10 Condizione di fine ciclo (quando cont supera 10) Codifica in Java: int num=5; int cont=1; int ris=0; do { ris=num*cont; System.out.printf(%d, ris); cont++; } while (cont<=10); Esempio di iterazione con controllo in coda

21 ALGORITMO 21 RICORDA: Quando si fa riferimento ad una condizione (sia nella scelta che nelliterazione) si intende che è possibile utilizzare anche condizioni composte. Si ottengono condizioni composte legando due o più condizioni con gli operatori logici: AND OR NOT In C++ AND prodotto logico&& OR somma logica| | NOT negazione! Esempi in Java:OR nella selezioneif ((a>0) || (b>0)) …..; AND nella ripetizionedo { ….. ….. } while ((a>0) && (b>0)); ESERCIZIO: BENVENUTO Acquisire il nome di una persona e il sesso (tramite lettera m o f) e scrivere come messaggio: Buongiorno, signor … oppure Buongiorno signora ….. seguito da nome soluzione

22 ALGORITMO 22 Esercizi proposti sulla iterazione con controllo in coda Dato in input un numero positivo (NUM>0), visualizzarne linverso (INV=1/NUM), il doppio (DOP=2*NUM), il quadrato (QUAD=NUM*NUM). Visualizzare i primi N numeri pari, con N intero positivo fornito in input. Visualizzare la somma dei primi N interi, con N>3 fornito in input. Oss: literazione è sul controllo dellinput

23 ALGORITMO 23 STRUTTURE NON PRIMITIVE ITERAZIONE CON CONTROLLO IN TESTA ITERAZIONE ENUMERATIVA SCELTA (O SELEZIONE) MULTIPLA Si tratta di strutture che derivano da quelle primitive di selezione e iterazione con controllo in coda Pur non essendo teoricamente indispensabili rendono più semplice ed efficace lattività di programmazione

24 ALGORITMO 24 ITERAZIONE CON CONTROLLO IN TESTA ( while …) Codifica in Java while (cond) { istruzione1; istruzione2; } La caratteristica di questa iterazione è che la condizione da verificare si trova prima delle azioni da eseguire (corpo). Il while verifica la condizione allinizio del ciclo per cui se inizialmente la condizione risulta falsa il corpo del ciclo non viene mai eseguito Affinchè il ciclo while, nel caso la condizione sia stata inizialmente trovata vera, abbia la possibilità di terminare è necessario che allinterno del corpo vi sia una istruzione che modifichi il valore della condizione s COND N istruzione1 istruzione2

25 ALGORITMO 25 Esecuzione di un ciclo while ESERCIZIO: Leggi ripetutamente un numero in ingresso e calcolane la radice quadrata fino a quando il numero letto è > 0 // // Ciclo2.java // import java.util.Scanner; // program uses class Scanner public class Ciclo2 { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); System.out.print( "Dammi il primo numero: " ); // prompt int number1; // read a number1 = input.nextInt(); // read first number from user while(number1>0) { System.out.println(Math.sqrt(number1)); System.out.print( "Dammi un altro numero: " ); // prompt number1 = input.nextInt(); // read first number from user } System.out.println( "Fine"); } // end method main } // end class Ciclo2 Dammi un altro num. 25 schermo Dammi il primo num Dammi un altro num.0 Fine Anche la struttura while…, consente di eseguire ripetutamente il corpo del ciclo anche per un numero di volte indeterminato

26 ALGORITMO 26 Esempio di iterazione con controllo in testa num=5 cont=1 N ESERCIZIO:Visualizzazione dei primi 10 multipli di 5 Istruzioni ripetute allinterno del ciclo Condizione di inizio ciclo (mentre cont 10) Codifica in Java: num=5; cont=1; while (cont<=10) { ris=num*cont; System.out.printf(%d, ris); cont++; } s cont 10 ris=num*cont scrivi ris cont=cont+1 fine ciclo

27 ALGORITMO 27 ITERAZIONE ENUMERATIVA (for) Ha questo nome poiché si tratta di uniterazione in cui si conosce quante volte il ciclo viene ripetuto. Indicata nella gestione degli array monodimensionali (vettori) o bidimensionali (matrici) poiché in queste strutture è obbligatorio dichiarare di quanti elementi sono formate. Literazione enumerativa è derivata dalla iterazione con controllo in testa, perciò la sua rappresentazione con il flow-chart sarà simile a quella delliterazione con controllo in testa. E però presente una variabile intera di controllo del numero ripetizioni del corpo del ciclo. Tale variabile viene inizializzata fuori ciclo, incrementata nel ciclo e controllata nella condizione di uscita dal ciclo (ciclo contatore).

28 ALGORITMO 28 Esempio di iterazione enumerativa ESERCIZIO:Visualizzazione dei primi 10 multipli di di 5 (contatore sulla variabile cont) Codifica in Java: num=5; for (cont=1;cont<=10;cont++) { ris=num*cont; System.out.printf(%d, ris); } num=5 cont=1 s cont 10 ris=num*cont scrivi ris cont=cont+1 inizializzazione controllo incremento

29 ALGORITMO 29 Codifica in Java dell iterazione enumerativa for ( espressione1; espressione2 ; espressione3 ) istruzione; Listruzione for è composta da tre espressioni separate dal ; la prima è di inizializzazione, la seconda di controllo, la terza di incremento. Lordine di esecuzione è il seguente: 1) esecuzione dellespressione1 (una sola volta) 2) controllo dellespressione2 (ripetuta dopo ogni incremento) 3) esecuzione dellistruzione (se espressione2 è vera, altrimenti si esce dal ciclo) 4) esecuzione dellespressione3 (incremento e ritorno al punto 2)

30 ALGORITMO 30 Quando si equivalgono while / for float lato, area; int i; for (i=0; i<3; i++) { ….. } float lato, area; int i; i=0; while (i<3) { …. i++; } Esempio di equivalenza strutture iterative while e for per iterazioni controllate da contatore in Java:

31 ALGORITMO 31 Letto da tastiera un numero N positivo, acquisire N numeri e calcolarne la media Letto da tastiera un numero N positivo, acquisire N numeri e calcolare la somma e la media dei positivi e la somma e la media dei negativi Esercizi proposti sulla iterazione enumerativa

32 ALGORITMO 32 SCELTA MULTIPLA si sceglie di compiere o non compiere unazione si sceglie di compiere, in modo esclusivo, una tra due azioni Nella scelta logica Nella realtà capita di dover compiere, in modo esclusivo, una tra più azioni La scelta multipla è derivata dalla scelta logica (selezione) ma consente di scegliere tra più azioni

33 ALGORITMO 33 Esempio tipico di scelta multipla è quello di un programma che permette allutente, attraverso un menù iniziale, di scegliere tra le funzioni offerte. Tale situazione è risolvibile mediante una serie di scelte logiche Molti linguaggi di programmazione, tra cui il Java, agevolano il programmatore mettendo a disposizione la scelta multipla Esempio di scelta multipla

34 ALGORITMO 34 Rappresentazione della scelta multipla nel diagramma a blocchi X istr1istr2istr3istr4istrd X: variabile di cui va analizzato il contenuto Valori che si prevede possa assumere X (1, 2, 3, 4) default Default racchiude tutti i valori diversi da quelli previsti istr1, istr2,… rappresentano le istruzioni da eseguire. Se nella variabile X cè il valore 1 viene eseguito il gruppo di istruzioni istr1, se in X cè il valore 2 le istruzioni istr2 e così via.

35 ALGORITMO 35 In Java la Selezione Multipla è rappresentata dalla istruzione switch-case switch (variabile){ case : ; break; case : ; break;.... case : ; break; default : ; break; } Sintassi della selezione multipla in C++ le espressioni costanti costante1, costante2,..., costanten devono essere di tipo intero In Java i caratteri sono assimilati agli interi (ne viene considerata la codifica interna in ASCII) listruzione break serve per terminare lo switch dopo aver eseguito solo la sequenza associata ad una particolare scelta (case) e proseguire con listruzione successiva allo switch-case; nel costrutto può comparire la clausola default per individuare la sequenza di operazioni da compiere quando il valore esaminato non coincide con alcuno di quelli specificati

36 ALGORITMO 36 class SwitchStagione { public static void main(String args[]) { int mese=4; String stagione; switch (mese) { case 12: case 1: case 2: stagione="inverno; break; case 3: case 4: case 5: stagione="primavera; break; //senza questo break si ha estate case 6: case 7: case 8: stagione="estate; break; case 9: case 10: case 11: stagione="autunno; break; default: //la clausola default ® opzionale stagione="non identificabile; } System.out.println("La stagione e' "+stagione+"."); } Semplice esempio di Semplice esempio di switch-case in Java ESERCIZIO:dato un numero intero, visualizza il nome del giorno della settimana corrispondente

37 ALGORITMO 37 Prevedere un programma che visualizzi un menù con tutte le materie scolastiche. Scelta una particolare materia, dovrà comparire il nome dellinsegnante. Assegnazione dei premi ad unestrazione. Viene generato un intero casuale compreso tra 1 e 4 con i seguenti abbinamenti: 1 vincita di un Personal Computer 2 vincita di una telecamera 3 vincita di un videoregistratore 4 vincita di una macchina fotografica Dato un numero compreso tra 1 e 12, indicare il nome del mese corrispondente Esercizi proposti sulla selezione multipla


Scaricare ppt "ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE."

Presentazioni simili


Annunci Google