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 LALGORITMO Informalmente, un algoritmo è una procedura ben definita che serve per risolvere un dato problema E una sequenza di passi che prende dei valori come input e produce altri valori come output Più precisamente, un algoritmo è un procedimento di calcolo, descrivibile con un numero finito di operazioni che conducono al risultato

3 ALGORITMO 3 Diffusione degli algoritmi Le tecniche di progettazione di algoritmi e di analisi di correttezza e di efficienza si sono evolute nella seconda metà del XX secolo grazie alla diffusione dei calcolatori elettronici Ovunque si impieghi un calcolatore occorrono algoritmi corretti e efficienti che ne utilizzino al massimo le possibilità Esempi di algoritmi efficienti:controllo dei voli aerei regolazione reattori nucleari reperimento dinformazioni da archivi smistamento di comunicazioni telefoniche gioco degli scacchi controllo della produzione di una catena di montaggio

4 ALGORITMO 4 IL PROGRAMMA In ambito informatico, un algoritmo viene descritto tramite un programma, ossia un testo scritto in uno specifico linguaggio detto linguaggio di programmazione per essere eseguito da calcolatori elettronici Gli algoritmi sono astratti e per controllarne il funzionamento devono essere realizzati con un qualche strumento concreto Ad esempio la descrizione di una ricetta di cucina è un algoritmo ma la preparazione della pietanza è la realizzazione della ricetta. E solo allora che si vede se la ricetta funziona Altro esempio può essere rappresentato da una qualsiasi formula matematica, che rappresenta, nel linguaggio matematico un procedimento. Ma la bontà di tale regola può essere verificata solo con dei veri e propri calcoli, sostituendo alle variabili dei veri numeri.

5 ALGORITMO 5 Lalgoritmo e il programma Invece: Le proprietà degli algoritmi sono talmente fondamentali, generali e robuste, da essere indipendenti dalle caratteristiche di specifici linguaggi di programmazione o di particolari calcolatori elettronici Quindi: PER RISOLVERE UN PROBLEMA E ASSOLUTAMENTE NECESSARIO TROVARE UN PROCEDIMENTO RISOLUTIVO DESCRIVIBILE CON UN ALGORITMO, E SOLO DOPO SI PUO PASSARE A SCRIVERE IL PROGRAMMA Ogni linguaggio di programmazione ha una sua sintassi ed una propria rappresentazioni dei dati, e utilizza le proprie operazioni di manipolazione dei dati

6 ALGORITMO 6 PROGRAMMA = ISTRUZIONI + DATI Un programma può essere visto come un manipolatore di dati: a fronte di dati in ingresso che descrivono il problema producono dati in uscita come risultato del problema INPUT ( dati) OUTPUT (dati) PROCESSO ( istruzioni) Le operazioni sui dati sono le istruzioni. I dati sono gli oggetti su cui vengono eseguite le istruzioni. Tutti i linguaggi di programmazione prevedono un insieme di dati e istruzioni che il programmatore può utilizzare nella realizzazione dei propri programmi.

7 ALGORITMO 7 I DATI I dati possono essere distinti in base a : Utilizzo allinterno del processo INPUT OUTPUT LAVORO Formato NUMERICO ALFANUMERICO Valore assunto durante il processo INTERO DECIMALE VARIABILE COSTANTE Questi aspetti dei dati devono essere definiti già nellalgoritmo, in modo da poterli poi tradurre con la sintassi propria del linguaggio di programmazione

8 ALGORITMO 8 LE ISTRUZIONI Anche le istruzioni devono essere scritte rispettando la sintassi propria del linguaggio di programmazione Ogni linguaggio di programmazione ha le proprie istruzioni, ma tutti i linguaggi devono possedere alcune istruzioni per compiere le azioni fondamentali Acquisire i dati su cui attivare il processo di elaborazioneinput Comunicare allesterno i risultati ottenutioutput Azioni di tipo aritmetico assegnazione - assegnare un valore ad una variabile - utilizzare gli operatori aritmetici (+, -, /, *, %) Azioni di tipo logico confronto - Utilizzare gli operatori di relazione( =,, =, <>) per confrontare il contenuto di due variabili - Utilizzare gli operatori logici (and, or, not)

9 ALGORITMO 9 ISTRUZIONI DI OUTPUT Sono le istruzioni che visualizzano dati e messaggi a video INIZIO FINE Scrivi ciao! Sono il computer #include using namespace std; int main( ) { cout<<"\nciao! Sono il computer; system("PAUSE"); } Nellalgoritmo il comando di output è scrivi seguito dal messaggio o dal dato che si deve far vedere a video Esempio: scrivere un programma che manda un messaggio a video In linguaggio C++ listruzione ècout<< Il messaggio deve essere inserito tra virgolette ESERCIZIO : messaggio Codifica un programma che manda a video il seguente messaggio: Ciao! Io sono il Computer! Benvenuto nel mio mondo! soluzione

