Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 3. programmazione ricorsiva

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 3. programmazione ricorsiva"

Transcript

1 Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti Matlab/Octave - Esercitazione 3 programmazione ricorsiva 1

2 Consigli utili Studiare il materiale didattico di lezione e di esercitazione per essere consapevoli degli strumenti disponibili di Matlab/Octave e di come vanno usati. E fondamentale frequentare i laboratori (per tutta la loro durata) non solo in vista della prova d esame, ma per acquisire la conoscenza che servirà nel futuro lavorativo. Consultare libri e/o appunti durante l esame è permesso ma comporta una perdita di tempo, che può essere evitata preparandosi adeguatamente. Conoscere MOLTO bene la sintassi delle istruzioni del linguaggio Matlab/Octave evita di fare errori e fa risparmiare tempo. Esercitarsi direttamente sul computer agevola la comprensione delle soluzioni. Chi non possiede un PC può utilizzare le aule informatiche ed i PC del Politecnico. Maggiore è il numero di funzioni predefinite di Matlab/Octave che si conosce, più la quantità di codice da scrivere si riduce: Matlab/ Octave mettono a disposizione funzioni per ogni applicazione. Per risolvere gli esercizi bisogna avere chiara in mente la procedura da adottare. La scrittura del codice è una conseguenza. Procedere per tentativi senza la preliminare organizzazione della risoluzione non aiuta, anzi, peggiora le cose. Pensare ai passi della soluzione, scriverli (su carta/ al PC), e poi occuparsi del codice e della sua scrittura Gli esercizi che vengono spiegati ad esercitazione DEVONO essere rifatti in prima persona studiando la soluzione e cercando di rifarli non utilizzando le slides ma unicamente l help di Matlab/Octave. Se qualcosa della soluzione contenuta nelle slides non vi sembra corretta consultate quelle presenti sul sito. Queste vengono periodicamente riviste e corrette. 2

3 Esercizio 1 Scrivere un programma che: dato un numero N calcola la somma dei primi N numeri pari positivi in maniera ricorsiva. La somma dei primi N numeri pari è la: S N = 2*1 + 2*2 + 2* *i + + 2*(N-1) + 2*N. 3

4 Esercizio 1 - Soluzione Analizzando la formula della somma dei primi N numeri pari: SN = 2*1 + 2*2 + 2* *i + + 2*(N-1) + 2*N Notiamo che: se N =1, SN = 2, (CASO BASE) se N >1, SN = 2*N + SN-1 (PASSO INDUTTIVO) (somma dell N-esimo numero pari + la sommatoria dei primi N-1 numeri pari.) Il passo induttivo richiama il valore della somma effettuato al passo precedente e lo incrementa con il nuovo valore: 2*N. Il problemi con struttura di questo tipo sono facilmente risolvibili con una programmazione ricorsiva. La programmazione ricorsiva prevede la creazione, o il semplice utilizzo, di funzioni che richiamano se stesse al loro interno. 4

5 Esercizio 1 - Soluzione La funzione che calcola la somma dei primi N numeri pari, dunque, sarà: function somma = sommapari(n) if (N==1) somma = 2; CASO BASE else somma = 2*N + sommapari(n-1); PASSO INDUTTIVO Lo script principale, analogamente, sarà: N = input('inserire il valore N: '); if (N==1) S = 2; else S = 2*N + sommapari(n-1); disp(['la somma dei primi N numeri pari è: ', num2str(s)]); 5

6 Esercizio 1 - Soluzione Esercizio 1 - Codice completo % % Script principale % N = input('inserire il valore N: '); if (N==1) S = 2; else S = 2*N + sommapari(n-1); disp(['la somma dei primi N numeri pari è: ', num2str(s)]); function somma = sommapari(n) if (N==1) somma = 2; else somma = 2*N + sommapari(n-1); 6

