Errori di programmazione Università degli Studi di Milano

Documenti analoghi
Errori di programmazione

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Cosa sono gli Script (m-file) Script Semplici programmi. Fino ad ora, i comandi sono stati sempre digitati nella command window:

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab

2 Lavorare con Eclipse

Fondamenti di Informatica

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

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

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali

FONDAMENTI DI INFORMATICA

RICONOSCIMENTO DI FORME A.A OBIETTIVI PARTE 1 INTRODUZIONE A MATLAB

Corso Matlab : Terza lezione (Esercitazione, 17/05/13) Samuela Persia, Ing. PhD.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Input/output. Marco D. Santambrogio Ver. aggiornata al 24 Agosto 2015

FUNZIONI. Ivan Lanese

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

File binari e file di testo

Laboratorio di INFORMATICA. 15 ottobre 2009

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Fondamenti di Informatica A. A / 1 9

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

DEBUGGING. Ivan Lanese

Fondamenti di Informatica

Informatica Applicata al Suono Tutorial Matlab

Calcolo numerico e programmazione Programmazione

Introduzione al MATLAB c Parte 2

Data Import pulizia dati e Probabilità. Renato Mainetti

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Calcolo Numerico A.A Esercitazione n

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Fondamenti di Informatica AA 2016/2017

Matlab: Script e Funzioni

DEBUGGING. Ivan Lanese

Fondamenti di Informatica

L utility Unix awk [Aho-Weinberger-Kernighan]

INTRODUZIONE A VISUAL STUDIO

Data Import e Probabilità. Renato Mainetti

Università degli Studi di Ferrara

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Operatori relazionali

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

1. NOZIONI DI BASE. 1.1 Introduzione

Debug di un programma

Lezione 25: File Mercoledì 18 Novembre 2009

Programmazione Matlab

Tutorial su Codelite. Luca Ceriani 2011 Federico Cerutti

8 Introduzione MATLAB

Esercitazioni di MatLab

Università degli Studi di Ferrara

Primi script in MATLAB

Iniziare a programmare in C++

Parte 2 Tutorial Cenni di programmazione

PER UTILIZZARE LCC IN LAB

Unix e comandi di base

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep -

Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Metodi numerici con elementi di Programmazione A.A

Fondamenti di Informatica, A.A FILA A

Input/Output. Console e File.

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug

Calcolo Numerico A.A Lab n

>> A = [1 2 3; 4 5 6; 7 8 9]; >> A

8 Introduzione MATLAB

Gestione dei files in linguaggio C. Fondamenti

Linguaggi Compilati vs. Interpretati

I fogli elettronici. Capitolo 12 Fluency Conoscere e usare l informatica

Introduzione a Linux Lezione 7 Programmare in Linux

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

FONDAMENTI DI INFORMATICA

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab Shell. Lab-Shell 1

CORSO DI LABORATORIO DI INFORMATICA

Introduzione a MATLAB

Esercitazioni di Fondamenti Informatica - Modulo A 1

Fondamenti di Informatica

Fondamenti di Informatica

Mini-Corso di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE

Script e Funzioni in Matlab pre-2016b

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Un esempio di calcolo di complessità: insertion sort

Lab 01 Introduzione a Codelite

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

Laboratorio - Programmazione

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Prof. Pagani Corrado IL DEBUGDEL SOFTWARE

Algoritmi stabili e instabili

Transcript:

Errori di programmazione Lo sviluppo di programmi è ovviamente soggetto ad errori da parte del programmatore. Gli errori sono generalmente di due tipi: Errori di sintassi (syntax errors): violazioni della sintassi del linguaggio, ad esempio omettere parentesi, digitare in modo errato una parola chiave. Errori in fase di esecuzione (run-time errors): sono in genere errori nello sviluppo dell algoritmo, ovvero l algoritmo non fa quello che dovrebbe fare. Ad esempio un calcolo errato o la modifica del valore di una variabile che non dovrebbe essere modificata

Errori di programmazione Gli errori di sintassi vengono individuati e segnalati dall interprete, durante la fase di interpretazione del codice. Gli errori in fase di esecuzione si manifestano di solito attraverso risultati inattesi restituiti da una funzione o attraverso anomalie nell esecuzione di un programma (ad esempio cicli infiniti, terminazioni anomale). Gli errori in fase di esecuzione sono pertanto più difficili da individuare e correggere.

