Strutture di Controllo

Slides:



Advertisements
Presentazioni simili
Selezione A. Ferrari.
Advertisements

Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Anno accademico Le istruzioni di controllo in C.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
C++:Strutture di Controllo
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
I Polinomi Prof.ssa A.Comis.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Le frazioni Che cosa è una frazione.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
CONTROLLO DELLA CONCORRENZA
© 2007 SEI-Società Editrice Internazionale, Apogeo
Cosa nascondono i numeri naturali? N Loretta Ferrante.
Esercitazioni di Prog. II (esercizi su alberi ennari)
Linguaggio C: strutture di controllo
Introduzione al linguaggio C
7. Strutture di controllo Ing. Simona Colucci
IL CONCETTO DI ALGORITMO
SWITCH – CASE LINGUAGGIO C.
7. Strutture di controllo
Strutture di controllo
Programmazione strutturata
PROGRAMMAZIONE BASH – ISTRUZIONE IF
CICLO DO – WHILE LINGUAGGIO C.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Linearizzazione di un sensore
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Dal problema al programma
Operatore condizionale
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
{ } Multipli di un numero M4 ESEMPIO 0, 4, 8, 12, 16, 20, 24, …
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Linearizzazione di un sensore
Algebra Booleana.
Programmazione e Laboratorio di Programmazione
Dalle potenze ai numeri binari
Ricorsione 16/01/2019 package.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e strutture dati APPUNTI SUL LINGUAGGIO C
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
L’ELEVAMENTO A POTENZA
Le istruzioni di iterazione in C
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
CICLO WHILE LINGUAGGIO C.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Le istruzioni di selezione condizionale in C
Lezione Terza Primi passi di programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
La programmazione strutturata
Algoritmi.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Strutture di Controllo

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

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

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

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

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

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

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

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

Istruzioni Decisionali if if-else switch

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

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

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

if Sintassi if (espressione) istruzione

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

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 ! 9 -27 ! 27

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

Istruzioni Decisionali if if-else switch

If-else Sintassi if (espressione) istruzione_1 else istruzione_2

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

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

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"); }

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

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

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

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

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

Ambiguità: esempio

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); }

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); }

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");

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");

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

Diagramma di flusso

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); }

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

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"); }

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