La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-CAFFE FINE ESEMPIO.

Presentazioni simili


Presentazione sul tema: "INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-CAFFE FINE ESEMPIO."— Transcript della presentazione:

1 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-CAFFE FINE ESEMPIO

2 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-CAFFE PREPARA-MACCHINETTA METTI-MACCHINETTA-SU-FUOCO CUCINA-CAFFE FINE PREPARA-CAFFE SERVI-CAFFE SCOMPOSIZIONE: processo prepara caffè

3 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-MACCHINETTA PRENDI-MACCHINETTA-DA- CREDENZA PRENDI-CAFFE-DA-DISPENSA METTI-ACQUA-IN-MACCHINETTA METTI-CAFFE-IN-MACCHINETTA FINE PREPARA-MACCHINETTA 2 1 SCOMPOSIZIONE: processo prepara macchinetta

4 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-MACCHINETTA PRENDI-MACCHINETTA-DA- CREDENZA PRENDI-CAFFE-DA-DISPENSA Macchinetta in credenza V F 1 2

5 NODO CONNETTORE TEST/VERIFICA/DECISIONE CONDIZIONE INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA q q

6 VF ENTRATA USCITA INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA q B A TEST

7 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA 1 2 PRENDI-MACCHINETTA Macchinetta in credenza Caffè non in dispensa COMPRA-CAFFE V VF F

8 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA AB CD p q 1 2 V V F F TESTS IN CASCATA

9 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA p VF VF C q A B TESTS NIDIFICATI

10 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO SERVI-CAFFE TOGLI-CAFFE-DA-FUOCO ZUCCHERA-CAFFE VERSA-CAFFE FINE SERVI-CAFFE PORGI-CAFFE SCOMPOSIZIONE: processo servi caffè

11 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO ZUCCHERA-CAFFE FINE ZUCCHERA-CAFFE Caffè amaro F V ASSAGGIA-CAFFE AGGIUNGI-ZUCCHERO SCOMPOSIZIONE: processo zucchera caffè

12 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA p F V A ITERAZIONE PER VERO

13 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO/FINE PROCESSO PROCESSO AZIONE TEST NODO CONNETTORE FLUSSO SIMBOLI

14 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA p VF p A V F AB p A V F SEQUENZA TEST ITERAZIONE PER VERO ITERAZIONE PER FALSO STRUTTURE

15 Progetto: Calcolo del resto

16 La divisione di due numeri positivi, può essere espressa attraverso la sottrazione: n:m equivale a sottrarre m da n fino a quando n diventa inferiore di m. Il numero di volte in cui tale sottrazione ha luogo, è il risultato della divisione. Calcolo del resto

17 inizio Lettura dividendo Lettura divisore resto >= divisore resto = divisore V resto = resto - divisore Stampa resto F

18 Calcolo del resto #include int main() { int dividendo, divisore, resto; printf("Inserire dividendo:\n"); scanf("%d", ÷ndo);//lettura dividendo printf("Inserire divisore:\n"); scanf("%d", &divisore); //lettura divisore resto = dividendo; while (resto >= divisore){ resto = resto - divisore; } printf("\nresto della divisione %d/%d e' %d", dividendo, divisore, resto); return 0; }

19 Progetto: Calcolo numero primo

20 Calcolo del numero primo Definizione Un numero n>=2 è un numero PRIMO se è divisibile per 1 e per se stesso. L algoritmo consiste nel dividere il numero n per tutti i numeri interi minori di n. Se il numero n risulta divisibile per uno di questi interi (ovvero il resto della divisione è zero) allora n è un numero non PRIMO; in caso contrario n è un numero PRIMO

21 Calcolo del numero primo Esempio N = 5

22 int main() { int n, divisore, quoz, resto; int primo; printf("Insrire Numero:"); scanf("%d", &n); primo = true; divisore = 2; while (divisore < n && primo==true){ quoz = n/divisore; //calcolo del quoziente resto = n-(quoz*divisore); //calcolo del resto if (resto == 0){ //se il resto è nullo primo = false; //il numero in esame non è primo } else{ //altrimenti divisore = divisore + 1; //incremento il divisore } if (primo==true){ printf ("\n\n%d e` un numero primo",n); }else{ printf ("\n\n%d non e` un numero primo",n); }

23 Calcolo del numero primo inizio Lettura n primo = true divisore = 2 Divisore < n AND primo = true V quoz = n/divisore F stampa resto = n – (quoz*divisore) resto == 0 Primo = false V divisore = divisore +1 F quoziente resto È stato trovato un divisore

24 Progetto: Torri di Hanoi

25 Torri di Hanoi: regole Il rompicapo è costituito da tre pile di dischi (torri) allineate –allinizio tutti i dischi si trovano sulla pila di sinistra –alla fine tutti i dischi si devono trovare sulla pila di destra o centrale I dischi sono tutti di dimensioni diverse e quando si trovano su una pila devono rispettare la seguente regola –nessun disco può avere sopra di sé dischi più grandi

26 Torri di Hanoi: regole Situazione iniziale Situazione finale

27 Torri di Hanoi: regole Per risolvere il rompicapo bisogna spostare un disco alla volta –un disco può essere rimosso dalla cima della torre ed inserito in cima ad unaltra torre non può essere parcheggiato allesterno… –in ogni momento deve essere rispettata la regola vista in precedenza nessun disco può avere sopra di sé dischi più grandi

28 Algoritmo di soluzione Il problema generale consiste nello spostare n dischi da una torre ad unaltra, usando la terza torre come deposito temporaneo Per spostare n dischi da una torre allaltra si suppone di saper spostare n-1 dischi da una torre allaltra, come sempre si fa nella ricorsione Ricorsione Una funzione ricorsiva è una funzione che richiama se stessa

29 La Torre di Hanoi

30 A B C

31 Torre di Hanoi: algoritmo int mossa = 0; void hanoi(int, char, char, char); void muovi(int, char, char); int main() { int DISCHI; printf("\nInserire il numero di DISCHI:"); scanf("%d",&DISCHI); printf("\nMosse da eseguire per spostare %d dischi\n", DISCHI); hanoi(DISCHI, 'A', 'B', 'C'); }

32 Torre di Hanoi: algoritmo void hanoi(int n, char piolo_b, char piolo_a, char aus) { if(n == 1) { muovi(n, piolo_b, piolo_a); }else { hanoi(n-1, piolo_b, aus, piolo_a); muovi(n, piolo_b, piolo_a); hanoi(n-1, aus, piolo_a, piolo_b); } void muovi(int n, char piolo_b, char piolo_a) { char invio; printf("\nMossa %3d: ", ++mossa); printf("disco %d da %c a %c\n",n, piolo_b, piolo_a); scanf("%c", &invio); }

33 Torre di Hanoi: output

34 Torre di Hanoi: sequenza di trasferimenti ABC 2323 ABC 1 Mossa 1 3 ABC 12 Mossa 2 3 ABC 1212 Mossa 3 ABC Mossa 4 1 ABC 32 Mossa 5 1 ABC 2323 Mossa 6 ABC Mossa 7


Scaricare ppt "INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO PREPARA-CAFFE FINE ESEMPIO."

Presentazioni simili


Annunci Google