Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.