10 ALGORITMO 10 ISTRUZIONI DI INPUT Sono le istruzioni che acquisiscono dati digitati da tastiera Esempio: scrivere un programma che legge un numero e le riscrive a video In linguaggio C++ listruzione ècin>> Il dato deve essere stato definito prima dellacquisizione Leggi numero #include using namespace std; int main() { int numero; cout >numero; cout<<"\nil numero indicato vale :; cout<

11 ALGORITMO 11 Esempio di esecuzione di input e di output #include using namespace std; int main() { int numero; cout<<"\nindica un numero"<>numero; cout<<"\nil numero indicato vale :; cout<

12 ALGORITMO 12 OUTPUT DI DATI Nellesempio precedente abbiamo visto loutput di un dato numerico: cout<

13 ALGORITMO 13 ISTRUZIONI DI ASSEGNAZIONE Listruzione di assegnazione è quella che assegna un valore ad un dato Esempio: definire una variabile detta lato ed assegnare a tale variabile il valore 9 int lato; lato = 9; Lassegnazione del valore può essere fatto anche contestualmente alla definizione Trattandosi di variabili, il valore può essere modificato, ma senza ridefinire la variabile int lato=9; Nel caso di valori costanti, lassegnazione avviene necessariamente nel momento della definizione e ovviamente non può essere modificato #define costante 9;oppureconst int costante=9; float prezzo= 0; ….. ….. prezzo = 10.3;

14 ALGORITMO 14 ASSEGNAZIONE TRAMITE OPERAZIONI DI CALCOLO Il valore di una variabile può essere il risultato di un calcolo aritmetico Gli operatori aritmetici binari (cioè che richiedono due dati su cui operare) del linguaggio C++ sono: +Addizione risultato = numero1 + numero2 -Sottrazione risultato = numero1 – numero2 *Moltiplicazione risultato = numero1 * numero2 /Divisione risultato = numero1 / numero2 %Resto della divisione tra interi risultato = numero1 % numero2

15 ALGORITMO 15 Esempio di operazioni di calcolo Acquisire due numeri e mostrare il risultato della loro somma scrivi la somma è : totale INIZIO FINE scrivi indica il primo valore leggi N1 scrivi indica il secondo valore leggi N2 nomeI/OV/CN/Adescrizione N1IVN interoPrimo addendo N2IVN interoSecondo addendo totaleOVN interoNumero ottenuto dalla somma dei due addendi #include sing namespace std; int main() { int N1, N2, totale ; cout >N1; cout >N2; totale= N1 +N2; cout<<"\nla somma è : " <

16 ALGORITMO 16 Output concatenato Dallesempio precedente abbiamo visto che è possibile concatenare più output con una stessa istruzione cout<<"\nla somma è : " <

17 ALGORITMO 17 Operatore modulo Loperatore modulo calcola il resto della divisione tra interi Ad esempio: 7 % 3 = 1 6 % 4 = 2 6 % 3 = 0 Può essere utilizzato per verificare se un numero è pari o dispari. Se un numero è pari, il resto della divisione per 2 è 06%2=0 Se un numero è dispari, il resto della divisione per 2 è 17%2=1

18 ALGORITMO 18 Esempio di utilizzo di operatore modulo scrivi il quoziente è quoziente il resto è resto INIZIO FINE scrivi indica il primo valore leggi N1 scrivi indica il secondo valore leggi N2 quoziente N1 / N2 resto N1 % N2 ESERCIZIO : QUOZIENTE E RESTO codificare lalgoritmo scritto per calcolare quoziente e resto di due numeri interi soluzione Dati due numeri interi, calcolare quoziente e resto nomeI/OV/CN/Adescrizione N1IVN intero dividendo N2IVN intero divisore quozienteOVN intero Numero ottenuto dalla divisione di N1 e N2 restoOVN intero Resto ottenuto dalla divisione di N1 e N2

19 ALGORITMO 19 ASSEGNAZIONE TRAMITE OPERATORI UNARI Gli operatori aritmetici unari sono quelli che richiedono un solo operando. Nel linguaggio C++ sono: ++Per incrementare di una unità loperando - Per decrementare di una unità loperando listruzione numero++ equivale allistruzione numero = numero + 1 listruzione numero- - equivale allistruzione numero = numero - 1

20 ALGORITMO 20 Esempio di assegnazione con operatori unari ESERCIZIO : ETA DEI FIGLI Una mamma ha tre figli, nati in anni consecutivi. Data in input letà del terzo figlio, comunicare letà degli altri due soluzione scrivi il valore successivo è : numero INIZIO FINE scrivi indica un numero leggi numero #include using namespace std; int main() { int numero; cout >numero; numero++; cout<<"\nil valore successivo e':"<

