14 Function Handles in MATLAB

Documenti analoghi
12 Function Handles e Ricorsione in MATLAB

14 Function Handles in MATLAB

12 Strutture con MATLAB

12 Function Handles e Ricorsione in MATLAB

12 Function Handles e Ricorsione in MATLAB

11 Plot e Strutture MATLAB

12 Strutture con MATLAB

14 Function Handles in MATLAB

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Ambienti di Programmazione per il Software di Base

Laboratorio n 6 del Ing. Dario Cogliati

15 Riepilogo di esercizi in MATLAB

Esercizi

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Elementi di Informatica A. A. 2016/2017

Programmazione C: Esercizi su vettori e funzioni. Titolo presentazione. sottotitolo. Milano, XX mese 20XX

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

10 Funzioni MATLAB. dove: output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

Esercizi svolti. delle matrici

Strutture di controllo condizionali in Matlab

- Esercitazione III Programmazione C Funzioni Alessandro Saetti

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

13 Esercizi di Riepilogo

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Laboratorio di Programmazione (Corso di Laurea in Informatica)

10 Funzioni MATLAB. dove. output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

1 (7) 2 (6) 3 (6) 4 (7) 5 (6)

Spazio Riservato alla Commissione. Seconda Prova Intracorso di Fondamenti di Informatica 15/06/2018

Esercizi 5 CICLI. Es.5(cicli)

FONDAMENTI DI INFORMATICA

Fondamenti di Informatica T-1 Modulo 2

13 Esercizi di Riepilogo

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017

I tipi di dato strutturato sono dichiarabili in C tramite la parola chiave typedef

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly

Corso di Informatica

13 Ricorsione con MATLAB

Lab 12 Stringhe e strutture"

8 Introduzione MATLAB

strutture e file di testo/binari Esercizio - lettura/filtro/scrittura PEOPLE.TXT PARTNERS.DAT Due persone sono compatibili

Lab 08 Stringhe e strutture

8 Introduzione MATLAB

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Analisi Numerica Corso di Laurea in Ingegneria Elettrotecnica

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

Rappresentazione degli algoritmi

Politecnico di Milano Facoltà di Ingegneria Milano Leonardo A.A. 2007/08

Esercitazioni Infostat ConfInt

Corso di PHP. Prerequisiti. 2.1 Variabili. Conoscenza HTML Tecnica della programmazione Principi di programmazione web. M. Malatesta 2.

Algoritmi stabili e instabili

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 30 Gennaio 2015 COGNOME E NOME RIGA COLONNA MATRICOLA

Corso di Informatica

Informatica 1. Prova di recupero 21 Settembre 2001

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

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

Scrivere un funzione ricorsiva che stampa a video i valori di una lista di elementi con campo info di tipo intero.

MatLab - Testo pagina 1 di 5 101

Laboratorio 04. Programmazione - CdS Matematica. Michele Donini 19 Novembre 2013

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010

Esercizio: Linear Congruential Generator

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

Lab 08 Stringhe e strutture

ESERCIZIO 1. Informatica B - Esercitazione 12

Università Ca Foscari Dipartimento di informatica. Programmazione part-time. Esame Ocaml

Sunto della scorsa lezione Il linguaggio C. Un Programma con Errori. Il preprocessore. Linguaggi di Programmazione I.

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Facoltà di Ingegneria Industriale. e dei Trasporti. Dipartimento di Elettronica e Informazione. Informatica B. Prof.

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Esercitazione 2. Espressioni booleane Il comando if-else

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Laboratorio di Sperimentazioni di Fisica I MOD A. 14 ottobre 2009

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

Tema A+B COGNOME E NOME. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 4 Febbraio 2016

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Rappresentazione degli algoritmi

Esercitazione 2 SAT. 11 Novembre Denizione del problema SAT

INFORMATICA. Vettori e matrici in C++ A cura dell Ing. Claudio Traini

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 3 Febbraio 2009 COGNOME E NOME RIGA COLONNA MATRICOLA

Spazio Riservato alla Commissione. Seconda Prova Intracorso di Fondamenti di Informatica 15/06/2018

COMPLETAMENTO FATTURE E AUTOCERTIFICAZIONI CON DATI DI PAGAMENTO:

Esercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione

ESERCIZIO 1 ESERCIZIO 2

Fondamenti di Informatica T-1. Selezione Stringhe

ESERCIZIO 1 ESERCIZIO 1

Transcript:

Un "function handle" e una variabile il cui valore e una funzione. Data una funzione esistente, il suo function handle è dichiarato come handle = @nome dove nome è il nome di tale funzione esistente. Una volta dichiarato l handle, è possibile invocarlo come fosse una funzione: 1 handle_sum = @sum; 3 handle_sum([3 ]); Un function handle può essere dichiarato anche al volo, ossia su una funzione non esistente. Ad esempio: handle = @(x) x*3 e un handle di una funzione anonima che accetta in ingresso un parametro formale x e svolge su di esso una moltiplicazione. Si noti che x 3 è a tutti gli effetti il corpo della funzione anonima. 1 handle = @(x) x*3 3 handle(10) Essendo variabili, gli handle possono essere passati ad altre funzioni, e così via, creando le cosiddette funzioni di ordine superiori, in quanto ricevono in ingresso altre funzioni (come handle). 1 handle_es = @(vett, func) func(vett) 3 handle_es([3 ], @sum) 4 handle_es([3 ], handle_sum) 1

