Introduzione all uso delle funzioni in C++
|
|
- Tommasa Di Pietro
- 7 anni fa
- Visualizzazioni
Transcript
1 Introduzione all uso delle funzioni in C++ Roberto Basili University of Rome Tor Vergata, Department of Computer Science, Systems and Production, Roma (Italy), January 24, 2001 /****************************************************************************** Esempio -- Introduzione alle funzioni Il metodo di Newton per la soluzione di equazioni non lineari Progetto del programma ******************************************************************************/ 1 PASSO (0) Fase di Specifica dei requisiti. /* Name: main Obbiettivo: Calcolo della radice della equazione f(x) = e^(-x) - x^2;. con una precisione assegnata pari a 1.0e-011 e stampa a video del numero di iterazioni effettuato, della radice <zero> determinata e del valore della funzione f(<zero>). Input: Valore di partenza (X0) per il metodo di Newton e limite al numero di iterazioni da effettuare; Output: <zero>, f(<zero>) e numero di iterazioni del metodo di Newton */ 2 PASSO (1): Determinare le variabili necessarie ed il loro tipo Variabili di ingresso valore iniziale x 0 della iterazione (reale) numero massimo di iterazioni (intero) Variabile d uscita: variabile zero della funzione zero (reale) 1
2 3 PASSI (2-3) Determinare la decomposizione in sottoproblemi e l algoritmo migliore OSSERVAZIONE: In questo caso l algoritmo e dato dalla soluzione analitica. Inoltre la decomposizione verra introdotta piu tardi 4 PASSO (4) Codifica del programma 4.1 PASSO (4.1) Definire la struttura del programma int main() // Dichiarazione delle Variabili // Chiedi i valori iniziali // - valore x0 di partenza della iterazione // - Limite al numero di passi // // Trova poi lo zero applicando il metodo di Newton... // Stampa delle soluzioni // Uscita dal programma system("pause"); return 0; L ingresso ed uscita del programma potrebbero essere: int main() // Dichiarazione delle Variabili // Chiedi i valori iniziali // - valore "startx" di partenza della iterazione // - Limite al numero di passi, variabile "maxsteps" // cout << "Insert the starting value: " ; cin >> startx; cout << "Insert the maximum number of steps: "; cin >> maxsteps; // Trova Lo zero applicando il metodo di Newton... 2
3 // Stampa delle soluzioni cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) <<... << endl << endl; // Uscita dal programma system("pause"); return 0; 4.2 PASSO (4.2) Dichiarazione delle variabili/costanti Discutiamo ora alcune variabili (non solo di input/output) necessarie al controllo della iterazione del metodo di Newton Stato della iterazione di Newton TRY il metodo non ha raggiunto la precisione attesa DONE il metodo ha raggiunto la precisione attesa TOO MANY il metodo ha gia effettuato il numero massimo di iterazioni e quindi va sospeso DIV BY ZERO, quando una derivata nulla viene incontrata Per rappresentare lo stato dell iterazione uso un intero e definisco 4 costanti per i 4 stati possibili (TRY, DONE, TOO MANY, DIV BY ZERO) Poi ci sono ancora Variabile zero (reale) Variabile valore iniziale per il metodo iterativo (reale) Variabile di controllo per il massimo numero di passi (intera) Sentinella: numero di passi eseguiti (intera) Variabili della formula di Newton (reali): x (per il valore x i ) x next (per il valore x i+1 ) 3
4 Il programma risulta ora: /* Name: main Obbiettivo: Calcolo della radice della equazione f(x) = -e^(-x) - 2x;. con una precisione assegnata pari a 1.0e-011 e stampa a video del numero di iterazioni effettuato, della radice <zero> determinata e del valore della funzione f(<zero>). Input: Valore di partenza (X0) per il metodo di Newton e limite al numero di iterazioni da effettuare; Output: <zero>, f(<zero>) e numero di iterazioni del metodo di Newton */ #include <iostream> #include <stdlib.h> #include <iomanip.h> const int TRY = 0; const int DONE = 1; const int TOOMANY = 2; const int DIV_BY_ZERO = 3; int main() int stato = TRY; int maxsteps; int steps; // Lo stato iniziale // Memorizza il massimo numero di passi // Sentinella double zero, // Variabile che rappresenta la Soluzione startx; // Valore inziale X0 della successione delle X_i double x, x_next; // Variabili nella formula di Newton // Chiedi i valori iniziali // - valore x0 di partenza della iterazione // - Limite al numero di passi cout << "Insert the starting value: " ; cin >> startx; cout << "Insert the maximum number of steps: "; cin >> maxsteps; // Trova Lo zero applicando il metodo di Newton... // Stampa delle soluzioni: aggiornata if( stato == DONE ) cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) <<... << endl << endl; else if (stato == TOOMANY) cout << "Convergenza troppo lenta\n\n"; 4
5 else if (stato == DIV_BY_ZERO) cout << "Divisione per zero!! Metodo inapplicabile\n\n"; // Uscita dal programma system("pause"); return 0; 4.3 PASSO(4.3) Codifica dell algoritmo di Newton Vanno rappresentate: La Funzione non lineare in C++ data da che si rappresenta come: La Derivata di f(x) in C++ che si rappresenta come: Inoltre va gestito il ciclo ierativo che: f(x) = e x x 2 exp(-x) - pow(x,2) f(x) = e x 2x -exp(-x) - 2*x richiede un controllo sulla precisione richiesta calcola un passo di iterazione secondo la formula di Newton verifica ed aggiorna lo stato ad ogni passo In conseguenza delle osservazioni precedenti, la variabile stato verra usata per il controllo di iterazione. OSS: Uno dei controlli deve prevedere una verifica della possibilita che uno degli x n sia 0, nel qual caso il metodo e inapplicabile (cioe stato = DIV BY ZERO) 5
6 Le osservazioni di sopra si riflettono nel programmma C++ nel seguente modo: #include <iostream> #include <stdlib.h> #include <iomanip.h> // Dichiarazioni di costanti... // Aggiungo la precisione richiesta const double EPS = 1.0e-011; // tolleranza 10 alla meno 11 int main() //... Dichiarazioni // Input // Trova Lo zero applicando il metodo di Newton steps=0; // Schema iterativo di NEWTON x_next = startx; while ( state == TRY ) ++steps; x = x_next; // Controllo sullo zero della derivata if ( (-exp(-x) - 2*x) == 0 ) state = DIV_BY_ZERO; zero = 0.0; else // Calcolo della formula di Newton // x_n+1 = x_n - f(x)/df(x) x_next = x - (exp(-x) - pow(x,2))/ (-exp(-x) - 2*x); // Controllo della precisione if ( fabs( x - x_next ) < EPS ) state = DONE; zero = x_next; else if ( steps > maxsteps ) // Controllo numero dei passi state = TOOMANY; // WHILE // Stampa delle soluzioni che si presenta quindi nella sua versione completa come segue: 6
7 #include <iostream> #include <stdlib.h> #include <iomanip.h> #include <math.h> // Dichiarazioni di costanti const int TRY = 0; const int DONE = 1; const int TOOMANY = 2; const int DIV_BY_ZERO = 3; // Aggiungo la precisione richiesta const double EPS = 1.0e-011; // tolleranza 10 alla meno 11 int main() int stato = TRY; int maxsteps; int steps; // Lo stato iniziale // Memorizza il massimo numero di passi // Sentinella double zero, // Variabile che rappresenta la Soluzione startx; // Valore inziale X0 della successione delle X_i double x, x_next; // Variabili nella formula di Newton // Chiedi i valori iniziali // - valore x0 di partenza della iterazione // - Limite al numero di passi cout << "Insert the starting value: " ; cin >> startx; cout << "Insert the maximum number of steps: "; cin >> maxsteps; // Trova Lo zero applicando il metodo di Newton steps=0; // Schema iterativo di NEWTON x_next = startx; while ( stato == TRY ) ++steps; x = x_next; // Controllo sullo zero della derivata if ( (-exp(-x) - 2*x) == 0 ) stato = DIV_BY_ZERO; zero = 0.0; else // Calcolo della formula di Newton // x_n+1 = x_n - f(x)/df(x) 7
8 x_next = x - (exp(-x) - pow(x,2))/ (-exp(-x) - 2*x); // Controllo della precisione if ( fabs( x - x_next ) < EPS ) stato = DONE; zero = x_next; else if ( steps > maxsteps ) // Controllo numero dei passi stato = TOOMANY; // WHILE // Stampa delle soluzioni if( stato == DONE ) cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) << (exp(-zero) - pow(zero,2)) << endl << endl; cout << "Il numero di passi effettuati dall algoritmo e " << steps << endl << endl; else if (stato == TOOMANY) cout << "Convergenza troppo lenta\n\n"; else if (stato == DIV_BY_ZERO) cout << "Divisione per zero!! Metodo inapplicabile\n\n"; // Uscita dal programma system("pause"); return 0; 8
9 5 Revisione critica del programma Il programma illustrato consta di 85 linee di programma e di un blocco funzionale (il MAIN()) che controlla e gestisce ogni operazione: INPUT dei dati OUTPUT dei dati Calcolo della funzione f(x) Calcolo della funzione derivata di f(x) Iterazione Controllo dello stato Inoltre le istruzioni // Calcolo della formula di Newton x_next = x - (exp(-x) - pow(x,2))/ (-exp(-x) - 2*x); e // Stampa a video risultati cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) << (exp(-zero) - pow(zero,2)) << endl << endl; cosi come le altre due // Controllo sugli zeri della derivata if ( (-exp(-x) - 2*x) == 0 ) e // Calcolo della formula di Newton x_next = x - (exp(-x) - pow(x,2))/ (-exp(-x) - 2*x); sono evidentemente ridondanti: in entrambi i casi siamo costretti a duplicare le definizioni stesse delle funzioni f(x) ed f (x). Inoltre soprattutto nel primo caso tali definizioni sono necessarie (e diverse) poiche agiscono su due variabili diverse: e (exp(-x) - pow(x,2)) (exp(-zero) - pow(zero,2)) In realta pero tale differenza (algoritmicamente) non esiste poiche in entrambi i casi abbiamo la stessa sequenza di operazioni numeriche sui dati: calcolo dell esponsneziale calcolo del quadrato differenza tra i due 9
10 Se potessimo astrarre questa definizione dal nome della variabile (x e/o zero) e definire una sola volta nel programma una f(y) tale da determinare quelle operazioni, potremmo, ogni volta che nel programma occorre la valutazione di f (quindi indifferentemente per f(x) o f(zero), richiamare la definizione semplificando la scrittura del programma. Tale ruolo di garanzia delle astrazioni funzionali (come f(x) ed f (x)) viene svolto in C++ dalle funzioni (dette anche funzioni definite dal programmatore). Esse garantiscono una DICHIARAZIONE, che definisce nome della funzione (f ne nostro esempio) argomenti della funzione (il loro numero, 1 nell esempio) tipo degli argomenti (reale nel nostro caso) tipo (di ritorno) della funzione (reale nel nostro caso) DEFINIZIONE, che definisce le operazioni da eseguire durante il calcolo della funzione sulle variabili INVOCAZIONE, che permette la attivazione di tale calcolo sugli argomenti di volta in volta necessari (nell esempio x o zero). Vediamo allora le funzioni viste nel problema di Newton. DICHIARAZIONI (anche detti PROTOTIPI) double f( double x); // dichiarazione funzione f() double df( double x); // dichiarazione della funzione f () DEFINIZIONI // Definizione di f(x) double f( double y) double tmp; tmp = exp(-y) - pow(y,2); return tmp; // FINE di f(x) // Definizione di f (x) double df( double z) double tmp; tmp = - exp(-z) - 2*z; return tmp; // FINE di df(x) Esempi di INVOCAZIONE (o attivazione, chiamata) // Calcolo della formula di Newton // Versione Senza funzioni f, df x_next = x - (exp(-x) - pow(x,2))/ (-exp(-x) - 2*x); // Versione con le funzioni f() e df x_next = x - f(x) / df(x); 10
11 e // Stampa a video risultati // Versione Senza funzione f cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) << (exp(-zero) - pow(zero,2)) << endl << endl; // VersioneCon la funzione f cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) << f(zero) << endl << endl; Osserviamo che una funzione C++ indipendente puo essere definita anche per le operazioni riguardanti il metodo stesso di Newton in modo da eliminare dai compiti del main() quello di gestire l iterazione DICHIARAZIONE/PROTOTIPO double newton( double x0, int &state, int maxsteps); DEFINIZIONE double newton( double x0, int &state, int maxsteps) int steps=0; double x, x_next; // Schema iterativo di NEWTON x_next = x0; while ( state == TRY ) ++steps; x = x_next; if ( df(x) == 0 ) state = DIV_BY_ZERO; x_next = 0.0; else x_next = x - f(x)/df(x); if ( fabs( x - x_next ) < EPS ) state = DONE; else if ( steps > maxsteps ) state = TOOMANY; // WHILE return x_next; //FINE funzione NEWTON() INVOCAZIONE zero = newton( startx, stato, maxsteps); 11
12 Date le tre definizioni di funzioni il programma e ora costituito dalla seguente struttura: main() f(x) df(x) newton(..) La sua versione in C++ e ora come segue. Si osservi il ruolo della definizione delle tre funzioni (che precede il main() e che svolge anche il ruolo della dichiarazione (che e quindi assente). /* */ Name: Newton Author: RBAS Description: Algorithm for finding zero s by the Newton iterative method Main File Date: Copyright: UTV #include <iostream> #include <stdlib.h> #include <iomanip.h> #include <math.h> const int TRY = 0; const int DONE = 1; const int TOOMANY = 2; const int DIV_BY_ZERO = 3; const double EPS = 1.0e-011; // tolleranza 10 alla meno 11 double f( double y) double tmp; tmp = exp(-y) - pow(y,2); return tmp; double df( double y) double tmp; 12
13 tmp = - exp(-y) - 2*y; return tmp; double newton( double x0, int &state, int maxsteps) int steps=0; double x, x_next; // Schema iterativo di NEWTON x_next = x0; while ( state == TRY ) ++steps; x = x_next; if ( df(x) == 0 ) state = DIV_BY_ZERO; x_next = 0.0; else x_next = x - f(x)/df(x); if ( fabs( x - x_next ) < EPS ) state = DONE; else if ( steps > maxsteps ) state = TOOMANY; // WHILE return x_next; int main() int stato = TRY; int maxsteps; double zero, //Solution startx; //Starting value for X_i // ASK for initial VALUES cout << "Insert the starting value: " ; cin >> startx; cout << "Insert the maximum number of steps: "; cin >> maxsteps; // FIND the ZERO zero = newton( startx, stato, maxsteps); 13
14 // PRINT the solutions if( stato == DONE ) cout << "Soluzione x=" << setprecision(12) << zero << " con f(x)=" << setprecision(12) << f(zero) << endl << endl; else if (stato == TOOMANY) cout << "Convergenza troppo lenta\n\n"; else if (stato == DIV_BY_ZERO) cout << "Divisione per zero!! Metodo inapplicabile\n\n"; system("pause"); return 0; 14
Università di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando
Università di Roma Tor Vergata L6-1 iterazione: struttura di controllo per ripetere più volte uno stesso comando comandi iterativi C++: while, do-while, for while: sintassi while (espressione) comando;
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
DettagliCorso di Fondamenti di Informatica Classi di istruzioni 2
Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da
DettagliElementi di Programmazione in C++
Chapter 1 Elementi di Programmazione in C++ 1.1 C++: Elementi di Base cat example05.design Comportamento: Il programma dovrebbe invitare l utente a immettere il raggio di un cerchio
DettagliIntroduzione alla programmazione in C++
Introduzione alla programmazione in C++ Fondamenti di Informatica Roberto BASILI Marzo, 2007 La Programmazione Programmare significa: Determinare la natura del problema (analisi) Definire una decomposizione
DettagliLaboratorio di Calcolo Numerico
Laboratorio di Calcolo Numerico M.R. Russo Università degli Studi di Padova Dipartimento di Matematica Pura ed Applicata A.A. 2009/2010 Equazioni non lineari Data una funzione consideriamo il problema
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio 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
DettagliPr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè
Pr1: determinare il maggiore di n numeri interi 1 2 3 4 n 1 Pr1: determinare il maggiore di n numeri interi 1 2 3 4 n P1. trovare il maggiore fra i primi 2 numeri; P2. trovare il maggiore fra il terzo
DettagliPROGRAMMAZIONE: 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
DettagliESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde
ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde vers.0 in lavorazione Docente SAFFI FABIO Contenuti Struttura del file sorgente...2 Organizzazione della directory di lavoro...2 Esercizi sulle funzione
DettagliLinguaggio C: le funzioni
Linguaggio C: le funzioni prof. Lorenzo Porcelli e mail: genna18@iol.it sito: http://users.iol.it/genna18 Introduzione attraverso un esempio Problema: Conoscendo le misure di n rettangoli, determinare
DettagliAlgoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative
Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli Formule iterative L algoritmo che, comunemente, viene presentato a scuola per l estrazione della radice quadrata è alquanto laborioso e di scarsa
DettagliIntroduzione alla programmazione in C(++)
Testi Testi Consigliati: Introduzione alla programmazione in C(++) A. Kelley & I. Pohl C didattica e programmazione A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. D. M. M. Ritchie
DettagliCalcolo del fattore di convergenza
Calcolo del fattore di convergenza Dato uno schema iterativo si ha: lim k x k+1 ξ x k ξ p = M p è l ordine di convergenza del metodo iterativo M è la costante asintotica dell errore o fattore di convergenza.
DettagliIstruzioni semplici e strutturate
Consorzio NETTUNO Corso di Fondamenti di Informatica I secondo giorno di stage Istruzioni semplici e strutturate Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II
DettagliMetodi iterativi per equazioni nonlineari.
Metodi iterativi per equazioni nonlineari. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 9 aprile 2016 Alvise Sommariva Introduzione 1/ 14 Introduzione Si supponga sia f
DettagliIstituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base
Istituto Tecnico Industriale M. M. Milano Polistena Classe III D a.s. 2015/2016 C++ Guida Base Prof. Rocco Ciurleo - ITIS M. M. Milano Polistena - 3 D a.s. 2015/2016 1 Le Origini Il Linguaggio C++ è il
DettagliStrutture di controllo in C++
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
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Le classi di istruzioni in C++ 1 Le classi di istruzioni in C++ SEQUENZIALI Statement semplice Statement composto CONDIZIONALI if < expr.> else switch case
DettagliSTRUTTURE 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
DettagliEsercitazione 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
DettagliEspressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test
Espressioni logiche Espressioni Logiche e Istruzione di Test Fondamenti di Informatica 1 Massimo Di Nanni Gennaio, 2001 Espressioni logiche nelle Istruzioni di Test e di Iterazione Calcolo del massimo
DettagliFondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Operatore? Tipo di dato: struct La ricorsione Funzioni ricorsive Esercizi proposti 26/04/2012 2 Operatore? L'operatore? può essere
Dettagli#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliLe 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
DettagliFunzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)
Funzioni di libreria Richiedono tutte #include x x a x fabs(x) sqrt(x) pow(x,a) x e ln(x) exp(x) log(x) log 10 ( x ) log10(x) sen(x) cos(x) tg(x) arcsen(x) arccos(x) arctg(x) senh(x) cosh(x) tgh(x)
DettagliProgrammazione modulare
Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliHOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.
HOMEWORKS Questi esercizi saranno proposti di tanto in tanto e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di
DettagliInformatica! Appunti dal laboratorio 1!
Informatica Appunti dal laboratorio 1 Sistema Operativo Windows Vista, Windows 7, Mac OS X, Linux, Debian, Red Hat, etc etc Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti
DettagliLa ricerca delle radici approssimate è composta da:
Zeri di una funzione Ricerca delle (eventuali) radici reali di una funzione che si supporrà definita e continua in un certo intervallo dell'asse x La ricerca delle radici approssimate è composta da: 1)
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliINFORMATICA. 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
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
Dettagliradici reali li d i di una funzione cal ca co co o l o d i d u i n v n v l a o l r o e e appr app oss oss ato ato miglioramento
Zeri di una funzione Ricerca delle (eventuali) radici i reali di una funzione che si supporrà definita e continua in un certo intervallo dell'asse x La ricerca delle radici approssimate è composta da:
DettagliL organizzazione dei programmi
L organizzazione dei programmi Lo sviluppo top-down L.S. Touschek - A.S. 2015/2016 - I fondamenti del Linguaggio C F. Cardarelli Lo sviluppo top-down I problemi complessi Blocco 1 Istruzione 1 Istruzione
DettagliClaudio Estatico Equazioni non-lineari
Claudio Estatico (claudio.estatico@uninsubria.it) Equazioni non-lineari 1 Equazioni non-lineari 1) Equazioni non-lineari e metodi iterativi. 2) Metodo di bisezione, metodo regula-falsi. 3) Metodo di Newton.
DettagliLa selezione binaria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per
DettagliFondamenti 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
DettagliInformatica! Appunti dal laboratorio 1!
Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliLa Programmazione. Introduzione alla programmazione in C++ Lo sviluppo di un programma (in C++) Lo sviluppo di un programma (in C++) La Programmazione
Introduzione alla programmazione in C++ Fondamenti di Informatica 1 R. Basili 2 ciclo a.a. 2000-2001 Programmare significa: Determinare la natura del prolema (analisi) Definire una decomposizione in sottoprolemi
DettagliUniversità di Roma Tor Vergata L12-1
Università di Roma Tor Vergata L12-1 soluzione di un problema fl 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Dettaglinome (lista_parametri) Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti
Università di Roma Tor Vergata L9-1 Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti utilizzare il valore restituito quanti argomenti
DettagliCorso di Fondamenti di Informatica Linguaggi di Programmazione
Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di
DettagliCosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
Dettaglif(x) = x e x, prendere come intervallo iniziale [0, 1] e fissare come precisione ε = 10 8.
Esercitazione 7 Argomento: Il metodo delle successive bisezioni Scopo: Implementare il metodo delle successive bisezioni per la soluzione di equazioni non lineari. function [alfa,iter]=bisez(f,a,b,epsilon)
DettagliUn algoritmo realizza una relazione funzionale tra i valori di input e quelli di output
Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di
DettagliFormalismi per la descrizione di algoritmi
Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano
DettagliProgrammazione con il linguaggio LibreOffice Basic
Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software
DettagliImplementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliEsercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while 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
DettagliLinguaggio 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
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliCorso di Laurea Specialistica in Ingegneria Meccanica e Ingegneria Energetica Progetto numerico al calcolatore
Corso di Laurea Specialistica in Ingegneria Meccanica e Ingegneria Energetica Progetto numerico al calcolatore Soluzione di un sistema non lineare con la Regula Falsi generalizzata per la determinazione
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
DettagliCorso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a
Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Risoluzione di Equazioni non lineari Sia F C 0 ([a, b]), cioé F è una funzione continua in un intervallo [a, b] R, tale che F(a)F(b) < 0 1.5 1 F(b) 0.5 0 a
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni
DettagliLe 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
DettagliEsercizio 1. Esercizio 2
Sia data la matrice A A(α) = Esercizio α 2 2α 2 2, α R.) determinare per quali valori del parametro reale α é verificata la condizione necessaria e sufficiente di convergenza per il metodo di Jacobi;.2)
DettagliCapitolo 1. Esercizi a.a Esercizi. Esercizio 1.1 Dimostrare che il metodo iterativo
Capitolo Esercizi a.a. 206-7 Esercizi Esercizio. Dimostrare che il metodo iterativo x k+ = Φ(x k ), k = 0,,..., se convergente a x, deve verificare la condizione di consistenza x = Φ(x ). Ovvero, la soluzione
DettagliIL CONCETTO DI FILE. È illecito operare oltre la fine del file.
IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni
DettagliAlgoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Dettaglia.a Codice corso: 21012, HOMEWORKS
HOMEWORKS Questi esercizi saranno proposti ogni 2 settimane e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di
DettagliLa scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco
Sperimentazioni I Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 10 Novembre 2011 La scrittura di un programma Modellizzazione programma Flowcharts Pseudocode Scrittura del codice
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili
Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Anno Accademico Francesco Tortorella Il concetto di visibilità Un programma C++ può assumere una struttura complessa grazie
DettagliStesura informale dell algoritmo: (lasciata come esercizio)
ESERCIZIO 1 Dato un numero positivo Q, scrivere la sua rappresentazione in binario naturale, applicando il tradizionale algoritmo per divisioni successive (l output sarà inteso corretto se letto da destra
DettagliEsercitazione 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
DettagliLa scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco
Sperimentazioni I Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Ottobre 2013 La scrittura di un programma Modellizzazione programma Flowcharts Pseudocode Scrittura del codice Esercizi
DettagliIntroduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliFondamenti di Informatica, A.A Compito A
Fondamenti di Informatica, A.A. 2013-2014 - Compito A 30/07/2014 Prova Pratica L integrale definito di una funzione continua su un intervallo chiuso e limitato può essere calcolato con la regola dei trapezi
DettagliLaboratorio di Calcolo Numerico
Laboratorio di Calcolo Numerico Lezione 3 Padova, April 4th 2016 F. Piazzon Department of Mathematics. Doctoral School in Mathematical Sciences, Applied Mathematics Area Outline Lab. 3-2 of 16 1 Costrutti
DettagliLaboratorio di Python
, Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono
DettagliAlgoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21
DettagliUnità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
DettagliUn 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
DettagliProblema. Equazioni non lineari. Metodo grafico. Teorema. Cercare la soluzione di
Problema Cercare la soluzione di Equazioni non lineari dove Se è soluzione dell equazione, cioè allora si dice RADICE o ZERO della funzione Metodo grafico Graficamente si tratta di individuare l intersezione
DettagliStrutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliIntroduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
DettagliEsercizio 1 Liste: calcolo perimetro di un poligono
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di
DettagliIntroduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica
Corso di Fondamenti di Informatica Ingegneria Clinica Esercitazione 6 Raffaele Nicolussi Esercizio 1 Si scriva una funzione in linguaggio C che riceve in ingresso un numero intero A letto da tastiera,
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliCompendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)
Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione
DettagliZeri di una funzione. Funzioni continue - Proprietà. certo intervallo dell'asse x. da: a ξ. cui f(x)=0. precisione desiderata (iterazione( iterazione)
Zeri di una funzione Ricerca delle (eventuali) radici reali di una funzione che si supporrà definita e continua in un certo intervallo dell'asse x La ricerca delle radici approssimate e' composta da: 1)
DettagliMetodi per la risoluzione di equazioni non lineari
Esercitazione per il corso di Calcolo Numerico Prof. G. Zilli Metodi per la risoluzione di equazioni non lineari Roberto Bertelle Laurea in Ingegneria Aerospaziale a.a.. 2009-2010 2 Indice 1. Testo della
DettagliRicerca binaria (o dicotomica) di un elemento in un vettore
Ricerca binaria (o dicotomica) di un elemento in un La ricerca binaria o dicotomica è utilizzata per ricercare i dati in un ORDNATO. L algoritmo di ricerca binaria, dopo ogni confronto, scarta metà degli
DettagliZeri di funzioni e teorema di Sturm
Zeri di funzioni e teorema di Sturm Enrico Bertolazzi Dipartimento di Ingegneria Meccanica e Strutturale Università degli Studi di Trento via Mesiano 77, I 38050 Trento, Italia EnricoBertolazzi@ingunitnit
DettagliSoluzione dei sistemi lineari in C++
Soluzione dei sistemi lineari in C++ Roberto Basili University of Rome Tor Vergata, Department of Computer Science, Systems and Production, 00133 Roma (Italy), basili@info.uniroma2.it Motivazioni La seguente
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliObiettivi di questa esercitazione
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Esericizi sempici su funzioni 2. Funzioni ricorsive 3. Funzioni e Header File 2 ESERCIZIO 1 Codificare in C la funzione int
DettagliIndovina la lettera...
Indovina la lettera... La lezione di oggi consiste nel preparare un programma che chiede all'utente di indovinare quale sia il carattere generato dal programma stesso in modo casuale. Il numero totale
Dettagligeneralità concetti di base
generalità concetti di base cosa significa informatica? scienza dell informazione e l informazione giornalistica? scienza dei computer (dall inglese computer science) per i progettisti di computer? scienza
Dettagli