Debugging Il Debugging è il processo attraverso il quale si individuano e correggono errori in fase di esecuzione all interno di un programma. L ambiente di sviluppo MATLAB fornisce uno strumento, il debugger, che assiste il programmatore nell individuazione e correzione degli errori in fase di esecuzione. Il debugger MATLAB è integrato con l editor predefinito per gli M-file.

Debugging Il debugger consente di impostare punti in cui sospendere l esecuzione di un M-file allo scopo di esaminare i valori correnti delle variabili. Tali punti sono chiamati breakpoint I breakpoint possono essere impostati solo in corrispondenza di linee di codice eseguibili contenute in file salvati nella directory corrente o in una directory inclusa tra i path di MATLAB. I breakpoint possono essere impostati nell editor predefinito cliccando a sinistra della linea di codice in corrispondenza della quale si desidera il breakpoint.

Debugging Quando l esecuzione di un programma è sospesa si può esaminare il valore corrente delle variabili. Ad esempio è possibile esaminare le variabili presenti nel workspace di una funzione. Se si riscontrano valori inattesi, ciò significa che nelle linee di codice precedentemente eseguite è presente un errore. Se invece tutti i valori sono corretti, si può proseguire con l esecuzione delle linee di codice successive. I valori possono essere esaminati per esempio attraverso il Workspace Browser.

Esecuzione passo-passo E possibile eseguire un programma istruzione per istruzione in modo da esaminarlo nel dettaglio. Nel menu Debug dell editor predefinito: Step: esegue la riga corrente di un M-file Step In: esegue la riga corrente di un M-file e, se la linea è una chiamata ad un altra funzione, entra all interno della funzione chiamata. Step Out: dopo uno Step In, esegue il resto del codice della funzione chiamata, lascia la funzione chiamata e sospende l esecuzione del programma

Esecuzione passo-passo Nel menu Debug dell editor predefinito: Continue: continua l esecuzione di un M-file fino al prossimo breakpoint o al completamento dell esecuzione Go until cursor: continua l esecuzione di un M-file fino alla riga su cui è posizionato il cursore. Nota: occorre salvare le modifiche apportate ad un M-file prima di iniziare il debug. Se si prova ad operare il debug di un file non salvato, MATLAB salva automaticamente il file prima di iniziare il debug.

Importazione/Esportazione di Dati In MATLAB si possono importare ed esportare dati in uno dei seguenti tipi di file: -MAT-file (file binari con estensione.mat) -File di testo (dati in formato ASCII) -File di tipo grafico (ad esempio file tiff, gif, jpeg, png) -File audio e video (ad esempio file wav, avi) -Fogli di calcolo (ad esempio file Excel)

Esportazione in formato MAT Per esportare dati in formato MAT sintassi: save file_name variables_name >> save test A B oppure save('test', 'A', 'B') Le variabili A e B vengono salvate nel file test.mat >> save work Le variabili nel workspace vengono salvate nel file work.mat

Importazione di MATfile load permette di caricare file.mat precedentemente salvati >> load test carica il file test.mat >> load work

Esportazione in formato testo Per esportare dati in formato testo (codifica ASCII) si può usare il comando save con l opzione -ASCII. Sintassi: save file_name variable_name -ASCII Esempio: >> save test.txt A -ASCII Nel file test.txt troveremo gli elementi dell'oggetto A separati da spazi Nel caso si voglia usare la tabulazione si può aggiungere l opzione -tabs >> save test.txt A -ASCII -tabs La funzione dlmwrite consente di impostare qualsivoglia carattere separatore, passandolo come parametro alla funzione stessa. >> dlmwrite( test.txt, A, ; );

Importazione da file di testo Se i dati sono numerici, sono contenuti in un file di testo (la cui estensione tipica è.txt) e sono separati da spazi vuoti o tab, è possibile caricarli in MATLAB attraverso il comando load, utilizzandolo nel modo seguente: load percorso_del_file dlmread permette di leggere file di testo specificando in input il separatore >> dlmwrite('test.txt', A, ';'); >> dlmread('test.txt',';') MATLAB salva i dati in una matrice avente lo stesso nome del file. È poi possibile ridenominare la matrice come una qualsiasi altra matrice.

