Fondamenti di Informatica Ing. Biomedica

Documenti analoghi
Esercitazioni di Fondamenti Informatica - Modulo A 1

Debug di un programma

Creare un nuovo progetto. Marco Bonelli a.s. 2016/2017. San Secondo P.se I,T.I.S. G. Galilei Department of Computer Science.

Fondamenti di Informatica

Lab 01 Introduzione a Codelite

Fondamenti di Informatica Ingegneria Biomedica A.A. 2017/18

INTRODUZIONE A VISUAL STUDIO

Esercizi in Python. Docente: Domenico Daniele Bloisi

Debugger. Marco Alberti Programmazione e Laboratorio, A.A

Fondamenti di Informatica

Lab 04 Programmazione Strutturata"

Fondamenti di Informatica T2 Modulo 2

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

La programmazione in linguaggio C

ISTRUZIONI DEVC++ Autore: Luca Florio (luca.florio<at>polimi.it)

Linguaggio C Debugging

Compilatori. g ++ prog.c. che crea il file eseguibile a.out. È utile conoscere alcune opzioni di g ++

Fondamenti di Informatica AA 2016/2017

Unix e comandi di base

Strumenti per la programmazione. Strumenti per la programmazione. Strumenti per la programmazione. Strumenti per la programmazione

Modulo di Informatica

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

DEBUGGING. Ivan Lanese

Università di Ferrara Facoltà di Ingegneria. Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Lab 01 Introduzione a Codelite

Iniziare a programmare in C++

DEBUGGING. Ivan Lanese

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

2 Lavorare con Eclipse

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

- Esercitazione III Programmazione C Funzioni Alessandro Saetti

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse

12 Function Handles e Ricorsione in MATLAB

Allenamento alle Olimpiadi di Informatica

Fondamenti di Informatica T-1 CdS Ingegneria Informatica. Introduzione agli ambienti di sviluppo MS Visual Studio 2005/2008/2010 CodeLite 6.1.

Laboratorio di Programmazione Laurea in Bioinformatica

Università di Ferrara. Facoltà di Ingegneria. Esercitazioni di

Excel 2003 Operazioni di base

float somma_float(float a, float b) int get_ascii(char c)

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video.

Esercitazioni di Informatica (CIV)

Tutorato Elementi di Informatica 2018

Laboratorio di Programmazione Laurea in Bioinformatica

Fondamenti di Informatica T-1

Calcolare con il computer: Excel. Saro Alioto 1

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Esercizio 1" input tre numeri interi e stampi a video la loro somma e la media. n Realizzare un programma che legga da. Lab03 2

Modulo 4 Esercitazione Nr 2 Office 2007

Fortran in pillole : prima parte

Le Funzioni e la Ricorsione

cout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;

Fondamenti di informatica T-1 (A K) Esercitazione 3: assegnamento e variabili

Ricorsione. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

PRIMA ESPERIENZA DI LABORATORIO. Introduzione alla programmazione in C

Linguaggi Compilati vs. Interpretati

Fondamenti di Programmazione

Fondamenti di Programmazione

Informatica per Statistica Riassunto della lezione del 21/10/2011

FONDAMENTI DI INFORMATICA

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

1 Massimo pari e dispari di una sequenza

PER UTILIZZARE LCC IN LAB

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Esercitazione 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

COSTRUZIONE DI UN APPLICAZIONE

Errori di programmazione Università degli Studi di Milano

Informatica B Esercitazione 2

OPERAZIONI ARITMETICHE

INTRODUZIONE ALLA PROGRAMMAZIONE

Fondamenti di Informatica T-1 Modulo 2

PROGRAMMAZIONE A MODULI IN C++ MEDIANTE CODEBLOCKS

FUNZIONI. Ivan Lanese

Debugger. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

Università di Ferrara Facoltà di Ingegneria. Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Fondamenti di Informatica Ing. Biomedica

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

COSTRUZIONE DI UN APPLICAZIONE

Word 2003 Lavorare col testo

Video Scrittura (MS Word)

Fondamenti di Informatica

A.A Laboratorio n 1 Ing. Gian Enrico Conti. Milano, XX mese 20XX

Lanciare MPLAB IDE (Start->Programmi->Mirochip->MPLAB IDE v7.22->mplab IDE):

Programmazione di base

Excel. Il foglio di lavoro. Il foglio di lavoro Questa viene univocamente individuata dalle sue coordinate Es. F9

SATER Sistema Acquisti Telematici dell Emilia-Romagna: manuali per gli Operatori economici

Transcript:

Fondamenti di Informatica Ing. Biomedica Esercitazione n.5 Debugger & Funzioni Ricorsive Antonio Arena antonio.arena@ing.unipi.it

Debugger Cos è? Il debugger è uno strumento molto potente che permette l analisi e l eliminazione dei bug (debugging), ovvero gli errori di programmazione. Fondamenti di Informatica: Esercitazione n.5 2

Fondamenti di Informatica: Esercitazione n.5 3 Debugger Come funziona? 1. Si comincia ad eseguire il programma. 2. A un certo punto l esecuzione si «congela» su una qualche istruzione del programma (scelta da chi sta facendo il debugging!!). Il punto in cui il debugger si ferma si chiama breakpoint. 3. Non appena il programma si termina, il programmatore può esaminare lo stato delle variabili e di tutta la memoria in generale.

