7. Strutture di controllo Ing. Simona Colucci

Slides:



Advertisements
Presentazioni simili
Uso avanzato di C.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Selezione - approfondimento
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture di controllo Ing.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Strutture di controllo Ing. Simona Colucci.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
INFORMATICA Strutture iterative
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
void binario(int n); …………………
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
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
© 2007 SEI-Società Editrice Internazionale, Apogeo
Linguaggio C: strutture di controllo
DAL DIAGRAMMA AL CODICE
Introduzione al linguaggio C
PROGRAMMAZIONE SHELL -
IL CONCETTO DI ALGORITMO
10. Programmazione Ricorsiva Ing. Simona Colucci
SWITCH – CASE LINGUAGGIO C.
7. Strutture di controllo
Strutture di controllo
Codifica degli algoritmi in un linguaggio di alto livello
Programmazione strutturata
CICLO DO – WHILE LINGUAGGIO C.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Java World Cicli e Array.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Corso Java Cicli e Array.
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e strutture dati APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
La struttura dei primi programma in C
Le istruzioni di iterazione in C
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
CICLO WHILE LINGUAGGIO C.
Programmazione e Laboratorio di Programmazione
Le istruzioni di selezione condizionale in C
Lezione Terza Primi passi di programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Programmazione e Laboratorio di Programmazione
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 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 Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Programmazione strutturata TEOREMA DI BOHM-JACOPINI: tutti i programmi possono essere scritti con l’utilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza l’uso del salto goto) Le strutture di controllo consentite sono quelle di selezione(if-else) e iterazione (while) Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Istruzioni di selezione: il costrutto switch (1) istruzione di selezione a più vie(se l’else non è uno solo) consente la scelta di un’istruzione tra altre sulla base del valore di una particolare variabile o espressione Sintassi: 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"); } default: printf ("il carattere letto è sbagliato\n"); Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Il costrutto switch (2) L’istruzione break fa saltare le istruzioni dei successivi rami case e fa eseguire l’istruzione immediatamente successiva allo switch L’istruzione di default viene eseguita se la valutazione dell’espressione determina un valore che non appartiene a nessuno degli insiemi specificati nei vari case Buone regole per l’uso dello switch: I valori delle espressioni nelle clausole case devono essere costanti e tutti diversi tra loro L’istruzione default assicura il trattamento completo dei diversi casi L’istruzione break nell’ultimo case non è strettamente necessaria ma serve per eventuali estensioni del codice Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Il costrutto switch (3) switch (Dipendente.Qualifica) { case CapoProgetto: Dipendente.Retribuzione = (Dipendente.Retribuzione * 11) / 10; break; case Venditore: Dipendente.Retribuzione = (Dipendente.Retribuzione * 12) / 10; case Segretario: Dipendente.Retribuzione = } Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Il costrutto switch (4) … /* Programma Melodia dal tuo nome */ { char C; int resto; 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"); Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

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) Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Il ciclo for (2) /* Programma InvertiSequenza */ #include <stdio.h> #define LunghezzaSequenza 100   void main () { int Contatore; int Memorizzazione[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: - - Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Il ciclo do-while (1) 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"); Invece di: Contatore = 0; scanf (" %c", &Dato); Testo[Contatore] = Dato; while (Dato != '%' && Contatore < LunghezzaMassima) { Contatore = Contatore + 1; } if (Contatore == LunghezzaMassima && Dato != '%') printf ("La sequenza è troppo lunga"); Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Il ciclo do-while (2) 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 Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 L’istruzione 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 Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Le istruzioni break e continue (1) L’istruzione break provoca la fuoriuscita dal corpo di un ciclo o da un’istruzione 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 */ Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Le istruzioni break e continue (2) L’istruzione continue provoca l’interruzione della corrente iterazione del ciclo (solo while, do while o for) e il passaggio all’iterazione 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 <= 'Z') || (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 */ } Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013

Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013 Esercizi Scrivere un programma che consenta la scelta ripetuta tra le seguenti opzioni: Acquisizione di un vettore di interi Visualizzazione del vettore Ricerca del massimo nel vettore Informatica - CDL in Ingegneria Industriale- A.A. 2012-2013