La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Strutture di Controllo

Presentazioni simili


Presentazione sul tema: "Strutture di Controllo"— Transcript della presentazione:

1 Strutture di Controllo

2 Esempio Alzarsi dal letto Togliersi il pigiama Fare la doccia Vestirsi
Fare colazione Prendere il bus per andare a scuola NOTA I passi sono eseguiti in sequenza e l’ordine delle istruzioni è essenziale per la correttezza dell’algoritmo

3 Non basta organizzare i passi in sequenza
Alzarsi dal letto Togliersi il pigiama Fare la doccia Vestirsi Fare colazione Se piove Prendere ombrello Prendere il bus per andare a scuola

4 Ulteriore forma di flusso: se…altrimenti
Alzarsi dal letto Togliersi il pigiama Fare la doccia Vestirsi Fare colazione Se sciopero Prendere macchina Altrimenti Prendere il bus Prendere il bus per andare a scuola

5 Ulteriore forma di controllo: ciclo «mentre»
Alzarsi dal letto Togliersi il pigiama Fare la doccia Vestirsi Fare colazione Mentre piove Restare in casa Prendere il bus per andare a scuola

6 Linguaggio naturale se...allora...altrimenti.... qualora.....ma nel caso in cui... ripeti fino a quando... mentre..... nel primo caso...., nel secondo caso...,..... nell’ennesimo caso..... nei linguaggi di programmazione questi costrutti sintattici vengono chiamati strutture di controllo

7 Strutture di controllo del flusso
Le strutture di controllo del flusso specificano l’ordine secondo il quale le operazioni devono essere effettuate istruzione composta istruzioni decisionali istruzioni cicliche

8 Istruzione composta Le parentesi graffe {} vengono usate per raggruppare in un'unica istruzione composta, detta blocco, dichiarazioni ed istruzioni, in modo che, dal punto di vista sintattico, esse formino un’entità equivalente ad una sola istruzione Esempio { a = b + 19; b = c * 23; c = c + 1; } Dopo la parentesi graffa di chiusura di un blocco non esiste punto e virgola

9 Strutture di controllo del flusso
Le strutture di controllo del flusso specificano l’ordine secondo il quale le operazioni devono essere effettuate istruzione composta istruzioni decisionali istruzioni cicliche

10 Istruzioni Decisionali
if if-else switch

11 if Sintassi if (espressione) istruzione Semantica Valuta espressione Se l’espressione è vera (cioè assume valore diverso da zero) viene eseguita istruzione In ogni caso continua eseguendo la prima istruzione successiva alla struttura di controllo

12 If: diagramma di flusso
if (E) I1; I2; la struttura introduce due possibili sequenze: la sequenza (se E è vera): I0 I1 I2 2. la sequenza (se E è falsa): I0 I2

13 Esempio #include <stdio.h> main() { } int i;
printf("Dammi un intero: "); scanf("%d", &i); if (i<100) printf("Minore di 100\n"); } Stampa «minore di 100» se il numero letto è minore di 100

14 if Sintassi if (espressione) istruzione

15 If + istruzione composta
#include <stdio.h> main() { int i; int min_100=0; printf("Dammi un intero: "); scanf("%d", &i); if (i<100) printf("Minore di 100\n"); min_100=1; } blocco

16 Esercizio Scrivere un programma che richieda in ingresso un valore intero e stampa il suo valore assoluto Valore assoluto di un numero n: Se n < 0: -n Se n >= 0: n Esempio 9 ! ! 27

17 Soluzione #include<stdio.h> main() { } int n;
printf("Dammi un intero: "); scanf("%d", &n); if (n<0) n=-n; printf("Risultato: %d", n); }

18 Istruzioni Decisionali
if if-else switch

19 If-else Sintassi if (espressione) istruzione_1 else istruzione_2

20 If-else: semantica Viene valutata espressione Se l’espressione è vera (cioè assume valore diverso da zero) viene eseguita istruzione_1 Se l’ espressione è falsa (cioè assume valore nullo) viene eseguita istruzione_2

21 If-else: diagramma di flusso
I0; if (E) I1; else I2; I3; la struttura introduce due possibili sequenze: 1. la sequenza (se E è vera): I0 I1 I3 2. la sequenza (se E è falsa): I0 I2 I3

