Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A. 2006-2007 CDL in Ingegneria Elettronica - A.A. 2006-2007 7. Strutture di controllo Ing.

Slides:



Advertisements
Presentazioni simili
Gli Algoritmi di ordinamento
Advertisements

INFORMATICA Strutture condizionali
Corso di Laurea Triennale in Ingegneria Gestionale Corso di Fondamenti di informatica A. A A.Pinto Algoritmi di ricerca 1.
Uso avanzato di C.
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Iterazione A. Ferrari.
Interazione con lutente I menu. Menu La forma più semplice di interazione con lutente è il menu che fornisce una serie di opzioni tra le quali lutente.
Selezione - approfondimento
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
PHP.
Universita di Camerino
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Il Problema dellordinamento.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Il Problema dellordinamento.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Fondamenti di Informatica CDL in Ingegneria Gestionale (B)- A.A CDL in Ingegneria Gestionale (B)- A.A Programmazione Ricorsiva.
5. Codifica degli algoritmi in un linguaggio di alto livello
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Strutture di controllo Ing. Simona Colucci.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
INFORMATICA Strutture iterative
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione 1, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Algoritmi Politecnico di Milano
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
2000 Prentice Hall, Inc. All rights reserved. Capitolo 3 (Deitel) Lo sviluppo di programmi strutturati Indice degli argomenti Introduzione 3.2 -
Lezione 6 Strutture di controllo Il condizionale
Laboratorio di Informatica INF3 INTDER01 Prodotto da Generali Matteo e da Zaniboni Filippo.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Programmazione di Calcolatori
Capitolo 4 (Deitel) Le strutture di controllo in C
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Programmazione Strutturata
Anno accademico Le istruzioni di controllo in C.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Introduzione a Javascript
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Strutture di controllo
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
3. Programmazione strutturata 3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Informatica - CDL in Ingegneria Industriale- A.A
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
7. Strutture di controllo Ing. Simona Colucci
7. Strutture di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture di controllo Ing. Simona Colucci

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Indice Istruzioni di selezione –Sostituibili dal costrutto switch Istruzioni cicliche (di iterazione) –Sostituibili dal costrutto for e do-while Istruzioni di salto –Codificate con il go-to, non utilizzabile nella programmazione strutturata

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Programmazione strutturata TEOREMA DI BOHM-JACOPINI: tutti i programmi possono essere scritti con lutilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza luso del salto goto) Le strutture di controllo consentite sono quelle di selezione(if-else) e iterazione (while)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Istruzioni di selezione: il costrutto switch (1) Switch: –istruzione di selezione a più vie(se lelse non è uno solo) –consente la scelta di unistruzione tra altre sulla base del valore di una particolare variabile o espressione –Sintassi: 1.switch(CarattereLetto) { case 'A': case 'G': case 'H':printf ("Il carattere letto è A o G o H\n"); break; case 'F' :printf ("Il carattere letto è F\n"); break; } 2.switch(CarattereLetto) { case 'A': case 'G': case 'H':printf ("Il carattere letto è A o G o H\n"); break; case 'F' :printf ("Il carattere letto è F\n"); break; default:printf ("il carattere letto è sbagliato\n"); break; }

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Listruzione break fa saltare le istruzioni dei successivi rami case e fa eseguire listruzione immediatamente successiva allo switch Listruzione di default viene eseguita se la valutazione dellespressione determina un valore che non appartiene a nessuno degli insiemi specificati nei vari case Buone regole per luso dello switch: –I valori delle espressioni nelle clausole case devono essere costanti e tutti diversi tra loro –Listruzione default assicura il trattamento completo dei diversi casi –Listruzione break nellultimo case non è strettamente necessaria ma serve per eventuali estensioni del codice Il costrutto switch (2)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A switch(Dipendente.Qualifica) { caseCapoProgetto:Dipendente.Retribuzione = (Dipendente.Retribuzione * 11) / 10; break; caseVenditore:Dipendente.Retribuzione = (Dipendente.Retribuzione * 12) / 10; break; caseSegretario: Dipendente.Retribuzione = (Dipendente.Retribuzione * 12) / 10; break; } Il costrutto switch (3)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A … /* Programma Melodia dal tuo nome */ {charC; intresto; printf ("Inserisci il primo carattere del tuo nome\n"); scanf (" %c", &C); while (C != '#') { resto = C % 7; switch (resto) { case 0:printf ("Il carattere %c corrisponde alla nota 'do'\n", C); break; case 1:printf ("Il carattere %c corrisponde alla nota 're'\n", C); break; … case 6:printf ("Il carattere %c corrisponde alla nota 'si'\n", C); break; } printf ("Inserisci il prossimo carattere del tuo nome – # termina il programma"); scanf (" %c", &C); } Il costrutto switch (4)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Istruzioni cicliche: il ciclo for Nei cicli a conteggio: Invece di: VariabileDiConteggio = ValoreIniziale; while(VariabileDiConteggio <= ValoreFinale) { [Sequenza di istruzioni da ripetere]; VariabileDiConteggio = VariabileDiConteggio + 1; } Usare: for ( VariabileDiConteggio = ValoreIniziale; VariabileDiConteggio <= ValoreFinale; VariabileDiConteggio = Variabile di Conteggio + 1) { [Sequenza di istruzioni da ripetere]; }

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Il ciclo for (2) /* Programma InvertiSequenza */ #include #defineLunghezzaSequenza100 void main () { intContatore; intMemorizzazione[LunghezzaSequenza]; for(Contatore = 0; Contatore < LunghezzaSequenza; Contatore++) scanf ("%d", &Memorizzazione[Contatore]); for(Contatore = LunghezzaSequenza – 1; Contatore >= 0; Contatore –– ) printf ("%d", Memorizzazione[Contatore]); } Due speciali operatori unari: –Operatore di autoincremento: ++ –Operatore di autodecremento: - -

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Il ciclo for (3) /* Programma ContaCaratteri */ #include #defineDimVettoreFrequenze123 voidmain () { charDato, Cursore; intFrequenzaCaratteri[DimVettoreFrequenze]; /* Inizializzazione dell'array di conteggio FrequenzaCaratteri. Vengono prese in considerazione solo le lettere dell'alfabeto, poiché il programma viene applicato a un testo costituito da parole */ for(Cursore = 'A'; Cursore <= 'Z'; Cursore++) FrequenzaCaratteri[Cursore] = 0; for(Cursore = 'a'; Cursore <= 'z'; Cursore++) FrequenzaCaratteri[Cursore] = 0; scanf (" %c", &Dato); /* Inizia la lettura del testo */ …

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A … /* Inizia la lettura del testo */ while (Dato != '#') { /* Se il dato letto è uno spazio esso deve essere semplicemente ignorato */ if(!(Dato == ' ')) /* Si verifica che il dato letto sia una lettera dell'alfabeto e non altro carattere non ammesso */ if(Dato 'z' || (Dato > 'Z' && Dato < 'a')) printf ("Il testo contiene dei caratteri non ammessi"); else FrequenzaCaratteri[Dato] = FrequenzaCaratteri[Dato] + 1; scanf (" %c", &Dato); } … Il ciclo for (4)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A … /* Stampa dei totali delle lettere maiuscole */ for (Cursore = 'A'; Cursore <= 'Z'; Cursore++) { printf ("Il numero di volte in cui il carattere %c compare nel testo è: %d\n", Cursore, FrequenzaCaratteri[Cursore]); } /* Stampa dei totali delle lettere minuscole */ for (Cursore = 'a'; Cursore <= 'z'; Cursore++) { printf ("Il numero di volte in cui il carattere %c compare nel testo è: %d\n", Cursore, FrequenzaCaratteri[Cursore]); } Il ciclo for (5)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Il ciclo do-while (1) Invece di: Contatore = 0; scanf (" %c", &Dato); Testo[Contatore] = Dato; while (Dato != '%' && Contatore < LunghezzaMassima) { Contatore = Contatore + 1; scanf (" %c", &Dato); Testo[Contatore] = Dato; } if (Contatore == LunghezzaMassima && Dato != '%') printf ("La sequenza è troppo lunga"); Usare: Contatore = 0; do { scanf (" %c", &Dato); Testo[Contatore] = Dato; Contatore = Contatore + 1; }while (Dato != '%' && Contatore < LunghezzaMassima); if (Contatore == LunghezzaMassima && Dato != '%') printf ("La sequenza è troppo lunga");

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Differenze con il while: –Il corpo del ciclo viene eseguito almeno una volta, anche se la condizione non è verificata; nel while non viene eseguita necessariamente –Il do-while è preferibile al while se la condizione è su una variabile da leggere nel ciclo stesso Rappresentazione Il ciclo do-while (2)

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Listruzione goto scanf ("%d"%d", &x, &y); if (y == 0) goto error; printf ("%f\n", x/y);... error: printf ("y non può essere uguale a 0\n"); DA NON USARE NELLA PROGRAMMAZIONE STRUTTURATA

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Le istruzioni break e continue (1) Listruzione break provoca la fuoriuscita dal corpo di un ciclo o da unistruzione di switch /* Ciclo infinito */ while(true) { scanf ("%d%d", &x, &y); if (x == 0) /* Esce dal ciclo di lettura se x è uguale a 0 */ break; printf ("%f\n", x/y); } /* break provoca l'esecuzione dell'istruzione che segue questo commento */

Sistemi Informativi DEE - Politecnico di Bari Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A Listruzione continue provoca linterruzione della corrente iterazione del ciclo (solo while, do while o for) e il passaggio alliterazione successiva /* Codice che elabora tutti i caratteri eccetto le lettere minuscole e maiuscole */ for (i = 0; i < NumDati; i++) { scanf (" %c", &Dato); if((Dato >= 'A' && Dato = 'a' && Dato <= 'z')) continue; /* Istruzioni che elaborano gli altri caratteri */... /* continue trasferisce qui il controllo perché possa iniziare la prossima iterazione del ciclo. È importante notare che i++ viene eseguita anche in questo caso */ } Le istruzioni break e continue (2)