7 Esercizio 2 Si progetti la funzione ricorsiva che svolge il compito seguente: -siano dati due vettori V1 e V2, rispettivamente di dimensioni N1 e N2 (con 1 N2 N1); -la funzione restituisce 1 se tutti gli elementi del vettore V2 si trovano nel vettore V1 nell ordine inverso rispetto a quello in cui essi figurano in V2, ma non necessariamente in posizioni immediatamente consecutive; -se questo non si verifica, la funzione restituisce valore 0. Esempio: V1 = [a c d e b] V2 = [b e a] il programma restituisce 1; V1 = [a c d e b] V2 = [e f a] il programma restituisce 0; 7

8 Esercizio 2 - Soluzione Esempio esito positivo: Esempio esito negativo: V1 = [a c d e b] V2 = [b e a] V1 = [a c d e b] V2 = [e f a] [a c d e b] [b e a] [c d e b] [b e] [d e b] [b e] [e b] [b e] [a c d e b] [e f a] [c d e b] [e f] [d e b] [e f] [e b] [e f] [b] [b] [b] [e f] [] [] [] [e f] 8

9 Esercizio 2 - Soluzione Caso base: (con esito positivo): se il vettore V2 è vuoto, termina con esito positivo 1 (un vettore vuoto, senza elementi, è senz altro contenuto in qualsiasi altro vettore). [] [] (con esito negativo): se il vettore V1 è vuoto (e il vettore V2 non è anch esso vuoto) termina con esito negativo 0 (un vettore non vuoto, che contiene almeno un elemento, non può essere contenuto in un vettore vuoto). [] [e f] Passo induttivo: se l elemento iniziale di V1 è uguale a quello finale di V2 elimina l elemento iniziale di V1 e quello finale di V2. [a c d e b] [b e a] se l elemento iniziale di V1 è diverso da quello finale di V2 (ovvero altrimenti) elimina soltanto l elemento iniziale di V1. [c d e b] [e f] 9

10 Esercizio 2 - Soluzione Chiamata ricorsiva: ricorri sui due vettori V1 e V2 accorciati in uno dei due modi indicati nel passo induttivo. Condizione di terminazione: nel passo induttivo almeno uno dei due vettori V1 o V2 viene sempre accorciato (se non tutti e due) e quindi dopo un numero finito di passi almeno uno dei due vettori deve essere vuoto; l algoritmo termina sulla base (positiva o negativa) quando almeno uno dei due vettori è vuoto; la terminazione della ricorsione è dunque sempre garantita. 10

11 Esercizio 2 - Soluzione function r = contieneinverso(v1,v2) if (isempty(v2)) r = 1; caso base positivo else if (isempty(v1)) r = 0; caso base negativo else if (v1(1) == v2()) r = contieneinverso(v1(2:),v2(1:-1)); else r = contieneinverso(v1(2:),v2(1:)); passo induttivo positivo passo induttivo negativo 11

12 Esercizio 2 - Soluzione Script principale: V1 = input('inserire il valore vettore V1: '); V2 = input('inserire il valore vettore V2: '); r = contieneinverso(v1,v2); if (r) disp(['tutti gli elementi di V2 sono contenuti in ordine inverso in V2']); else disp(['gli elementi di V2 non sono contenuti in ordine inverso in V1']); 12

13 Esercizio 2 - Soluzione Esercizio 2 - Codice completo % % Script principale % V1 = input('inserire il valore vettore V1: '); V2 = input('inserire il valore vettore V2: '); r = contieneinverso(v1,v2); if (r) disp(['tutti gli elementi di V2 sono contenuti in ordine inverso in V2']); else disp(['gli elementi di V2 non sono contenuti in ordine inverso in V1']); function r = contieneinverso(v1,v2) if (isempty(v2)) r = 1; else if (isempty(v1)) r = 0; else if (v1(1) == v2()) r = contieneinverso(v1(2:),v2(1:-1)); else r = contieneinverso(v1(2:),v2(1:)); 13

14 Esercizio 3 Scrivere un programma che stampi a video tutte le possibili N! permutazioni degli elementi di un vettore di N interi. >> permuta([1 2 3]) >>