Fondamenti di Informatica: Esercitazione n.5 4 Debugger - Breakpoints 1. I breakpoint possono essere inseriti sia prima dell esecuzione del programma con il debugger, sia durante l esecuzione. Si può inserire cliccando a destra del numero di riga in cui ci si vuole fermare. 2. E importante che ce ne sia almeno uno prima di far partire il debugger, altrimenti l esecuzione non si fermerà mai per poter essere ispezionato. NB: l ultima istruzione eseguita è quella precedente al breakpoint! Quindi in questo caso, il debugger eseguirà l istruzione alla riga 48 e si fermerà sulla 49 aspettando un comando dall utente

Debugger HOW TO Fondamenti di Informatica: Esercitazione n.5 5 1. Il debugger ha una sua toolbar apposita. Una volta compilato il programma (tramite il pulsante build), basta premere sul pulsante «Debug/Continue» 2. Una volta che l esecuzione si è «congelata», si può proseguire l esecuzione fino al prossimo breakpoint inserito premento di nuovo il pulsante «Debug/Continue», altrimenti si può andare all istruzione successiva al breakpoint premente il pulsante «Next Line» 3. Per poter vedere il contenuto delle variabili dichiarate basta cliccare su «Debugging Windows» -> «Watches» 4. «Call stack» permette di vedere tutte le chiamate di funzioni fatte nel momento che l esecuzione viene «congelata»

Funzioni Ricorsive Esercizio n.1 Fondamenti di Informatica: Esercitazione n.5 6 Realizzare in C++ una funzione che calcoli la serie armonica (troncata), ovvero: ( 1! " = $ %&' i.e. somma dei reciproci dei primi n numeri naturali. * n va letto da tastiera la funzione deve essere ricorsiva

Fondamenti di Informatica: Esercitazione n.5 7 Funzioni Ricorsive Esercizio n.1 Analizziamo i casi più semplici: f(1) = 1 f(2) = 1/1 + 1/2 = f(1) + 1/2 f(3) = 1/1 + 1/2 + 1/3 =.. f(n) =???? Ricorda: una funzione ricorsiva è una funzione che chiama sé stessa. Gli ingredienti sono: 1. Un caso base dove non c è la chiamata ricorsiva (qui qual è il caso base?) 2. Un caso generale dove si richiama la funzione con un input che prima o poi «casca» nel caso base

Esercizio n.2 Fondamenti di Informatica: Esercitazione n.5 8 Realizzare in C++ una funzione ricorsiva che calcoli. l n-esimo numero pari positivo, ovvero! " = 2 " 1 n.b. zero è un numero pari! Ovviamente, in C++ sarebbe banale: si legge n, si calcola 2*(n-1) e si stampa a video il risultato della moltiplicazione. Ma usando una funzione ricorsiva?

Fondamenti di Informatica: Esercitazione n.5 9 Esercizio n.2 Analizziamo i casi più semplici: f(1) = 2*(1-1) = 0 f(2) = 2*(2-1) = 2 = f(1) + 2 f(3) = 2*(3-1) = 4 = f(2) + 2.. f(n) =???? 1. Qual è il caso base?

Fondamenti di Informatica: Esercitazione n.5 10 Esercizio n.3 Realizzare in C++ una funzione ricorsiva che calcoli. l n-esima potenza di 2, ovvero! " = 2 % Anche qui, analizziamo i casi: f(0) = 2^0 = 1 f(1) = 2^1 = 2 = 2 * f(0) f(2) = 2^2 = 4 = 2 * f(1).. f(n) =????

Esercizio n.4 Fondamenti di Informatica: Esercitazione n.5 11 Realizzare in C++ una funzione ricorsiva che prende un intero n e stampa a video n asterischi Esempio: asterischi(5) stampa a video * * * * * asterischi(1) stampa a video * asterischi(0) stampa a video niente

Esercizio n.5 Difficile! Fondamenti di Informatica: Esercitazione n.5 12 Realizzare in C++ una funzione ricorsiva che prende un intero e lo stampa a video con tutte le cifre incolonnate (a partire da quella più significativa). Esempio: scrivi_verticale(12345) stampa a video 1 2 3 4 5 scrivi_verticale(7354) stampa a video scrivi_verticale(2) stampa a video 2 7 3 5 4

Fondamenti di Informatica: Esercitazione n.5 13 Esercizio n.5 Difficile! Caso base: se il numero letto ha una sola cifra, allora stampa la cifra Caso generale: se non ha una sola cifra: 1. stampa il numero incolonnato togliendo l ultima cifra 2. scrivi l ultima cifra ricorda: n/10 da come risultato n con l ultima cifra rimossa 1234/10 = 123 n%10 da come risultato l ultima cifra di n 1234%10 = 4

Fondamenti di Informatica: Esercitazione n.5 14 Esercizio n.5 Difficile! PseudoCodice stampa_verticale(n) se n<10 { stampa n } altrimenti{ stampa_verticale( «n senza l ultima cifra» ) stampa ultima cifra } }