21 ALGORITMO 21 ORGANIZZAZIONE DELLE ISTRUZIONI Abbiamo visto le principali istruzioni che intervengono in un algoritmo, e quindi in un programma. La scrittura dellalgoritmo è una fase molto delicata e quindi si ha bisogno di regole per una corretta organizzazione del lavoro Tali regole sono alla base della programmazione strutturata Secondo la programmazione strutturata, le istruzioni di un algoritmo devono essere organizzate secondo strutture ben definite, non devono cioè essere scritte senza uno schema ben preciso

22 ALGORITMO 22 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

23 ALGORITMO 23 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

24 ALGORITMO 24 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 C++ si utilizza { per indicare linizio della sequenza di istruzioni } per indicare la fine della sequenza ……….. istruzione-1 istruzione-2 istruzione-3 …………… Flow chart pseudocodifica

25 ALGORITMO 25 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 PREZZO 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

26 ALGORITMO 26 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 PREZZO 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

27 ALGORITMO 27 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

28 ALGORITMO 28 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

29 ALGORITMO 29 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.

30 ALGORITMO 30 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

31 ALGORITMO 31 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

32 ALGORITMO 32 Sintassi della struttura di Selezione In C++ 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...; … }

33 ALGORITMO 33 Esempio Istruzione di Selezione a due vie #include using namespace std; int main() {int a; ; cin >> a; // leggi numero da terminale if ((a % 2) = = 0) {cout << il numero e pari ; } else {cout << il numero e dispari ; } system("PAUSE"); } istruzione precedente istruzione if-else istruzione successiva 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

34 ALGORITMO 34 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 C++ è: if (condizione) istruzione1; o nel caso di più istruzioni: if (condizione) { istruzione1; istruzione2; ………….; } La clausola else (altrimenti) in queste situazioni non viene codificata

35 ALGORITMO 35 Esempio Istruzione di Selezione a una via PROBLEMA: dato un numero intero si comunichi il valore della radice quadrata del suo valore assoluto #include using namespace std; int main() {int a; float b; cin >> a; // leggi numero da terminale if (a < 0 ) { a = abs(a); // calcola valore assoluto di a } b = sqrt(a); cout << Radice quadrata: << b; system("PAUSE"); } istruzione precedente istruzione if istruzioni successive INIZIO FINE Leggi a a >0 VF a = abs(a); b = abs(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

36 ALGORITMO 36 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

37 ALGORITMO 37 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.

38 ALGORITMO 38 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 C++, 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

