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.

Slides:



Advertisements
Presentazioni simili
C++ Di Marco Cozzani.
Advertisements

Corso di Laurea Triennale in Ingegneria Gestionale Corso di Fondamenti di informatica A. A A.Pinto Algoritmi di ricerca 1.
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Iterazione while – do while - for.
Classe III A A.s – 2010 Programma di Informatica
Iterazione A. Ferrari.
Classe III A A.s – 2011 Programma di Informatica 5 ore settimanali (3 laboratorio) Docenti –Prof. Alberto Ferrari –Prof. Alberto Paganuzzi.
PROGRAMMARE IN PASCAL (le basi)
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
Sviluppo di programmi strutturati
Universita di Camerino
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
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.
Sommatorie Proprietà Serie aritmetica Serie geometrica Serie armonica
INFORMATICA Strutture iterative
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Istruzioni iterative For, while.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
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.
Corso di Fondamenti di programmazione a.a.2009/2010
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, 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.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
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.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Corso di Informatica Applicata Lezione 6
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Istruzioni di ripetizione in Java
Selezione (=scelta) con “if-else”
Istruzioni Iterative Nicola Fanizzi
Iterazioni (for, do, while). Lab.Calc. AA2005/062 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while 3. for con.
Strutture di controllo nel C
Lezione III Laboratorio di Programmazione. while e do while do S1; while(E); //S1 e eseguita almeno 1 volta E = vero? SI NO S1 while (E) S1; E = vero?
Prof. Cerulli – Dott.ssa Gentili
CODIFICA Da flow-chart a C++.
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
Programmazione di Calcolatori
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare Il ciclo while-end Puntatori a funzione.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Prof. Cerulli – Dott.ssa Gentili
Capitolo 4 (Deitel) Le strutture di controllo in C
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Programmazione Strutturata
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.
L’iterazione while La sintassi è la seguente: while (condizione) {
TURBOPASCAL L’iterazione - prof. V. Riboldi -.
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.
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
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.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Istruzioni iterative For, while.
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 ( )
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Ciclo for nei linguaggi di programmazione. Nei linguaggi di programmazione, il ciclo for è una struttura di controllo iterativa che determina l'esecuzione.
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
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 6 – Invariante.
Cicli e Array. 2 Costrutto while while(espressione) { … } Il codice dentro le parentesi graffe viene eseguito finché la condizione è vera Potrebbe non.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

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 in Informatica Università degli Studi La Sapienza (lezioni 4 e 5) for, do..while, switch, problemi con le operazioni sui reali, debugging & test

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Cicli controllati da contatore Abbiamo bisogno di – definire una variabile di controllo (contatore delle iterazioni) – inizializzare questa variabile eseguire il blocco di codice eseguire il blocco di codice –Incrementare (o decrementare) la variabile di controllo ogni volta che viene eseguito il ciclo Abbiamo inoltre bisogno di una condizione di terminazione del ciclo che venga testata ad ogni iterazione. Solo se la condizione è vera verrà eseguita una nuova iterazione. Associando una locazione di memoria alla variabile Nelle scorse lezioni abbiamo visto il costrutto while…

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Costrutto for for (espressione 1; espressione 2; espressione 3) BLOCCO DI CODICE; Es. for (contatore =1; contatore <= 10; contatore ++) printf (%d \n, contatore); /*stampa in linee successive i valori da 1 a 10 */ Nome della variabile di controllo Inizializzazione della variabile di controllo La variabile deve comunque essere definita allinizio del main

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Costrutto for for (espressione 1; espressione 2; espressione 3) BLOCCO DI CODICE; Es. for (contatore =1; contatore <= 10; contatore ++) printf (%d \n, contatore); /*stampa in linee successive i valori da 1 a 10 */ Condizione di terminazione del ciclo Incremento della variabile di controllo

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Costrutto for VERA BLOCCO DI CODICE espressione 2 FALSA espressione 1 espressione 3 for (c =1; c <= 10; c++) printf (%d \n, c); Cosa fa questo codice?

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Confronto tra for e while for (espressione 1; espressione 2; espressione 3) BLOCCO DI CODICE; espressione 1; while (espressione 2) { BLOCCO DI CODICE; espressione 3; }

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 For … alcuni esempi Cicli annidati for (i=1; i<=DIM_LATO; i++) { for (j=1; j <= DIM_LATO; j++) printf (*); printf (\n); } Cosa fa questo ciclo? Stampa quadrati di asterischi. Ad esempio se DIM_LATO vale 4: **** ATTENZIONE ad -inizializzare correttamente la variabile di controllo -Ad usare loperatore relazionale giusto (< oppure <= ?) -A scegliere correttamente il valore finale della variabile di controllo IN MODO DA ESEGUIRE IL NUMERO DI UTERAZIONI CORRETTO

Rappresentazione con diagramma di flusso VERA BLOCCO DI CODICE espressione 2 FALSA espressione 1 espressione 3 CICLO FOR VERA espressione 2 FALSA espressione 1 espressione 3 VERA BLOCCO DI CODICE espressione 2 espressione 1 espressione 3 FALSA ANNIDAMENTO DI 2 CICLI FOR E possibile rappresentare il comportamento di q.siasi programma con diagrammi di flusso Per problemi complessi lo pseudocodice è tuttavia un meccanismo piu efficace per progettare il programma Con il costrutto di sequenza, lif ed il while è possibile progettare q.siasi programma

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esempi di uso del for … for (i=1; i <= 10; i++) printf(%d \n, i); Cosa stampa in output questo blocco di codice ?

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esempi di uso del for … for (i=10; i > 0; i--) printf(%d \n, i); Cosa stampa in output questo blocco di codice ?

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esempi di uso del for … for (i=8; i >=2 ; i-=2) printf(%d \n, i); Cosa stampa in output questo blocco di codice ?

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esercizio Si scriva un programma che consenta di stampare in output il tipo di figura riportata qui di seguito. Il numero di righe di ciascuna figura sarà inserito da input. ***************

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007Soluzione #include #include int main() { int righe, i, j; printf(Inserisci il numero di righe \n); scanf (%d,&righe); printf(FIGURA A: \n); for (i=1; i<=righe; i++) { for (j=1; j<=i, j++); printf(*); printf (\n); } return 0; } Inserisci il numero di righe 5 FIGURA A: * ** *** **** *****

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esercizio Si scriva un programma che consenta di stampare in output il tipo di figura riportata qui di seguito. Il numero di righe di ciascuna figura sarà inserito da input. *********************

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007Soluzione #include #include int main() { int righe, i, j; printf(Inserisci il numero di righe \n); scanf (%d,&righe); printf(FIGURA B: \n); for (i=0; i<righe; i++) { for (j=1; j<=righe - i, j++) printf(*); printf (\n); } return 0; } Inserisci il numero di righe 5 FIGURA B: ***** **** *** ** *

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esercizio Si scriva un programma che consenta di stampare in output il tipo di figura riportata qui di seguito. Il numero di righe di ciascuna figura sarà inserito da input. **** *** *** ** ** *

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007Soluzione #include #include int main() { int righe, i, j; printf(Inserisci il numero di righe \n); scanf (%d,&righe); printf(FIGURA C: \n); for (i=1; i<=righe; i++) { for (j=1; j<=righe; j++); { if (j<i) printf ( ); elseprintf(*); printf (\n); }} return 0; } Inserisci il numero di righe 5 FIGURA C: ***** **** *** ** *

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esercizio Una persona investe 1000 euro in un conto corrente che ha l1.5 % di interesse. Si scriva un programma che prenda come input un numero di anni n. Il programma calcolerà e stamperà quanti soldi saranno sul contocorrente dopo 1, 2, …, n anni (sotto lipotesi che non vengano mai prelevati soldi dal contocorrente).

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Generalizziamo Una persona investe p euro in un conto corrente che ha lr % di interesse. Si scriva un programma che prenda come input un numero di anni n. Il programma calcolerà e stamperà quanti soldi saranno sul contocorrente dopo 1, 2, …, n anni (sotto lipotesi che non vengano mai prelevati soldi dal conto corrente). Dopo un anno la quanità disponibile sul conto è: p* (1+r) Dopo due anni è pari a: Quantita sul conto dopo un anno * (1+r) = p * (1+r) * (1+r) = p * (1+r) 2 FORMULA GENERALE. Dopo n anni p* (1+r) n

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Soluzione Pseudocodice – Inserisci da input i valori di n, p, r –Fino a quando non sono stati considerati tutti gli anni del piano di investimento aggiorna e stampa il valore a (soldi sul conto corrente) secondo la formula della slide precedente aggiorna e stampa il valore a (soldi sul conto corrente) secondo la formula della slide precedente

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007Soluzione #include #include int main() { float p,r; int n; int i; printf (inserisci da input il numero di anni del piano di investimento \n); scanf (%d, &n); printf (inserisci da input i valori di p e r \n); scanf (%f, &p); scanf (%f, &r); for (i=0; i<n; i++) {p=p*(1+r); printf (quantità di denaro accumulata sul conto dopo %d anni: %f \n, i, p); } return 0; }

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Switch Un algoritmo può dover esaminare una espressione ed a secondo del suo valore effettuare azioni diverse. Si può esprimere con una serie di if In C esiste un costrutto apposito: switch

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esercizio Si scriva un programma che prenda in input due interi ed un operatore. Il programma stampa in output il valore delloperazione sui due interi. #include #include int main() { int x,y; char op; printf (inserisci i valori x e y \n); scanf (%d %d, &x, &y) printf (inserisci il simbolo delloperatore \n); scanf (%c,&op); switch (op) switch (op){ case *: printf (%d \n, x*y); break; break; case +: printf (%d \n, x+y); break; break; case /: printf (%d \n, x/y); break; break; case -: printf (%d \n, x-y); break; break; default: printf (operatore non valido \n); } return 0; } Espressione di controllo (il valore di questa espressione -costante intera- e confrontata con le etichette dello switch) etichetta Si esce dallo switch

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Costrutto switch

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esercizio Si scriva un programma che prenda da input una serie di voti di studenti (A,…,F), calcoli e stampi in output il numero di studenti che hanno preso A, B, C, …F.

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007Soluzione #include #include int main() { int voto; int aCount, bCount, cCount, dCount, eCount, fCount; aCount= bCount= cCount= dCount= eCount= fCount=0; aCount= bCount= cCount= dCount= eCount= fCount=0; printf (inserisci da input i voti, terminando con EOF \n); while ((voto=getchar())!= EOF) { switch (voto) { case a: case A:aCount ++; break; case b: case B:bCount ++; break; case c: case C:cCount ++; break; …… Listruzione voto=getchar () prende il prossimo carattere da input –tramite la funzione della libreria di I/O getchar()- e lo memorizza nella variabile voto Listruzione di assegnamento ha un valore dato dal valore assegnato alla variabile a sinistra del = Controlla se lultimo carattere letto è il carattere di End Of File return ctrl D Unix ctrl Z Windows

Caratteri e interi I caratteri sono rappresentati con interi di un byte CODICE ASCII Possono quindi essere memorizzati in variabili intere voto =getchar (); Un esempio: printf (il carattere %c ha il valore %d, x, x); Se x vale a viene stampato a 97

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007Soluzione case d: case D:dCount ++; break; case e: case E:eCount ++; break; case f: case F:fCount ++; break; }} printf (num. studenti voto A: %d, aCount); printf (num. studenti voto B: %d, bCount); printf (num. studenti voto C: %d, cCount); printf (num. studenti voto D: %d, dCount); printf (num. studenti voto E: %d, eCount); printf (num. studenti voto F: %d, fCount); return 0; } Inserisci da input i voti terminando con EOF A b C a E Num student voto A: 2 Num studenti voto B: 1 …..

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Altri costrutti: do…while do{ BLOCCO DI CODICE; } while (condizione); Il ciclo viene eseguito almeno una volta VERA BLOCCO DI CODICE condizione FALSA

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Break e continue Listruzione break può essere usata per alterare il flusso di controllo di qualsiasi costrutto break in while, for, do…while, switch break in while, for, do…while, switch – causa luscita immediata dal corpo del while, for, do…while, switch (uscita dal ciclo) continue in while, for, do…while – salta le istruzioni successive del while, for, do..whilee passa ad eseguire la prossima iterazione del ciclo Possono aumentare lefficienza MA vanno contro la filosofia della Programmazione strutturata e aggiungono Complessità al programma Cerchiamo di programmare pulito non li voglio vedere usare a meno che sia necessario

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Operatori logici Fino ad ora abbiamo assunto di dover testare semplici condizioni esprimibili tramite operatori relazionali o di uguaglianza Cosa succede se dobbiamo testare più condizioni prima di prendere una decisione… 1° possibilità: if, if… else annidati 2° possibilità: esprimere direttamente con una sola espressione le condizioni che devono essere verificate perché venga effettuata una determinata azione lespressione può essere espressa come combinazione, tramite operatori logici, di condizioni semplici (che abbiamo già imparato ad esprimere)

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 OR, AND, NOT Tabelle di verità x yx AND y x OR y NOT x in C: x &&y in C: x || y in C: !x in C: x &&y in C: x || y in C: !x T T TTF T F FTF F T FTT F F FFT Op. binario Op binario Op unario

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Esempi if ((a>= inf_intervallo) && (a = inf_intervallo) && (a <=sup_intervallo)) printf (il valore si trova nellintervallo \n); if ((superato_esonero_1 && superato_esonero_2) || superato_esame) printf (ho passato lesame di prog1 ! \n); If (!(c==EOF)) if (c !=EOF)

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Potenziali problemi confondere operatori di uguaglianza e assegnamento Tipo di errore: if (x==4) if (x=4) x = 17; x == 17 x = 17; x == 17

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Confondere operatori di uguaglianza e assegnamento 1° caso: volevamo scrivere if (x==4) printf (BLABLABLA); ma abbiamo scritto if (x=4) printf (BLABLABLA); Indipendentemente dal valore di x il valore dellistruzione di assegnamento è 4 (!=0, quindi TRUE) Viene sempre stampato BLABLA ERRORE Soluzione: scrivere (4==x) se dimentichiamo un == (4=x) darà un errore di compilazione

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Confondere operatori di uguaglianza e assegnamento 2° caso: volevamo scrivere x=17; ma abbiamo scritto x==17; Nessun errore in fase di compilazione. Viene valutata lespressione x==17. Tale espressione varrà true o false a seconda del valore di x: il suo valore non è usato. La variabile x continua a memorizzare il valore originale ERRATO Nessun errore in fase di compilazione. Viene valutata lespressione x==17. Tale espressione varrà true o false a seconda del valore di x: il suo valore non è usato. La variabile x continua a memorizzare il valore originale ERRATO

Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Precedenza degli operatori (sintesi)