14.1 Esercizi Esercizio 14.1 Si definisca una funzione che riceve in ingresso un function handle e due variabili x e y contenenti numeri. Tale funzione, chiamata controlla_funzione, dovrà controllare se applicando ad x la funzione passata tramite function handle si ottiene y, e ritornare 1 o 0 a seconda che tale controllo vada a buon fine o meno. Estendere l esempio ai vettori, ovvero costruire controlla_funzione_vettori affinchè riceva in ingresso un vettore X e un vettore Y, e controlli che la condizione di cui sopra valga per tutti gli elementi corrispondenti di X e Y. Si implementi operazione affinchè controlli che y sia il doppio di x. Esercizio 14. Scrivere una funzione filtra che riceva come parametri una funzione cond (function handle) e un vettore strutturato: 1 vett(1).x vett(1).y 3 4 vett().x 5 vett().y 6 7... 8 9 vett(n).x 10 vett(n).y La funzione cond riceve in ingresso due parametri, a e b, e ritorna 1 (true) se a è maggiore di b, altrimenti ritorna 0 (false). La funzione di ordine superiore filtra dovrà utilizzare la funzione cond, ricevendone in ingresso un suo function handle, al fine di filtrare il vettore ricevuto in ingresso, costruendo un vettore che contenga solo quegli elementi che hanno il campo x maggiore del campo y. Sperimentare con altre funzioni al posto di cond. Ad esempio minore di, oppure uguale a, oppure uno il doppio dell altro, etc. Esercizio 14.3 Implementare la funzione di ordine superiore vrand che riceve in ingresso un function handle e un numero reale tra 0 e 1. Non si sa nulla sul function handle, se non che va A.A.014 015 Informatica B (081369) - Politecnico di Milano Pag.

chiamato senza alcun argomento. Ad esempio: handle(). vrand dovrà chiamare la funzione passata come handle. Se il numero ritornato da tale chiamata è maggiore del numero reale ricevuto come parametro, questo viene ritornato immediatamente, se invece è inferiore, si dovrà continuare a chiamare la funzione finchè questa non restituirà un numero maggiore del reale passato. Utilizzare vrand per realizzare un dado a sei facce truccato. Chiamare 100 volte la vrand e salvare i valori così ottenuti in un vettore V. Realizzare poi altre 100 estrazioni usando la rand al posto della vrand e salvare tali valori in un vettore R. Infine, utilizzare plot() per visualizzare le estrazioni di R e V: su due grafici diversi sullo stesso grafico con colori diversi. Esercizio 14.4 Il sistema di messaggistica di Facebook permette di ricevere messaggi da qualsiasi mittente. Un messaggio e caratterizzato da un mittente e da un testo. Vogliamo implementare un sistema di filtraggio per rilevare automaticamente messaggi indesiderati, basandoci sulle seguenti ipotesi semplificative: se il messaggio e ricevuto da una persona conosciuta, ossia da una persona nella lista degli amici, allora il messaggio non e da scartare se il messaggio e ricevuto da una persona sconosciuta, ossia non presente nella lista degli amici, allora e necessario esaminare la storia dei messaggi ricevuti in passato, per determinare un "valore atteso" che ci permetta di decidere se il messaggio appena ricevuto e nella media. Quindi servira una funzione: 1 [buono motivo] = filtra_messaggio(messaggio, messaggi, amici); dove: buono e di tipo logical che vale vero solo se il messaggio e buono motivo e di tipo char, e vale: a ad indicare che il messaggio e buono perche inviato da un amico m ad indicare che il messaggio e buono perche nella media dei messaggi passati A.A.014 015 Informatica B (081369) - Politecnico di Milano Pag. 3

x ad indicare che il messaggio e cattivo perche non ha passato nessuno dei due criteri precedenti messaggio e una struttura dati a due campi (mittente e testo), entrambi stringhe il cui significato e autoesplicativo. Ad esempio: 1 messaggio.testo = 'Ciao come stai?' messaggio.mittente.nome = 'Federico' 3 messaggio.mittente.cognome = 'Maggi' messaggi e un vettore contenente i messaggi ricevuti in passato. Utilizzeremo la medesima struttura dati di cui sopra. amici e un vettore contenente gli amici. Utilizzeremo una struttura dati contenente i campi nome e cognome. Il filtraggio basato sul mittente e semplice: e sufficiente verificare che il mittente sia presente nel vettore degli amici. Invece, il filtraggio basato sul contenuto e piu complesso. Implementare 1 [l v c] = estrai_caratteristiche(testo) l e la lunghezza del messaggio, esclusi gli spazi v e il numero di vocali c e il numero di consonanti 1 [Mm, Dm] = valore_atteso(messaggi) Mm e un vettore riga di 3 colonne, con il valor medio dei tre valori [l v c] calcolati su tutti i messaggi Dm e un vettore riga di 3 colonne, con la deviazione standard dei tre valori [l v c] calcolati su tutti i messaggi Facoltativamente implementare anche 1 buono = controlla_contenuto(messaggio, messaggi) la quale ritornera un valore logical vero solo se il messaggio ha le caratteristiche [l v c] che soddisfano tutte le tre seguenti condizioni: medio(l) - sqrt() * std(l) <= l <= medio(l) + sqrt() * std(l) A.A.014 015 Informatica B (081369) - Politecnico di Milano Pag. 4

medio(v) - sqrt() * std(v) <= v <= medio(v) + sqrt() * std(v) medio(c) - sqrt() * std(c) <= c <= medio(c) + sqrt() * std(c) Supporre che le strutture dati amici e messaggi sono già disponibili in un file facebook.mat, vanno caricate all inizio dello script. A.A.014 015 Informatica B (081369) - Politecnico di Milano Pag. 5