15 Esercizio 3 - Soluzione Il problema proposto si presta in modo naturale ad una formulazione ricorsiva. Il vettore è lungo N e inizialmente dobbiamo costruire le permutazioni di N elementi. Per generare tutte le possibili permutazioni di N elementi: 1.si tiene fisso un elemento del vettore (vedremo che per la scrittura del codice sarà più comodo mantenere l ultimo) e si calcolano le permutazioni dei restanti N-1 elementi. V = V1 = P = vettore d ingresso elemento fisso permutazioni dei restanti N-1 elementi 2.si scambia l ultimo degli N elementi da permutare con il penultimo e si ripete il passo 1 V1 = P =

16 Esercizio 3 - Soluzione 3.Scambiare il l ultimo degli N elementi elemento con il terzultimo e si ripete il passo 1 V1 = P = Se il vettore considerato non contiene elementi numerici, il calcolo delle loro permutazioni può essere ricondotto al caso visto precedentemente considerando le permutazioni dei loro indici. V = a b c P = V1(P) = c a b V1 = c b a b a c b c a a c b a b c 16

17 Esercizio 3 - Soluzione V = a b c Definisco la funzione permuta che sarà chiamata ricorsivamente. function P = permuta(v) n = length(v); % ottengo la lunghezza del vettore in input if n <= 1 % CASO BASE: se il vettore è vuoto o contiene un solo elemento, restituisco P = V; % in uscita il vettore stesso. return % ed esco dalla funzione q = permuta(1:n-1); % PASSO INDUTTIVO: chiamata ricorsiva della funzione m = size(q,1); P = zeros(n*m,n); % inizializzazione della matrice contenente le permutazioni % STEP 1 P(1:m,:) = [n * ones(m,1) q]; % n * ones(m,1) il primo elemento delle prime m righe di P è l ultimo % indice di V (ovvero n) % [n * ones(m,1) q] affianco all ultimo indice le permutazioni dei restanti n-1 elementi (contenute in q) 17

18 Esercizio 3 - Soluzione Definisco la funzione permuta che sarà chiamata ricorsivamente. % STEP 2-3 for i = n-1:-1:1 % procedo a ritroso tra gli indici di V t = q; t(t == i) = n; P((n-i)*m+1:(n-i+1)*m,:) = [i*ones(m,1) t]; i = 2 i = 1 q = 3 1 P = q = 3 1 P = t = t =

19 Esercizio 3 - Soluzione Sostituisco gli elementi di V all interno di P in posizione degli indici corrispondenti. P = V(P); V = a b c P = V1(P) = c a b c b a b a c b c a a c b a b c 19

20 Esercizio 3 - Soluzione Esercizio 3 - Codice completo % % Script principale % V = ['a' 'b' 'c' 'd' 'e']; P = permuta(v) function P = permuta(v) n = length(v); if n <= 1 P = V; return q = permuta(1:n-1); m = size(q,1); P = zeros(n*m,n); P(1:m,:) = [n * ones(m,1) q]; for i = n-1:-1:1 t = q; t(t == i) = n; P((n-i)*m+1:(n-i+1)*m,:) = [i*ones(m,1) t]; P = V(P); 20

21 Esercizio 4 Scrivere un programma che legga le prime N parole presenti in file di testo e controlli se le parole lette sono palindrome o meno. Lo script dovrà: -leggere una singola parola dal file, -controllare se è palindroma, -scrivere un file di testo che contenga solo le parole palindrome e le righe in cui queste si trovano nel file d origine. 21

22 Esercizio 4 - Soluzione Per capire se una parola è palidroma si procede ricorsivamente come segue: Caso base: (con esito positivo): se il vettore che contiene la parola è vuoto o è formato da un solo carattere, il controllo termina con esito positivo; (con esito negativo): se la prima e l ultima lettera del vettore sono diverse tra loro, termina con esito negativo. Passo induttivo: controllo se le restanti lettere del vettore (esclusa la prima l ultima) formano a loro volta una parola palindroma. 22

23 Esercizio 4 - Soluzione Analizziamo la funzione che controlla se una parola è palindroma o meno: function esito = palindroma_check(parola) caso base con esito positivo if (isempty(parola) length(parola)==1) esito = 1; elseif (parola(1)==parola()) esito = palindroma_check(parola(2:-1)); else esito = 0; caso base con esito negativo passo induttivo isempty(v) restituisce 1 se V è un vettore vuoto, 0 altrimenti. 23

