RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3
|
|
- Gaetano Simonetti
- 8 anni fa
- Visualizzazioni
Transcript
1 RICORSIVITA 1. Cos è la ricorsività? La ricorsività è un metodo di soluzione dei problemi che consiste nell esprimere la soluzione relativa al caso n in funzione della soluzione relativa al caso n-1. La soluzione del caso n-1 in funzione della soluzione del caso n-2, e cosi via. Procedendo a ritroso in questo modo si arriva ad un caso dipendente dall intero k (che generalmente vale 0 od 1) di cui è nota la soluzione. Si consideri il seguente problema: sommare i primi n interi positivi. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3 Si vede subito che Sn=S n-1 +n Allora si può utilizzare la soluzione ricorsiva che segue: int somma(int n) { int sum; if (n==1) sum=1; else sum= somma(n-1)+ n; return sum; //se n=1 non si hanno più chiamate ricorsive 2. Può fare un altro semplice esempio? Generare l ennesimo numero di Fibonacci. La serie di Fibonacci è la seguente: 0,1,1,2,3,5,8,13,21,34, Allora: F 0 =1; F 1 =1; F n =F n-1 +F n-2 ; int fibonacci(int n) { int fb; if (n==0 n==1) fb=1; else fb=fibonacci(n-1)+ fibonacci(n-2); return fb; { int n=10; for(int i=0;i<n;i++) cout<<fibonacci(i)<<endl; 1
2 3. Un altro semplice esempio? Un altro tipico esempio di problema risolubile ricorsivamente è il calcolo del fattoriale: si ha: fatt(1)=1 fatt(n)=n*fatt(n-1) Allora: int fatt(int n) { int f; if (n==1) f=1; else f=n*fatt(n-1); return f; { cout<<fatt(4); 4. E possibile scrivere un programma ricorsivo che determini l ennesimo numero primo? Cerchiamo di ragionare in termini ricorsivi: Un numero è primo quando non è divisibile per alcun numero primo che lo precede che sia minore od uguale della sua radice Il primo numero primo è 2 Basandoci sulla precedente definizione possiamo scrivere il seguente programma che calcola i primi numeri primi in un tempo brevissimo (l esecuzione, una volta compilato il programma, è istantanea) const int DIM=10000; void primo(int v[],int &n) { int m=v[n-1]; bool divisibile; do { m++; divisibile=false; for(int i=0;i<n,v[i]<=sqrt(m);i++) if (m%v[i]==0){divisibile=true;break; if(!divisibile) { v[n]=m; n++; primo(v,n); while (n<dim); { int v[dim],n=1; v[0]=2; primo(v,n); for(int i=0;i<dim;i++) cout<<v[i]<<" "; 2
3 L efficienza del programma consiste nel fatto che per verificare se un numero n è primo l algoritmo normale divide per tutti i dispari minori della radice. Mentre il presente algoritmo divide per tutti i numeri primi inferiori alla radice. Quindi fa meno divisioni. 5. I problemi risolubili ricorsivamente sembrano solo quelli di tipo numerico. E corretto? No. Si consideri il seguente problema: Si hanno N dischi forati, di dimensioni decrescenti, posti su un palo A. Occorre spostarli su un palo finale C servendosi di un palo intermedio B. Durante gli spostamenti non deve mai accadere che un disco stia sopra un disco più piccolo. La soluzione ricorsiva è semplice: Se n=2 si sposta il disco 1 in B, il disco 2 in C, il disco 1 in C. Se n>2 si utilizza la soluzione relativa ad n-1 per spostare gli n-1 dischi su B. Si sposta il disco n su C. Si utilizza la soluzione relativa ad n-1 per spostare n-1 dischi da B a C. La soluzione ricorsiva è allora: void sposta (char iniziale, char finale, char intermedio, int n) { if (n==2) { cout<<1<<intermedio<<endl; cout<<2<<finale<<endl; cout<<1<<finale<<endl; else { sposta(iniziale, intermedio, finale, n-1); cout<<n<<finale<<endl; sposta(intermedio, finale, iniziale,n-1); { sposta('a','c','b',4); Se si tenta di risolvere questo problema in modo iterativo, ovvero senza la ricorsività, ci si renderà conto dell utilità di quest ultima. 6. Esiste anche una ricorsione indiretta? Si, la funzione A può chiamare la funzione B che a sua volta chiama la funzione A. Si consideri il seguente esempio: void seconda (int n); int prima (int n) { cout<<"\n prima "; if (n!=1) seconda(n); return 0; void seconda(int n) { cout<<"\n seconda"; prima(n-1); { prima(10); 3
4 Naturalmente affinché la prima funzione possa utilizzare la seconda (che non è stata ancora definita) è necessaria farla precedere dal prototipo della seconda. 7. Quale può essere l utilità della ricorsione indiretta? Quella di consentire di fare il parsing di un espressione, ovvero di verificare se un espressione soddisfa ad una grammatica definita ricorsivamente. Si consideri una semplice grammatica per le espressioni algebriche: espressione=termine termine+termine termine-termine termine=fattore fattore*fattore fattore/fattore fattore=numero (espressione) Nella precedente numero rappresenta un intero senza segno. Basandosi sulla ricorsività indiretta è facile scrivere funzioni che determinano se una stringa è una espressione /* espressione=termine termine+termine termine-termine termine=fattore fattore*fattore fattore/fattore fattore=numero (espressione) */ typedef char stringa[80]; int pos(char c, stringa s) //ritorna la posizione di un carattere in un stringa { for(int i=0;i<strlen(s);i++) if (c==s[i])return i; return -1; char* substr(stringa s, int posiniz, int lung) //ricava la sottostr a partire da posiniz per una certa lunghezza { int i; if (posiniz>=0 && posiniz<strlen(s)) { char* t=new char[80]; for(i=0;i<lung;i++) { t[i]=s[i+posiniz]; if(s[i+posiniz]=='\0')break; t[i]='\0'; return t; else return NULL; bool numero(stringa s) { for(int i=0;i<strlen(s);i++) if(!isdigit(s[i]))return false; return true; bool termine(stringa s); bool espressione(stringa s) { int pospiu,posmeno; char* testa=new char[80]; char* coda=new char[80]; if(termine(s))return true; pospiu=pos('+',s); if(pospiu>0) { testa=substr(s,0,pospiu-1); coda=substr(s,pospiu+1,strlen(s)-pospiu-1); if(termine(testa)&&termine(coda))return true; posmeno=pos('-',s); if(posmeno>0) { testa=substr(s,0,posmeno-1); coda=substr(s,posmeno+1,strlen(s)-posmeno-1); if(termine(testa)&&termine(coda))return true; return false; 4
5 bool fattore(stringa s); //prototipo della funzione fattore che sarà definita dopo bool termine(stringa s) { int posper, posdiv; char* testa=new char[80]; char* coda=new char[80]; if (fattore(s))return true; posper=pos('*',s); if(posper>0) {testa=substr(s,0,posper-1); coda=substr(s,posper+1,strlen(s)-posper-1); if (fattore(testa)&&fattore(coda))return true; posdiv=pos('/',s); if(posdiv>0) {testa=substr(s,0,posdiv-1); coda=substr(s,posdiv+1,strlen(s)-posdiv-1); if (fattore(testa)&&fattore(coda))return true; return false; bool fattore(stringa s) { if(numero(s))return true; if(s[0]=='(' && s[strlen(s)-1]==')' && espressione(substr(s,1,strlen(s)-2))) return true; return false; { stringa s; cout<<"\n Inserisci stringa:\n "; gets(s); if (espressione(s)) cout<<"espressione"; else cout<<"\n NON espressione"; 5
La ricorsione. Politecnico di Milano Sede di Cremona
La ricorsione Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Definizioni ricorsive Sono comuni
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliUna funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.
Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliAlgebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
DettagliAA 2006-07 LA RICORSIONE
PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliRicorsione. (da lucidi di Marco Benedetti)
Ricorsione (da lucidi di Marco Benedetti) Funzioni ricorsive Dal punto di vista sintattico, siamo in presenza di una funzione ricorsiva quando all interno della definizione di una funzione compaiono una
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
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
DettagliEsercitazione 7. Procedure e Funzioni
Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.
Dettagli24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2
Dati due numeri naturali a e b, diremo che a è divisibile per b se la divisione a : b è esatta, cioè con resto 0. In questo caso diremo anche che b è un divisore di a. 24 : 3 = 8 con resto 0 26 : 4 = 6
DettagliPolitecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).
Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Aprile 20 Indice Serie numeriche. Serie convergenti, divergenti, indeterminate.....................
DettagliIl concetto di valore medio in generale
Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo
DettagliSISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
DettagliProgrammazione dinamica
Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)
DettagliMatematica generale CTF
Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione
DettagliAlessandro Pellegrini
Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione
Dettagli2. Leggi finanziarie di capitalizzazione
2. Leggi finanziarie di capitalizzazione Si chiama legge finanziaria di capitalizzazione una funzione atta a definire il montante M(t accumulato al tempo generico t da un capitale C: M(t = F(C, t C t M
DettagliLEZIONE 23. Esempio 23.1.3. Si consideri la matrice (si veda l Esempio 22.2.5) A = 1 2 2 3 3 0
LEZIONE 23 231 Diagonalizzazione di matrici Abbiamo visto nella precedente lezione che, in generale, non è immediato che, data una matrice A k n,n con k = R, C, esista sempre una base costituita da suoi
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliCALCOLO COMBINATORIO
CALCOLO COMBINATORIO 1 Modi di formare gruppi di k oggetti presi da n dati 11 disposizioni semplici, permutazioni Dati n oggetti distinti a 1,, a n si chiamano disposizioni semplici di questi oggetti,
DettagliEsempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
DettagliProof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme
G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero
DettagliAlgebra di Boole ed Elementi di Logica
Algebra di Boole ed Elementi di Logica 53 Cenni all algebra di Boole L algebra di Boole (inventata da G. Boole, britannico, seconda metà 8), o algebra della logica, si basa su operazioni logiche Le operazioni
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliSOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.
SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
DettagliSottoprogrammi: astrazione procedurale
Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j
DettagliProf. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:
LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità
DettagliCompito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
DettagliIntroduzione alla Ricorsione
Introduzione alla Corso di Informatica A Vito Perrone Indice La formulazione in termini ricorsivi di problemi e algoritmi La ricorsione come strumento di programmazione L esecuzione dei sottoprogrammi
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
DettagliArchitettura degli elaboratori Seconda esercitazione di laboratorio. Dr. Francesco Giacomini e Dr. Matteo Manzali Università degli Studi di Ferrara
Architettura degli elaboratori Seconda esercitazione di laboratorio Dr. Francesco Giacomini e Dr. Matteo Manzali Università degli Studi di Ferrara Linee generali (1) L esercitazione consiste nell implementare
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliSERIE NUMERICHE. prof. Antonio Greco 6-11-2013
SERIE NUMERICHE prof. Antonio Greco 6--203 Indice Motivazioni........... 3 Definizione........... 3 Errore tipico........... 3 Un osservazione utile...... 3 Condizione necessaria...... 4 Serie armonica.........
DettagliMetodi risolutivi per le disequazioni algebriche
Metodi risolutivi per le disequazioni algebriche v.scudero Una disequazioni algebrica si presenta in una delle quattro forme seguenti: () P( () P( (3) P( () P( essendo P( un polinomio in. Noi studieremo
DettagliAlgoritmi su array / 2
Corso di Informatica Algoritmi su array / Anno Accademico / Francesco Tortorella Algoritmi su array Operazioni tipiche sugli array: inizializzazione lettura stampa ricerca del minimo e del massimo ricerca
DettagliRICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di
RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di esempio CERCA 90 NEL SACCHETTO = estrai num Casi num 90 Effetti CERCA 90 NEL
DettagliIniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:
Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione
DettagliAlcune nozioni di base di Logica Matematica
Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di
DettagliRicorsione. Corso di Fondamenti di Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e
DettagliStudente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide
DettagliCorso di Fondamenti di Informatica Algoritmi su array / 2
Corso di Fondamenti di Informatica Algoritmi su array / Anno Accademico 00/009 Francesco Tortorella Algoritmi su array Operazioni tipiche sugli array: inizializzazione lettura stampa ricerca del minimo
DettagliEsercitazione Informatica I AA 2012-2013. Nicola Paoletti
Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.
DettagliFondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)
Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliIntroduzione alla tecnica di Programmazione Dinamica
Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/37 Sommario della lezione Introduzione alla tecnica di Programmazione Dinamica Esempio di applicazione n. 1:
Dettagli( x) ( x) 0. Equazioni irrazionali
Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza
DettagliESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include
DettagliStudente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
DettagliSemantica Assiomatica
Semantica Assiomatica Anche nella semantica assiomatica, così come in quella operazionale, il significato associato ad un comando C viene definito specificando la transizione tra stati (a partire, cioè,
Dettagli[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008
Se devo memorizzare più valori che sono in qualche modo parenti dal punto di vista logico, posso usare il concetto di vettore di variabili (array). Ad esempio, se devo memorizzare le temperature di tutti
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.
DettagliFunzioni e procedure
Funzioni e procedure DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/
DettagliLEZIONE 7. Esercizio 7.1. Quale delle seguenti funzioni è decrescente in ( 3, 0) e ha derivata prima in 3 che vale 0? x 3 3 + x2. 2, x3 +2x +3.
7 LEZIONE 7 Esercizio 7.1. Quale delle seguenti funzioni è decrescente in ( 3, 0) e ha derivata prima in 3 che vale 0? x 3 3 + x2 2 6x, x3 +2x 2 6x, 3x + x2 2, x3 +2x +3. Le derivate sono rispettivamente,
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliFormule trigonometriche
Formule trigonometriche C. Enrico F. Bonaldi 1 Formule trigonometriche In trigonometria esistono delle formule fondamentali che permettono di calcolare le funzioni goniometriche della somma di due angoli
DettagliLA NOTAZIONE SCIENTIFICA
LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo
Dettagli10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
DettagliAmmortamento di un debito
Algoritmi e dintorni: Ammortamento di un debito: Ricerca del tasso Prof. Ettore Limoli Ammortamento di un debito In questa nostra trattazione non ci addentreremo in problemi di matematica finanziaria o
DettagliLISTE, INSIEMI, ALBERI E RICORSIONE
LISTE, INSIEMI, ALBERI E RICORSIONE Settimo Laboratorio LISTE E RICORSIONE SVUOTALISTA: CONSIDERAZIONI Per svuotare una lista si devono eliminare i singoli nodi allocati con la malloc... Come fare? Per
DettagliDAL DIAGRAMMA AL CODICE
DAL DIAGRAMMA AL CODICE Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza
DettagliInformatica 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,
DettagliCONTINUITÀ E DERIVABILITÀ Esercizi risolti
CONTINUITÀ E DERIVABILITÀ Esercizi risolti. Determinare kπ/ [cos] al variare di k in Z. Ove tale ite non esista, discutere l esistenza dei iti laterali. Identificare i punti di discontinuità della funzione
DettagliB9. Equazioni di grado superiore al secondo
B9. Equazioni di grado superiore al secondo Le equazioni di terzo grado hanno una, due o tre soluzioni, risolvibili algebricamente con formule molto più complesse di quelle dell equazione di secondo grado.
DettagliG6. Studio di funzione
G6 Studio di funzione G6 Come tracciare il grafico di una funzione data Nei capitoli precedenti si sono svolti tutti gli argomenti necessari per tracciare il grafico di una funzione In questo capitolo
DettagliIndirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili
Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria
DettagliCapitolo 2. Operazione di limite
Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A
DettagliFondamenti e didattica di Matematica Finanziaria
Fondamenti e didattica di Matematica Finanziaria Silvana Stefani Piazza dell Ateneo Nuovo 1-20126 MILANO U6-368 silvana.stefani@unimib.it 1 Unità 9 Contenuti della lezione Operazioni finanziarie, criterio
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliApplicazioni del calcolo differenziale allo studio delle funzioni
Capitolo 9 9.1 Crescenza e decrescenza in piccolo; massimi e minimi relativi Sia y = f(x) una funzione definita nell intervallo A; su di essa non facciamo, per ora, alcuna particolare ipotesi (né di continuità,
DettagliPROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI
PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento
DettagliCodifica: dal diagramma a blocchi al linguaggio C++
Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU
DettagliAPPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL
APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione
DettagliDimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella
INFORMATICA A Titolo presentazione sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 5 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliAbstract Data Type (ADT)
Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo
DettagliMatematica e Statistica
Matematica e Statistica Prova d esame (0/07/03) Università di Verona - Laurea in Biotecnologie - A.A. 0/3 Matematica e Statistica Prova di MATEMATICA (0/07/03) Università di Verona - Laurea in Biotecnologie
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliTipi di Dato Ricorsivi
Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi
DettagliAlgebra Booleana ed Espressioni Booleane
Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale
DettagliAnno 3. Funzioni: dominio, codominio e campo di esistenza
Anno 3 Funzioni: dominio, codominio e campo di esistenza 1 Introduzione In questa lezione parleremo delle funzioni. Ne daremo una definizione e impareremo a studiarne il dominio in relazione alle diverse
Dettaglici sono più problemi che programmi esiste un problema che non si può risolvere con un programma
Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore
Dettagli1 Alcuni criteri di convergenza per serie a termini non negativi
Alcuni criteri di convergenza per serie a termini non negativi (Criterio del rapporto.) Consideriamo la serie a (.) a termini positivi (ossia a > 0, =, 2,...). Supponiamo che esista il seguente ite a +
DettagliRicerca sequenziale di un elemento in un vettore
Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna
DettagliSCHEDA DI RECUPERO SUI NUMERI RELATIVI
SCHEDA DI RECUPERO SUI NUMERI RELATIVI I numeri relativi sono l insieme dei numeri negativi (preceduti dal segno -) numeri positivi (il segno + è spesso omesso) lo zero. Valore assoluto di un numero relativo
DettagliIl programmatore che c e in noi Lezione 12 Statements
Il programmatore che c e in noi Lezione 12 Statements Mi sveglio, vado in bagno, doccia, colazione. Per colazione, preparo il caffe, accendo il gas, se e acceso metto la caffettiera sopra il fornello ed
DettagliAPPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Dettagli