Esercitazione 4. Comandi iterativi for, while, do-while
|
|
|
- Graziano Pieri
- 9 anni fa
- Visualizzazioni
Transcript
1 Esercitazione 4 Comandi iterativi for, while, do-while
2 Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti termina 3) esegui istr3 4) esegui istr2 e ritorna al passo 2 Nota: se cond è falsa il ciclo non viene percorso istr1 cond T istr3 istr2 F
3 Attenzione Ogni istr3 può essere un blocco, nel qual caso deve iniziare con una parentesi graffa aperta { e terminare con una parentesi graffa chiusa }. Per esempio, se istr3= istr3.1; istr3.2; istr3.3; si deve scrivere for (istr1; cond; istr2) { istr3.1; istr3.2; istr3.3; }
4 Attenzione Anche istr1 e istr2 possono contenere più di un istruzione, ma in questo caso non servono le parentesi. Inoltre le istruzioni sono separate da virgole. Per esempio, possiamo scrivere for (i=1, j=5; i<10 && j<100; i++, j=i*j) istr1 cond istr2
5 Scrivere un programma che calcola la somma di cinque numeri interi immessi dall utente. SOLUZ 1) Usare 5 variabili distinte, una per ogni numero immesso, e poi sommare i loro valori... INEFFICIENTE e POCO GENERALE. SOLUZ 2) Scriviamo un ciclo for che ad ogni iterazione: - legge in input un numero, - lo memorizza nella variabile numero, - aggiorna il valore della variabile somma aggiungendo l ultimo numero letto.
6 (continua) Variabili: somma contiene la somma dei numeri letti fino a quel punto numero contiene l ultimo numero letto Invariante del ciclo: somma contiene la somma dei numeri letti fino a quel punto #include <stdio.h> int main ( ) { int i, somma, numero; somma = 0; for (i=1; i<=5; i++) { /* il corpo del ciclo for è un blocco */ printf ( Inserisci un intero: ); scanf ( %d, &numero); somma += numero; } /* somma = somma + numero */ printf ( Somma: %d\n, somma); }
7 Output Durante l esecuzione del programma l utente sarà chiamato a introdurre cinque numeri interi: Inserisci un intero: 32 Inserisci un intero: 111 Inserisci un intero: 2 Inserisci un intero: 77 Inserisci un intero: 13 Somma: 235
8 Scrivere un programma che calcola la somma di una sequenza di numeri immessi dall utente. Si assuma che la sequenza termini quando viene immesso il numero 0. #include <stdio.h> int main ( ) { int somma, numero; numero = 1; somma = 0; for ( ; numero!=0 ; ) { printf ( Inserisci un intero: ); scanf ( %d, &numero); somma += numero; } /* somma = somma + numero */ printf ( Somma: %d\n, somma); }
9 Output Durante l esecuzione del programma l utente sarà chiamato a introdurre una sequenza di numeri interi. L esecuzione termina quando viene inserito il numero 0. Inserisci un intero: 32 Inserisci un intero: 111 Inserisci un intero: 2 Inserisci un intero: 77 Inserisci un intero: 13 Inserisci un intero: 0 Somma: 235
10 Modifica il programma precedente in modo tale da non dover inizializzare la variabile numero prima dell esecuzione del ciclo for. Suggerimento: Usa il comando do-while in modo che la variabile numero venga inizializzata con il primo valore immesso dall utente.
11 Dire cosa fa il seguente frammento di codice. #include <stdio.h> int main ( ) { int i; for ( i=0; i<=100 ; i+=10 ) printf ( %d\n, i); } stampa
12 Dire cosa fa il seguente frammento di codice. #include <stdio.h> int main ( ) { int i; for ( i=5; i>=5 ; i++ ) printf ( %d\n, i); } stampa
13 Qual è il valore di i al termine dell esecuzione del ciclo for? #include <stdio.h> int main ( ) { int i; for ( i=1; i<1000 ; i+=100 ) printf ( %d\n, i); } Soluzione: i = 1001
14 Comando while while (cond) istruzione; Le istruzioni vengono eseguite nel seguente ordine: 1) se cond è vera vai al passo 2 altrimenti termina 2) esegui istruzione e ritorna al passo 1 Nota: se cond è falsa il ciclo non viene mai eseguito. Anche qui, istruzione può essere un blocco. T cond F istruzione
15 Scrivere un programma che calcola la somma di cinque numeri interi immessi dall utente. #include <stdio.h> int main ( ) { int i, somma, numero; somma = 0; i = 1; /* inizializzazione delle variabili somma e i */ while ( i<=5 ) { /* il corpo del ciclo while è un blocco */ printf ( Inserisci un intero: ); scanf ( %d, &numero); somma += numero; i++; } printf ( Somma: %d\n, somma); }
16 Si può inserire l incremento della variabile di controllo i del ciclo while all interno della condizione logica presente tra le parentesi rotonde. #include <stdio.h> int main ( ) { int i, somma, numero; somma = 0; i = 1; while ( i++<=5 ) { printf ( Inserisci un intero: ); scanf ( %d, &numero); somma += numero; } printf ( Somma: %d\n, somma); }
17 Si può anche inizializzare i a 5 e decrementare il valore di i ad ogni iterazione. La condizione diviene falsa quando i assume valore zero. #include <stdio.h> int main ( ) { int i, somma, numero; somma = 0; i = 5; while ( i-- ) { printf ( Inserisci un intero: ); scanf ( %d, &numero); somma += numero; } printf ( Somma: %d\n, somma); }
18 Scrivere un programma che calcola la somma e il massimo di una sequenza di numeri immessi dall utente corrispondenti alle spese mensili di una famiglia. Si assume che i numeri immessi siano tutti positivi, la sequenza termini quando viene immesso il numero 0, che non si possano immettere più di 12 numeri (corrispondenti a 12 mesi).
19 Soluzione #include <stdio.h> int main ( ) { int i, somma, spesa_mensile, max; i = 1; scanf ( %d, &spesa_mensile); max= spesa_mensile; somma = spesa_mensile; while (spesa_mensile!= 0 && i<12) { printf ( Inserisci spesa successiva: ); scanf ( %d, &spesa_mensile); if (spesa_mensile > max) //Invariante del ciclo: max = spesa_mensile; //max e somma contengono somma += spesa_mensile; //rispettivamente il massimo e i++; } //e la somma dei valori inseriti printf ( Spesa totale: %d\n, somma); printf ( Spesa massima: %d\n, max); }
20 Comando do-while do istruzione; while (cond) Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istruzione 2) se cond è vera vai al passo 1 altrimenti termina T istruzione cond F Nota: se cond è falsa il ciclo viene eseguito 1 volta. Anche qui, istruzione può essere un blocco.
21 Attenzione Il comando do-while si usa quando si vuole che il corpo del ciclo venga eseguito almeno una volta.
22 Scrivere un programma che stampa su video n linee e m colonne costituite dal carattere +. #include <stdio.h> int main ( ) { int n, m, i, j; printf( Inserisci il numero di linee e colonne: \n ); scanf ( %d %d, &n, &m); for (i=1; i<=n; i++) { /* ciclo esterno: costruisce una riga printf( \n ); ripetilo n volte */ } for (j=1; j<=m; j++) /* ciclo interno: stampa un + printf( + ); ripetilo m volte */ }
23 Output Il programma produce il seguente output: Inserisci il numero di linee: 5 Inserisci il numero di colonne:
24 Scrivere un programma che legge un numero intero n e scrive i primi n numeri dispari. #include <stdio.h> int main ( ) { int i, n; printf( Inserisci il numero n: \n ); scanf ( %d, &n); for (i=0; i<n; i++) // Invariante del ciclo: printf ( %d, 2*i+1); // Alla fine dell i-esima iterazione ho // stampato i primi i numeri dispari printf ( \n ); }
25 Scrivere un programma che stampa gli interi positivi minori di 100 e divisibili sia per 6 che per 7. #include <stdio.h> int main ( ) { int i; for (i=0; i<100; i++) if (!(i%6) &&!(i%7)) printf ( %d \n, i); }
26 Scrivere un programma come prima usando il comando while. #include <stdio.h> int main ( ) { int i=0; while (i<100) { if (!(i%6) &&!(i%7)) printf ( %d \n, i); i++; } }
27 Scrivere un programma che legga da tastiera una sequenza di 0 e 1, terminata da un 2, calcoli la lunghezza della piu` lunga sottosequenza di 0, e la stampi. ESEMPIO: > 3. #include <stdio.h> int main ( ) { int bit; /* l'elemento della sequenza appena letto */ int cont = 0; /* lunghezza della sequenza corrente di zeri; inizialmente non abbiamo ancora letto nulla */ int maxlung = 0; /* massima lunghezza incontrata finora; inizialmente e` 0 */
28 printf("inserisci una sequenza di 0, 1 terminata da 2\n"); do { scanf("%d", &bit); if (bit == 0) { // e` stato letto un altro 0 cont++; // aggiorna la lunghezza della sequenza corrente if (cont > maxlung) // se necessario, aggiorna il massimo temporaneo maxlung = cont; } else // e` stato letto un 1 (o il 2 finale) cont = 0; // azzera la lunghezza della sequenza corrente } while (bit!= 2); // quando si legge 2 il ciclo termina printf("la piu` lunga sottosequenza di soli zeri e` lunga %d\n", maxlung); }
29 Scrivere un programma che legge una sequenza di caratteri (il carattere # termina la sequenza) per ciascun carattere letto stampa il relativo codice ASCII e, nel caso sia una lettera dell alfabeto minuscola, viene operata la trasformazione in lettera maiuscola.
30 #include <stdio.h> int main ( ) { char C, CM; printf ( Inserire un carattere - # per terminare il programma\n ); scanf ( %c, &C); while (C!= # ) { printf ( Il codice ASCII del carattere %c e %d\n, C, C); /* Se il carattere e una lettera minuscola */ if (C>= a && C<= z ) { /* La differenza a - A e lo scarto fra la rappresentazione ASCII delle lettere maiuscole e minuscole dell alfabeto */ CM = C - ( a - A ); printf ( La lettera maiuscola per %c e %c e il suo codice ASCII e %d\n, C, CM, CM); } printf ( Inserire un carattere - # per terminare il programma\n ); scanf ( %c, &C); } }
Laboratorio di informatica Ingegneria meccanica
Laboratorio di informatica Ingegneria meccanica Esercitazione 6 7 novembre 2007 Correzione di un programma Un programma può contenere errori sintattici e/o errori logici. Gli errori sintattici vengono
Iterazione determinata e indeterminata
Iterazione determinata e indeterminata Le istruzioni iterative permettono di ripetere determinate azioni più volte: un numero di volte fissato = iterazione determinata Esempio: fai un giro del parco di
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Esercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
Lab 04 Programmazione Strutturata"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate
Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE
Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
PROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
Fondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono
Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Fondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono
Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
INFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
TERZA ESPERIENZA DI LABORATORIO. Programmazione con controllo di flusso FOR e SWITCH
CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2018-2019 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma TERZA ESPERIENZA DI LABORATORIO Programmazione con controllo
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative
STRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
Linguaggio C. strutture di controllo: strutture sequenziali e condizionali. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture sequenziali e condizionali Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly
Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly Scrivere il codice ARM che implementi le specifiche richieste e quindi verificarne il comportamento usando il simulatore
ESERCIZI SU IF/WHILE. Esercizio 1) Legge due numeri e controlla se il primo è multiplo del secondo.
ESERCIZI SU IF/WHILE Esercizio 1) Legge due numeri e controlla se il primo è multiplo del secondo. #include void main () int m, n; printf("inserire il primo numero:\n"); scanf ("%d", &m); printf("inserire
ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
Laboratorio di programmazione
Laboratorio di programmazione 9 novembre 2016 Sequenze di Collatz Considerate la seguente regola: dato un numero intero positivo n, se n è pari lo si divide per 2, se è dispari lo si moltiplica per 3 e
do { printf("inserisci due numeri reali:"); scanf("%f %f", &a, &b); while(b!=0 && a/b<0);
Obiettivi di questa esercitazione Fondamenti di Informatica T-1 modulo 2 Laboratorio 02 1. Valutazione in cortocircuito i 2. If innestati 3. Switch 4. Cicli 5. Funzioni e Header File 1 2 Valutazione in
PROGRAMMAZIONE: La selezione
PROGRAMMAZIONE: La selezione Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l altra, riga per
I cicli. Iterazioni Calcolo della media Istruzioni break e continue
I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione
La gestione dei caratteri in C
in C In C i caratteri sono gestiti mediante variabili di tipo char (interi a 8 bit) Ad ogni carattere corrisponde un codice numerico ASCII (American Standard Code for Information Interchange) Un esempio
IL COSTRUTTO ITERAZIONE
IL COSTRUTTO ITERAZIONE Il costrutto iterazione Consente di ripetere una operazione elementare o un blocco di operazioni. Tipologie di iterazione Iterazione definita Iterazione condizionata Tipologie di
Le strutture di controllo in C++
Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli
Istruzioni iterative. Istruzioni iterative
Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",
Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Strutture di controllo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C Strutture di controllo 1 Indice 1 Strutture di controllo...3 1.1 Multiplo...3 1.2 Massimo Comun Divisore...3 1.3 Valutazione triangolo...4 1.4 Calcolatrice...5
Caratteri e stringhe
Caratteri e stringhe Il tipo char Variabili char Input/output di char Operazioni sui char Esercizio Quadrati di lettere 2 Il tipo char Variabili char I caratteri in C si memorizzano in variabili di tipo
5. Quinta esercitazione autoguidata: liste semplici
22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto
Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.
Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float
Strutture di iterazione
Strutture di iterazione 1. Leggi i programmi qui sotto e disegna le tabelle di traccia nelle situazioni seguenti: a. Nel primo e nel secondo programma viene inserito da tastiera il valore 2; b. Nel primo
Linguaggio C Informatica Grafica
Linguaggio C Informatica Grafica Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione [email protected] Linguaggio C Breve storia Struttura di un programma Variabili
Esercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Primo programma in C
Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file
C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.
Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.