39 ALGORITMO 39 Esecuzione di un ciclo do..while ESERCIZIO: Leggi ripetutamente un numero finchè il numero letto è > 0 int n; do {cout << Dammi un numero.; cin >> n; if (n<=0) cout<

40 ALGORITMO 40 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 C++: num=5; cont=1; do { ris=num*cont; cout<

41 ALGORITMO 41 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 C++: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

42 ALGORITMO 42 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

43 ALGORITMO 43 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

44 ALGORITMO 44 ITERAZIONE CON CONTROLLO IN TESTA ( while …) Codifica in C++ 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

45 ALGORITMO 45 Esecuzione di un ciclo while ESERCIZIO: Leggi ripetutamente un numero in ingresso e calcolane la radice quadrata fino a quando il numero letto è > 0 int i; cout << Dammi il primo num.; cin >> i; while ( i > 0 ) { cout << sqrt(i) << endl; cout << Dammi un altro num.; cin >> i; } //corpo del ciclo cout << Fine; Dammi un altro num. 25 Memoria RAM schermo Dammi il primo num Dammi un altro num.0 Fine i 09xxx Anche la struttura while…, consente di eseguire ripetutamente il corpo del ciclo anche per un numero di volte indeterminato 25

46 ALGORITMO 46 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 C++: num=5; cont=1; while (cont<=10) { ris=num*cont; cout<

47 ALGORITMO 47 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).

48 ALGORITMO 48 Esempio di iterazione enumerativa ESERCIZIO:Visualizzazione dei primi 10 multipli di di 5 (contatore sulla variabile cont) Codifica in C++: num=5; for (cont=1;cont<=10;cont++) { ris=num*cont; cout<

49 ALGORITMO 49 Codifica in C++ 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)

50 ALGORITMO 50 Quando si equivalgono while / for float lato, area; int i; for (i=0; i<3; i++) { cout > lato; area=lato*lato; cout << Area: << area << endl; } cout << Fine; float lato, area; int i; i=0; while (i<3) { cout << Lato ? << endl; cin >> lato; area=lato*lato; cout << Area: << area << endl; i++; } cout << Fine; Esempio di equivalenza strutture iterative while e for per iterazioni controllate da contatore in C++:

51 ALGORITMO 51 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

52 ALGORITMO 52 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

53 ALGORITMO 53 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 C++, agevolano il programmatore mettendo a disposizione la scelta multipla Esempio di scelta multipla

54 ALGORITMO 54 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.

55 ALGORITMO 55 in C++ 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 C++ 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

56 ALGORITMO 56 main() { int num; cout <<"Dammi un giorno (numero): "; cin >> num ; switch (num) { case 1: cout<< Lunedi ; break; case 2: cout<< Martedi ; break; case 3: cout<

57 ALGORITMO 57 Esercizio sulla selezione multipla SEMPICE CALCOLATRICE Scrivere un programma che, acquisiti due interi positivi, visualizzi un menù che consenta di scegliere quale operazione aritmetica eseguire. ANALISI Si acquisiscono due interi, con il controllo che siano positivi Si ripetono le seguenti istruzioni, finchè lutente non indica espressamente che vuole terminare si presenta a video un menu di scelta tra le 4 operazioni: 1- addizione, 2- sottrazione, 3-moltiplicazione, 4-divisione. Con la scelta 5 si esce dalliterazione Si acquisisce la scelta e si esegue loperazione richiesta mostrando a video il risultato. In caso di scelta diversa da 1,2,3,4, 5 si manda un messaggio derrore.

58 ALGORITMO 58 #include void main( ) { // campo per la scelta delloperazione char scelta; // primo, secondo operando e risultato int num1,num2,ris; do { cout<<\nInserisci primo numero ; cin>>num1; } while (num1<=0); do { cout<<\nInserisci secondo numero ; cin>>num2; } while (num2<=0); // Visualizzazione del menù di scelta do { clrscr(); cout<<\nMENU DI SCELTA\n\n; cout<<\n1: Addizione; cout<<\n2: Sottrazione; cout<<\n3: Moltiplicazione; cout<<\n4: Divisione; cout<<\n5: Fine lavoro; cout<<\nInserisci scelta ; // Acquisizione del campo scelta cin>> scelta; Esercizio : semplice calcolatrice

59 ALGORITMO 59 // Utilizzo della scelta multipla switch (scelta) { case 1: {ris=num1+num2; cout<<\nIl risultato è <

60 ALGORITMO 60 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

61 ALGORITMO 61 Soluzione esercizi Messaggio Altezza Operazioni Quoziente e resto Età dei figli Prezzo Numero positivo Voti Numero positivo o nullo benvenuto

62 ALGORITMO 62 Esercizio : Messaggio ESERCIZIO : messaggio Codifica un programma che manda a video il seguente messaggio: Ciao! Io sono il Computer! Benvenuto nel mio mondo! #include using namespace std; int main( ) { cout<<"\nCiao! Sono il computer!Benvenuto nel mio mondo!; system("PAUSE"); } Elenco eserciziTeoria

63 ALGORITMO 63 Esercizio: altezza #include using namespace std; int main() { int altezza; cout<<"\nquanto sei alto?"; cin>>altezza; cout<<"\nadesso il computer sa che sei alto "<

64 ALGORITMO 64 Esercizio: Operazioni #include using namespace std; int main() { float n1, n2, ris; cout >n1; cout >n2; ris=n1+n2; cout<<"\nla loro somma vale : "<

65 ALGORITMO 65 Esercizio: quoziente e resto #include using namespace std; int main() { int n1, n2; float quoziente, resto; cout >n1; cout >n2; quoziente = n1/n2; resto = n1% n2; cout<<"\nil quoziente e': "<

66 ALGORITMO 66 Esercizio: età dei figli #include using namespace std; int main() { int eta; cout >eta; eta++; cout<<"\nil secondo figlio ha "<

67 ALGORITMO 67 Esercizio: prezzo #include using namespace std; int main() { float prezzo, sconto, c; cout<<"\nindica il prezzo : "; cin>>prezzo; cout<<"\nindica lo sconto : "; cin>>sconto; c = prezzo - sconto; cout<<"\nil prtezzo scontato e' : "<

68 ALGORITMO 68 Esercizio: numero positivo #include using namespace std; int main() { int numero; cout >numero; if(numero >0) cout<<"\nil numero "<

69 ALGORITMO 69 Esercizio: voti #include using namespace std; int main() { int voto1, voto2, voto3, somma; float media; cout >voto1; cout >voto2; cout >voto3; somma = voto1+voto2+voto3; media = (float) somma / 3; cout<<"\nla media dei voti e' "<

70 ALGORITMO 70 Esercizio: numero positivo o nullo #include using namespace std; int main() { int numero; cout >numero; if(numero >0) cout<<"\nil numero "<

71 ALGORITMO 71 Esercizio: benvenuto #include using namespace std; int main() { string nome; char sesso; cout >nome; do { cout >sesso; if (sesso != 'm' and sesso != 'f') cout<<"\nvalore errato: indicare 's' o 'm'"<


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

Presentazioni simili


Annunci Google