22 Esempio /* Utilizzo if-else */ #include <stdio.h> main() { }
int i; printf("Dammi un intero: "); scanf("%d", &i); if (i<100) printf("Minore di 100\n"); else printf("Maggiore o uguale a 100\n"); }

23 If-else + istruzione composta
#include <stdio.h> main() { int i; int mag_100=0; int min_100=0; printf("Dammi un intero: "); scanf("%d", &i); if (i<100) printf("Minore di 100\n"); min_100=1; } else printf("Maggiore o uguale a 100\n"); mag_100=1; blocco blocco

24 Osservazione #include<stdio.h> main() { int x; scanf("%d", &x); if (x==0) printf("pippo "); printf("pluto "); }; else printf("minnie"); } ERRORE

25 osservazione if (x!=0) printf("pippo"); if (x) printf("pippo");
equivalenti

26 if annidati Le istruzioni che compaiono nell’if non sono soggette ad alcuna restrizione, per cui possono essere anch’esse if: if annidati

27 Ambiguità in caso di if annidati
else è relativa al più vicino degli if che lo precedono che manchi dell’else

28 Ambiguità: esempio

29 Esercizi Cosa stampa? #include<stdio.h> main() { } int i=7, j=7;
if (i==1) if (j==2) printf("%d\n", i+j); else printf("%d\n", i-j); printf("%d\n",i); }

30 Soluzione #include<stdio.h> main() { } int i=7, j=7; if (i==1)
if (j==2) printf("%d\n", i+j); else printf("%d\n", i-j); printf("%d\n",i); } #include<stdio.h> main() { int i=7, j=7; if (i==1) if (j==2) printf("%d\n", i+j); else printf("%d\n", i-j); printf("%d\n",i); }

31 Esercizio Determinare l’output di ognuna delle seguenti istruzioni quando x vale 9 e y vale 11 x vale 11 e y vale 9 if (x<10) if (y>10) printf("*****\n"); else printf("#####\n"); printf("$$$$$\n");

32 Soluzione x vale 9 e y vale 11 ***** $$$$$ x vale 11 e y vale 9
if (x<10) if (y>10) printf("*****\n"); else printf("#####\n"); printf("$$$$$\n");

33 Esercizio Scrivere un programma che richiede in ingresso 2 valori interi e stampa il maggiore

34 Diagramma di flusso

35 Soluzione #include <stdio.h> main() { } int n1, n2;
printf("Dammi 2 interi separati dallo spazio: \n"); scanf("%d", &n1); scanf("%d", &n2); if (n1>n2) printf("Il maggiore è: %d", n1); else printf("Il maggiore è: %d", n2); }

36 Esercizio Scrivere un programma che richieda in ingresso un valore intero e stampa "pari" se il numero è pari, "dispari" altrimenti Esempio 7 -> Il numero è dispari 90 -> Il numero è pari

37 Soluzione #include <stdio.h> main() { } int n;
printf("Dammi un intero: \n"); scanf("%d", &n); if (n%2==0) printf("Il numero è pari"); else printf("Il numero è dispari"); }

38 Crittografia Una azienda vuole trasmettere dei dati sulla linea telefonica, ma i suoi responsabili sono preoccupati dal fatto che i propri telefoni potrebbero essere spiati. Tutti i loro dati sono trasmessi come interi di quattro cifre. Vi hanno quindi chiesto di scrivere un programma che crittografi i loro dati in modo che possano essere trasmessi con maggior sicurezza. Il vostro programma dovrà leggere un intero di 4 cifre e crittografarlo nel modo seguente: sostituite ogni cifra con la somma di quella cifra + 7 modulo 10. In seguito, scambiare la prima cifra con la terza e la seconda cifra con la quarta. Visualizzate quindi l'intero crittografato. Scrivere in programma a parte che prende in input un intero crittografato di 4 cifre e lo decifri, in modo fa formare il numero originale. Esempio: originale = 3219 e crittografato = 8609

39


Scaricare ppt "Strutture di Controllo"

Presentazioni simili


Annunci Google