24 Esercizio 4 - Soluzione Analizziamo ora lo script principale. Definisco il numero di parole da controllare (lo si può anche chiedere in input) e: apro il file di origine in lettura apro il file di destinazione in scrittura N = 1000; fid_in = fopen('dizionario.txt', 'r'); fid_out = fopen('solo_palindrome.txt', 'wt') Successivamente dovrò leggere ciclicamente una parola dal file d origine dizionario.txt, controllare se è palindroma o meno e scriverla nel file di destinazione solo_palindrome.txt in caso di esito positivo. 24

25 Esercizio 4 - Soluzione Successivamente dovrò leggere ciclicamente una parola dal file d origine dizionario.txt, controllare se è palindroma o meno e scriverla nel file di destinazione solo_palindrome.txt in caso di esito positivo. for ii = 1:N A = textscan(fid_in, '%s', 1); parola = char(a{1, 1}) esito = palindroma_check(parola); if (esito) fprintf(fid_out, '%s\t%i\n', parola, ii); textscan(fid, format, N) legge i dati dal file fid applicando il convertitore di formato format (%s, %c, %d, etc...) N volte. Nel nostro caso, volo leggere una sola parola, quindi una sola stringa, N=1. 25

26 Esercizio 4 - Soluzione Chiudo i file aperti e (facoltativo) visualizzo il file di destinazione. fclose(fid_in); fclose(fid_out); open solo_palindrome.txt 26

27 Esercizio 4 - Soluzione Esercizio 4 - Codice completo % % Script principale % N = 1000; fid_in = fopen('dizionario.txt', 'r'); fid_out = fopen('solo_palindrome.txt', 'wt'); for ii = 1:N A = textscan(fid_in, '%s', 1); parola = char(a{1, 1}); esito = palindroma_check(parola); if (esito) fprintf(fid_out, '%s\t%i\n', parola, ii); fclose(fid_in); fclose(fid_out); function esito = palindroma_check(parola) if (isempty(parola) length(parola)==1) esito = 1; elseif (parola(1)==parola()) esito = palindroma_check(parola(2:-1)); else esito = 0; open solo_palindrome.txt 27

28 Esercizio 5 Problema della Torre di Hanoi. Si consideri una tavoletta con tre pioli ed un certo numero di dischetti di diametro diverso infilati sullo stesso piolo in ordine di diametro decrescente, col dischetto più piccolo posto in cima. L obiettivo del gioco è ricomporre la stessa configurazione di dischetti su di un piolo diverso, spostando un disco alla volta da un piolo all altro, con la restrizione che un dischetto non può mai essere appoggiato su di un altro di diametro inferiore. 28

29 Esercizio 5 - Soluzione Supponiamo di voler spostare la pila di tre dischi dal piolo 1 al piolo 3. Per farlo, occorre seguire i passaggi mostrati in figura. Per spostare i dischetti dal piolo 1 al piolo 3, si usa il piolo 2 come supporto intermedio. - la pila con i due dischetti più piccoli è stata spostata dal piolo 1 al piolo 2 (passaggi 1-3); - si è spostato il piolo più grande dal piolo 1 al piolo 3 (passaggio 4); - la pila formata dai due dischetti più piccoli è stata nuovamente spostata dal piolo 2 al piolo 3 (passaggio 5-7). 29

30 Esercizio 5 - Soluzione Formalizzando i passaggi possiamo dire che per spostare una pila di k dischetti da un piolo origine ad uno destinazione, si usa un terzo piolo come supporto intermedio. spostare k dischetti da origine a destinazione: spostare k-1 elementi da origine a supporto; spostare il disco più grande da origine a destinazione; spostare k-1 elementi da supporto a destinazione Chiamiamo l insieme dei tre passaggi: hanoi(k, origine, destinazione, supporto) Lo spostamento di k-1 elementi non è immediato ma prevede dei sottopassaggi. Questo accade se k-1 > 1. Se, invece la pila di dischi da spostare è formata da un solo disco (k-1 == 1), lo spostamento è diretto e non prevede sottopassaggi. 30