Importazione da file di testo Per altre tipologie di dati in formato testo possiamo usare importdata >> a=importdata('../stringhe.txt') a = 'stringa1' 'stringa2' 'stringa3' >> a(1) ans = 'stringa1'

Esempi >> B=[1:2:11; 2:7; 1:6] >> save frommat.txt B -ASCII >> save frommat.txt B -ASCII -tabs >> save('frommattab.txt', 'B', '-ASCII', '-tabs') >> load frommat.txt >> load frommattab.txt >> dlmwrite('frommatdot.txt', B, ';'); >> dlmread('frommatdot.txt',';') ans = 1 3 5 7 9 11 2 3 4 5 6 7 1 2 3 4 5 6

Import Wizard Oltre alla funzione load e ad altre funzioni simili, MATLAB mette a disposizione uno strumento, Import Wizard, per l importazione di dati. Usando Import Wizard spesso non è necessario imporre o conoscere il formato esatto dei dati, in quanto questo viene generalmente rilevato dal Wizard stesso. Import Wizard si lancia dal menu File nel menu principale di MATLAB: File -> Import Data. Dopo averlo lanciato è sufficiente specificare quale sia il carattere separatore per i dati e se il file abbia una intestazione (header) Il Wizard genera una preview dei dati da importare.

Import Wizard Attenzione: se il workspace base contiene già una variabile avente lo stesso nome del file da importare, il suo contenuto andrà perduto

Insertion Sort InsertionSort(Array A) 1.for i = 2 to length(a) do 2. v A[i] 3. j i - 1 4. while j >= 1 and A[j] > v do 5. A[j + 1] A[j] 6. j j - 1 7. end while 8. A[j + 1] v 9. end for 10. return A j = 1 v = 2 5 2 3 8 7 1 Linea 5 j = 0 Linea 6 j = 1 i=2 2 5 3 8 7 1 Linea 8 v j = 2 v = 3 2 5 3 8 7 1 Linea 6 Linea 5 2 3 5 8 7 1 Linea 8 v i=3 A[j] < v i=4

Insertion Sort InsertionSort(Array A) 1.for i = 2 to length(a) do 2. v A[i] 3. j i - 1 4. while j >= 1 and A[j] > v do 5. A[j + 1] A[j] 6. j j - 1 7. end while 8. A[j + 1] v 9. end for 10. return A Costo Ripetizioni 1 n-1 1 n-1 1 2*m? 1 m* 1 m* 1 n -1 -------------------------------- T(n,m) = 3*(n-1) + 4*m*

Insertion Sort Caso peggiore: quanto vale m? m = 1 quando i = 2, m = 2 quando i = 3,..., m = n-1 quando i=n. Il ciclo while viene eseguito n 1 i=n n 1 /2= n2 i=1 2 n 2 volte. T n =3 n 1 4 n2 2 n 2 =2n2 n 3 E nel caso migliore? Qual è la classe di complessità di T(n)?

Esercizi 3.1.Scrivere un algoritmo di ordinamento degli elementi di un vettore di taglia n calcolando, ad ogni passo 'i', il minimo nel sotto vettore di indici i:n e scambiandolo con l'elemento di posizione i 1) provare l'algoritmo per vettori casuali di taglia diversa e memorizzarne i tempi di esecuzione 2) scrivere la funzione di complessità dell'algoritmo in funzione della taglia dell'input

Esercizi 3.2. Ripetere i passi 1) e 2) dell'esercizio precedente con l'algoritmo Insertion Sort e confrontare le due funzioni di complessità nel caso peggiore e nel caso migliore 3.3. Scrivere uno script che legge dal file numeri.txt dei valori, li ordina e scrive nel file ordinati.txt la sequenza ordinata in ordine decrescente. 3.4. Scrivere una funzione che riceve come input il nome di un file, legge da tale file un un numero n, genera un vettore distribuito normalmente con media e deviazione standard a piacere, lo ordina e scrive nel file ordinati.txt la sequenza ordinata in ordine decrescente