Strutture di controllo in C++

Похожие документы
Lab 04 Programmazione Strutturata"

Linguaggio C++ 5. Strutture cicliche

Istruzioni Condizionali

COMANDI ITERATIVI. Ivan Lanese

Introduzione agli Algoritmi

Fondamenti di Informatica T-1 Modulo 2

Rappresentazione degli algoritmi

Fondamenti di Informatica

Fondamenti di Informatica

PROGRAMMAZIONE STRUTTURATA

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

CL 3 - Es_01.cpp. #include <iostream> using namespace std;

Rappresentazione degli algoritmi

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

INFORMATICA. Strutture iterative

Esercitazione 4. Comandi iterativi for, while, do-while

PROGRAMMAZIONE: Le strutture di controllo

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

Programmazione Assembly per 8088: Esercizi svolti

STRUTTURE DI CONTROLLO DEL C++

Matlab. Istruzioni condizionali, cicli for e cicli while.

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Risoluzione di un problema

Fondamenti di Informatica T-1 Modulo 2

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Fondamenti di Informatica T-1 Modulo 2

Informatica (A-K) 5. Algoritmi e pseudocodifica

Schemi ricorrenti nei cicli. Contatori Accumulatori Flag Esistenza e universalità

do { printf("inserisci due numeri reali:"); scanf("%f %f", &a, &b); while(b!=0 && a/b<0);

Транскрипт:

Strutture di controllo in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007

Il controllo: selezione Spesso la sequenza delle istruzioni non e prevedibile a priori ma dipende strettamente dalle configurazioni dei dati di un problema: Se A<B Allora Max B Altrimenti Max A Somma 0 Leggi N Per N volte Leggi X Somma Somma + X Stampa Somma

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Se A<B Allora Max B Altrimenti Max A

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Se A<B Allora Max B Altrimenti Max A Confronta A e B Max A Max B

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Se A<B Allora Max B Altrimenti Max A A B Max A Confronta A e B A < B Max B

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Confronta A e B Se A<B Allora Max B Altrimenti Max A A B Max A Confronta A e B A < B Max B Max A Max B

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Confronta A e B Se A<B Allora Max B Altrimenti Max A A B Max A Confronta A e B A < B Max B Se A<B Max A sempre Max B

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Confronta A e B Se A<B Allora Max B Altrimenti Max A A B Max A Confronta A e B A < B Max B Se A<B Max A sempre Max B

Il controllo: selezione (2) Controllare le sequenze di istruzioni significa modificare il loro ordinamento totale Confronta A e B Se A<B Allora Max B Altrimenti Max A A B Max A Confronta A e B A < B Max B Se A<B Max A sempre Max B

Il controllo: selezione (3) Se A<B Allora Max B Altrimenti Max A Confronta A e B Se A<B Max A sempre Max B Confronta A e B A B A < B Max A Max B

Il controllo: selezione (3) Se A<B Allora Max B Altrimenti Max A Confronta A e B Confronta A e B A B A < B Max A Max B Se A<B Max A falso A<B vero sempre Max B Max A Max B

Il controllo condizionale in C++ int a, b, max; if( a < b ) max = b; else max = a;

Il controllo condizionale in C++ int a, b, max; if( a < b ) max = b; else max = a; MOV BX B MOV AX A CMP AX B JL TRUE MOV MAX AX JMP ENDIF TRUE MOV MAX BX ENDIF...

Uso dell istruzione IF vedi esempio programma UsoIf.cpp Domande: Elencare variabili, espressioni letterali e costanti nel programma Determinare il numero di operazioni nel caso di un input stream di N caratteri

Il controllo condizionale in C++ int a = 1, b = 2, c = 23, d = 34, max; if( a < b c == d ) { b = c + d; cout << b; } else { max = a; cout << max + 1; }

Il controllo condizionale in C++ int a = 2, b = 2, c = 23, d = 34, max; if( a < b c == d ) { b = c + d; cout << b; } else { max = a; cout << max + 1;}

Il controllo condizionale in C++ int a = 10, b = 2, c = 34, d = 34, max; if( a < b c == d ) { b = c + d; cout << b; } else { max = a; cout << max + 1;}

Il controllo condizionale in C++ int a = 10, b = 2, c = 34, d = 34, max; if( a < b c == d ) { b = c + d; cout << b; } else { max = a; cout << max + 1;}

Il controllo condizionale in C++ int a = 10, b = 2, c = 34, d = 34, max; if( a < b && c == d ) { b = c + d; cout << b; } else { max = a; cout << max + 1;}

Il controllo: iterazione Somma 0 Leggi N Per N volte Leggi X Somma Somma + X Stampa Somma Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma

Il controllo: iterazione Somma 0 Leggi N Per N volte Leggi X Somma Somma + X Stampa Somma Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma MOV SM 0 MV AX SM Leggi N MOV CX 0 CICLO CMP CX N JGE ENDCL Leggi X ADD AX X INC CX JMP CICLO ENDCL MOV SM AX

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma MOV SM 0 MV AX SM Leggi N MOV CX 0 CICLO CMP CX N JGE ENDCL Leggi X ADD AX X INC CX JMP CICLO ENDCL MOV SM AX

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma MOV SM 0 MV AX SM Leggi N MOV CX 0 CICLO CMP CX N JGE ENDCL Leggi X ADD AX X INC CX JMP CICLO ENDCL MOV SM AX

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma MOV SM 0 MV AX SM Leggi N MOV CX 0 CICLO CMP CX N JGE ENDCL Leggi X ADD AX X INC CX JMP CICLO ENDCL MOV SM AX

Il controllo: iterazione (2) Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma + X I I+1 Stampa Somma MOV SM 0 MV AX SM Leggi N MOV CX 0 CICLO CMP CX N JGE ENDCL Leggi X ADD AX X INC CX JMP CICLO ENDCL MOV SM AX

L Iterazione in C++ Somma 0 Leggi N I 0 Finche (I < N) Leggi X Somma Somma+X I I+1 Stampa Somma int Somma=0,I=0, N, X; cin >> N; while ( I < N ) { cin >> X; Somma = Somma + X; I = I + 1; } cout << Somma;

L Iterazione in C++ (2) int Somma=0,I=0, N, X; cin >> N; while ( I < N ) { cin >> X; Somma = Somma+X; I = I + 1; } cout << Somma; int Somma=0,I=0, N, X; cin >> N; while ( I < N ) { cin >> X; Somma += X; I++; } cout << Somma;

Sentinelle Le variabili che controllano un ciclo iterativo sono variabili di controllo spesso dette sentinelle int i, a, N; // lettura di N i=2; a=1; while( i<=n ) { a=a*i; i++; }

Sentinelle (2) Un errato uso delle sentinelle e tra i maggiori responsabili di errori nella programmazione di cicli iterativi int i, a; // lettura di N i=0; a=1; while( i<=n ) { a=a*i; i+=n; } Se N in input e pari a 0?

L Iterazione in C++: Uso del for int Somma=0,I=0, N, X; cin >> N while (I<N) { cin >> X; Somma += X; I++; } cout << Somma; int Somma=0, I, N, X; cin >> N for ( I=0; I<N; I++) { cin >> X; Somma += X; } cout << Somma;

L Iterazione: Uso del do while int Somma=0,I=0, N, X; cin >> N while (I<N) { cin >> X; Somma += X; I++; } cout << Somma; int Somma=0, I=0, N, X; cin >> N do { cin >> X; Somma += X; I++; } while(i<n); cout << Somma;

L Iterazione: Uso del do while

L Iterazione: Uso del do while Somma = N i= 1 x i

L Iterazione: Uso del do while Somma = N i= 1 Se (N==0) => Somma=0 x i

L Iterazione: Uso del do while Somma = N i= 1 x i Se (N==0) => Somma=0 OSS: do while È inapplicabile!!

L Iterazione: Uso del do while Somma = N i= 1 x i Se (N==0) => Somma=0 OSS: do while È inapplicabile!! int Somma=0,I=0, N, X; cin >> N while (I<N) { cin >> X; Somma += X; I++; } cout << Somma;

L Iterazione: Uso del do while Somma = N i= 1 x i Se (N==0) => Somma=0 OSS: do while È inapplicabile!! int Somma=0,I=0, N, X; cin >> N while (I<N) { cin >> X; Somma += X; I++; } cout << Somma; int Somma=0, I=0, N, X; cin >> N do { cin >> X; Somma += X; I++; } while(i<n); cout << Somma;

L Iterazione: Uso del do while Somma = N i= 1 x i Se (N==0) => Somma=0 OSS: do while È inapplicabile!! int Somma=0,I=0, N, X; cin >> N while (I<N) { cin >> X; Somma += X; I++; } cout << Somma; int Somma=0, I=0, N, X; cin >> N do { cin >> X; Somma += X; I++; } while(i<n); cout << Somma;

L Iterazione: Uso del do while Somma = N i= 1 x i Se (N==0) => Somma=0 OSS: do while È inapplicabile!! int Somma=0,I=0, N, X; cin >> N while (I<N) { cin >> X; Somma += X; I++; } cout << Somma; int Somma=0, I=0, N, X; cin >> N do { cin >> X; Somma += X; I++; } while(i<n); cout << Somma;

Esercizi Proposti Scrivere un programma C++ che legga in ingresso N numeri interi (con N fornito dall utente) e ne calcoli: il massimo valore, il minimo valore, la somma, il prodotto (operatore ) e il valor medio

Esercizi proposti (2) Scrivere un programma C++ che calcoli lo sviluppo in serie di Taylor della funzione sen(x) nell intorno dello 0. Scrivere un programma che calcoli il fattoriale n! di un numero intero non negativo n Scrivere un programma C++ che dati due punti del piano cartesiano (x 0,y 0 )(x 1,y 1 ) calcoli la lunghezza del segmento che li unisce

Esercizi proposti (3) Scrivere un programma che utilizzi la formula di Hoerner per il calcolo di un polinomio di grado N Scrivere un programma che calcoli il valore di un polinomio, p(x), e della sua derivata prima, p (x), per un certo valore della x. Scrivere un programma che dato un polinomio p(x) e due estremi di un intervallo [a,b] ne calcoli l integrale definito.