31 Esercizio 5 - Soluzione L elenco di spostamenti precedenti si espande in: spostare k dischetti da origine a destinazione: spostare k-1 elementi da origine a supporto; spostare k-2 elementi da origine a supporto; spostare il disco più grande da origine a destinazione; spostare k-2 elementi da supporto a destinazione spostare il disco più grande da origine a destinazione; spostare k-1 elementi da supporto a destinazione spostare k-2 elementi da origine a supporto; spostare il disco più grande da origine a destinazione; spostare k-2 elementi da supporto a destinazione hanoi(k-1, origine,... supporto, destinazione) hanoi(k-1, supporto,... destinazione, origine) Si noti che i passaggi intermedi aggiuntivi (in verde) possono essere ricondotti alle tre operazioni base inverto: nel primo caso destinazione con supporto; nel secondo caso origine con supporto. La serie di passaggi può essere ulteriormente espansa finché i passaggi intermedi prevedono lo spostamento di un solo disco. } } 31

32 Esercizio 5 - Soluzione Seguo questa logica, il tutto può essere riassunto nella forma: hanoi(k, origine, destinazione, supporto) hanoi(k-1, origine, supporto, destinazione) spostare il disco più grande da origine a destinazione; hanoi(k-1, supporto, destinazione, origine) La risoluzione della torre di Hanoi sarebbe estremamente complessa se non si potesse utilizzare la ricorsione. Grazie alla possibilità di richiamare una funzione all interno della funzione stessa, la soluzione diventa estremamente semplice. function [] = hanoi(k, origine, destinazione, supporto) if (k<=0) return; else if (k > 1) hanoi(k-1, origine, supporto, destinazione); fprintf('sposta un disco dal piolo %d al piolo %d\n',... origine, destinazione); if (k > 1) hanoi(k-1, supporto, destinazione, origine); 32

Matlab/Octave - Esercitazione 11

Matlab/Octave - Esercitazione 11 Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti Matlab/Octave - Esercitazione 11 programmazione ricorsiva Politecnico di Milano - DEI Informatica B - Esercitazione

Dettagli

Come usare la ricorsione

Come usare la ricorsione Laboratorio di Algoritmi e Strutture Dati Aniello Murano www.dia.unisa.it/dottorandi/murano 1 Come usare la ricorsione 2 1 Risolvere un problema per ricorsione 1. Pensa ad un problema piu piccolo (di taglia

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

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

Corso 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

Dettagli

Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona

Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona Lezione 8 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Programmazione ricorsiva Fattoriale Somma di n numeri Torre di Hanoi Array

Dettagli

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

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab Metodi di Analisi dei Dati Sperimentali AA /2010 Pier Luca Maffettone Elementi di Matlab Sommario Introduzione Variabili Manipolazione di elementi Creazione di vettori/matrici Operazioni elementari Funzioni

Dettagli

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

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 24 Gennaio 2011 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 24 Gennaio 2011 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3

Dettagli

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

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 18 luglio 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi

Dettagli

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

CORSO DI LAUREA IN INGEGNERIA ELETTRICA CORSO DI LAUREA IN INGEGNERIA ELETTRICA Informatica B anno accademico 2013-2014 Prof. Danilo ARDAGNA Esercitazione 05.06.2014 Esercizio 1. (Agenzia di viaggi - accesso ai file) Un'agenzia di viaggi possiede

Dettagli

Mini-Corso di Informatica

Mini-Corso di Informatica Mini-Corso di Informatica CALCOLI DI PROCESSO DELL INGEGNERIA CHIMICA Ing. Sara Brambilla Tel. 3299 sara.brambilla@polimi.it Note sulle esercitazioni Durante le esercitazioni impareremo a implementare

Dettagli

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Dettagli

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di

Dettagli

Gestione della memoria

Gestione della memoria Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

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

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 19 Febbraio 2015 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi e

Dettagli

Laboratorio di Calcolo Numerico

Laboratorio 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

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Dottoressa Sara Zuppiroli - sara.zuppiroli@unibo.it L'importanza di capire Perché non dobbiamo dichiarare

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Prof. Arcangelo Castiglione A.A. 2016/17 OUTLINE Caratteristiche dei File Apertura/Chiusura dei File Scrittura/Lettura dei File Importare Dati da File I File 1/2 I file possono

Dettagli

Programmazione II Università di Roma "La Sapienza" Appunti a cura della Prof.ssa FACHINI. Ricorsione per il "problem solving" Il problema del cambio.

Programmazione II Università di Roma La Sapienza Appunti a cura della Prof.ssa FACHINI. Ricorsione per il problem solving Il problema del cambio. Programmazione II Università di Roma "La Sapienza" Appunti a cura della Prof.ssa FACHINI Ricorsione per il "problem solving" Il problema del cambio. Consideriamo il problema di determinare in quanti modi

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da

Dettagli

Universita degli Studi di Siena

Universita degli Studi di Siena Universita degli Studi di Siena Facolta di Ingegneria Dispense del corso di Sistemi di Supporto alle Decisioni I L algoritmo per la risoluzione di problemi di programmazione dinamica Chiara Mocenni Corso

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a gennaio 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a gennaio 2012 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2011-12 16 gennaio 2012 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica rogrammazione in MATLAB Gestione File Grafici E s e rc i t a z i o n e e r C a s a 2 r o f. R a f f a e l e i z zo l a n t e A. A. 2 0 1 6 / 1 7 M unteggio 5 3 2 4 7 3 3 2 1 9

Dettagli

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

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 27 giugno 2016 COGNOME E NOME MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi e deve essere debitamente

Dettagli

RIGA COLONNA MATRICOLA

RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 17 settembre 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi,

Dettagli

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

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 17 Febbraio 2009 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 17 Febbraio 2009 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 5 esercizi,

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti 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

Dettagli

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

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi,

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che

Dettagli

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente: Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione

Dettagli

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 Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell

Dettagli

3 Costrutti while, for e switch

3 Costrutti while, for e switch Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione dei costrutti while, for e switch. I costrutti per costruire cicli in C sono il while, la variante

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2011-12 17 settembre 2012 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag. I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Problem Solving Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/30 Tipi di Problemi Primitivi Risolubili

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De

Dettagli

Note per la Lezione 6 Ugo Vaccaro

Note per la Lezione 6 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,

Dettagli

Laboratorio di Python

Laboratorio di Python Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di

Dettagli

Matlab. Istruzioni condizionali, cicli for e cicli while.

Matlab. Istruzioni condizionali, cicli for e cicli while. Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il

Dettagli

Capitolo 19. Ricorsione

Capitolo 19. Ricorsione Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!

Dettagli

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

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello dell 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello dell 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi,

Dettagli

Laboratorio di Matlab

Laboratorio di Matlab Laboratorio di Matlab Alessandro Formaglio Dipartimento di Ingegneria dell Informazione, Università di Siena alex@dii.unisi.it http://www.dii.unisi.it/ control/matlab/labmatlab.html 9 Luglio 2009 DII -

Dettagli

Ricorsione. La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa

Ricorsione. La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa È basata sul principio di induzione matematica: se una proprietà P vale per n=n 0 e si può

Dettagli

8 Introduzione MATLAB

8 Introduzione MATLAB 8.1 Basi Per pulire il workspace (eliminare tutte le variabili esistenti): 1 clear Per pulire la finestra dei comandi (command window): 1 clc In MATLAB non è necessario dichiarare le variabili ed esse

Dettagli

CORSO DI LABORATORIO DI INFORMATICA

CORSO DI LABORATORIO DI INFORMATICA CORSO DI LABORATORIO DI INFORMATICA Corso di Laurea Triennale in Ingegneria Elettrica a.a. 2015/2016 Docente: Ing. Domenico Amalfitano Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Introduzione al Corso Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Informazioni sul Corso 1/3 6 CFU 60 ore di lezione,

Dettagli

Programmazione Ricorsione

Programmazione Ricorsione Programmazione Ricorsione Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Ricorsione Cos è la ricorsione? In matematica... n! = { n (n 1)! se n > 0 1 altrimenti N = {0} {i + 1 : i N} Principio

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione

Dettagli

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

MATLAB c. Lucia Gastaldi Dipartimento di Matematica  Lezione 4 (15 ottobre 2003) MATLAB c M-file. Lucia Gastaldi Dipartimento di Matematica http://dm.ing.unibs.it/gastaldi/ Lezione 4 (15 ottobre 2003) Esercizio Problema 3: la successione di funzioni f n (x) = (x 2 x) n per 0 x 1 è

Dettagli

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

Introduzione 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,

Dettagli

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

Laboratorio di Sperimentazioni di Fisica I MOD A. 14 ottobre 2009 Laboratorio di Sperimentazioni di Fisica I MOD A 14 ottobre 2009 m files Gli m files sono degli script, ossia dei programmi che si eseguono invocandone il nome dalla command window. Non ricevono variabili

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica PROGRAMMAZIONE DINAMICA Quando si usa P.D.? La programmazione dinamica si usa nei casi in cui esista una definizione ricorsiva del problema, ma la trasformazione diretta di tale definizione in un algoritmo

Dettagli

Introduzione alla programmazione

Introduzione 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

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 8 luglio 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

Codice Gray. (versione Marzo 2007)

Codice Gray. (versione Marzo 2007) Codice Gray (versione Marzo 27) Data una formula booleana con n variabili, per costruire una tavola di verità per questa formula è necessario generare tutte le combinazioni di valori per le n variabili.

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 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

Dettagli

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

CORSO DI LAUREA IN INGEGNERIA ELETTRICA CORSO DI LAUREA IN INGEGNERIA ELETTRICA Informatica B anno accademico 2012-2013 Prof. Danilo ARDAGNA Esercitazione 16.05.2013 Esercizio 1: Cinematica Due treni partono da due stazioni adiacenti, che distano

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Strutture Selettive, Iterative, Gestione File e Grafici in MATLAB: Esercizi (Carte) rof. Arcangelo Castiglione A.A. 2016/17 unteggio 5 3 2 4 7 3 3 2 1 9 NOTA: Negli esercizi possono

Dettagli

Appunti sui Codici di Reed Muller. Giovanni Barbarino

Appunti sui Codici di Reed Muller. Giovanni Barbarino Appunti sui Codici di Reed Muller Giovanni Barbarino Capitolo 1 Codici di Reed-Muller I codici di Reed-Muller sono codici lineari su F q legati alle valutazioni dei polinomi sullo spazio affine. Per semplicità

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Introduzione al Corso Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18 Informazioni sul Corso 1/3 8 CFU 80 ore di lezione,

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli

Dettagli

Appunti lezione Capitolo 14 Greedy

Appunti lezione Capitolo 14 Greedy Appunti lezione Capitolo 14 Greedy Alberto Montresor 21 Novembre, 2016 1 Domanda: dimostrare che S[i, j] = con i j Nel problema della selezione delle attività, il sottoinsieme S[i, j] è definito nel modo

Dettagli

Le Funzioni e la Ricorsione

Le Funzioni e la Ricorsione Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html

Dettagli

Funzioni e Ricorsione

Funzioni e Ricorsione Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Nel codice di una funzione ricorsiva compare una (o più di una) chiamata alla funzione stessa

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

Il Piacere della Logica. La Torre di Hanoi. Il Piacere della Logica. Prof. Ivano Coccorullo

Il Piacere della Logica. La Torre di Hanoi. Il Piacere della Logica. Prof. Ivano Coccorullo La Torre di Hanoi Le Torri di Hanoi Il problema delle Torri di Hanoi deriva da una antica leggenda indiana che recita così: «nel grande tempio di Brahma a Benares, su di un piatto di ottone, sotto la cupola

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi Fondamenti di Informatica T-1 modulo 2 Laboratorio 10: preparazione alla prova d esame 1 Esercizio 1 - Gestione degli impegni Gli impegni giornalieri dei dipendenti di un azienda devono essere aggiornati

Dettagli

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

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 30 giugno 04 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi e deve

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

Il problema delle azioni

Il problema delle azioni Il problema delle azioni Per studiare l andamento del mercato azionario bisogna seguire i prezzi delle azioni in un lasso di tempo abbastanza lungo, diciamo n giorni. Se si dispone dei prezzi di un azione

Dettagli

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

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 1 settembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi e

Dettagli

Corso di Fondamenti di Informatica. La ricorsione

Corso di Fondamenti di Informatica. La ricorsione Corso di Fondamenti di Informatica La ricorsione La ricorsione Si dice che un oggetto (una struttura dati, una funzione matematica, un concetto ) è ricorsivo se è possibile darne una definizione in termini

Dettagli

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: Esercizi su Python 14 maggio 2012 1. Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: 1. conti quanti elementi pari sono presenti nella lista; 2. conti quanti quadrati

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Strutture Selettive, Iterative, Gestione File e Grafici in MATLAB: Esercizi (Magazzini) rof. Arcangelo Castiglione A.A. 2016/17 antalone (ind. 1) Camicia (ind.

Dettagli

Progetto DSA: Guida al metodo di studio

Progetto DSA: Guida al metodo di studio Progetto DSA: Guida al metodo di studio CESPD - Centro Studi e Ricerche per la Disabilità Scuola di Psicologia Dipartimento di Scienze della Formazione e Psicologia Scuola di Ingegneria Dipartimento di

Dettagli

Ricerca Automatica. Esercitazione 3. Intelligenza Artificiale Daniele Nardi, 2004 Esercitazione 3 0

Ricerca Automatica. Esercitazione 3. Intelligenza Artificiale Daniele Nardi, 2004 Esercitazione 3 0 Ricerca Automatica Esercitazione 3 Intelligenza Artificiale Daniele Nardi, 2004 Esercitazione 3 0 Ascensore In un grattacielo ci sono 3 coppie formate da marito e moglie. Il cancello delle scale viene

Dettagli

Tecniche Algoritmiche/1 Divide et Impera

Tecniche Algoritmiche/1 Divide et Impera Tecniche Algoritmiche/1 Divide et Impera Ivan Lanese Dipartimento di Informatica Scienza e Ingegneria Università di Bologna Ivan.lanese@gmail.com http://www.cs.unibo.it/~lanese/ Divide-et-impera 2 Tecniche

Dettagli

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica 15 dicembre 2008 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.

Dettagli

Precorsi di matematica

Precorsi di matematica Precorsi di matematica Francesco Dinuzzo 12 settembre 2005 1 Insiemi Il concetto di base nella matematica moderna è l insieme. Un insieme è una collezione di elementi. Gli elementi di un insieme vengono

Dettagli

(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA (C) ESERCIZI DI COMPRENSIONE

(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA (C) ESERCIZI DI COMPRENSIONE (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: Dato strutturato Rappresentazione logica del vettore Array Componenti Accesso diretto Indice (B) CONOSCENZA E COMPETENZA

Dettagli

Trasformare array paralleli in array di record

Trasformare array paralleli in array di record Trasformare array paralleli in array di record Un array è una struttura di dati omogenea: gli elementi dell array sono tutti dello stesso tipo (che è il tipo dell array). A volte è necessario gestire informazioni

Dettagli

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

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09 Introduzione all ambiente MATLAB Richiami II Programmazione MATLAB MATLAB non è un vero e proprio linguaggio di programmazione, ma permette comunque di realizzare programmi utilizzando le classiche strutture

Dettagli

Informatica B

Informatica B Informatica B 2016-2016 Esercitazione 1 Variabili, Matrici, Vettori, Costrutti Condizionali Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Chi sono - Alessandro Nacci, PhD -

Dettagli

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale Nome Cognome Matricola Firma Traccia 1 Spazio Riservato alla Commissione Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale Appello di Fondamenti di Informatica 12/09/2017 POSSIBILI SOLUZIONI

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - 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 Corso di Laurea

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità

Dettagli

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up Progettazione di Algoritmi: Approccio Top-Down e Bottom Up Ci sono due approcci fondamentali per progettare algoritmi Servono ambedue ad aiutarci ad affrontare il problema Si chiamano "top-down" e "bottom-up"

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Pivoting e stabilità Se la matrice A non appartiene a nessuna delle categorie precedenti può accadere che al k esimo passo risulti a (k) k,k = 0, e quindi il

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli