DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab 7 – Info B
Marco D. Santambrogio – [email protected]
Riccardo Cattaneo – [email protected]
Ver. aggiornata al 20 Gennaio 2015
Esame 5 Feb 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Confermato alle 12.15
2
Esame 5 Feb 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Confermato alle 12.15
• Ricordo
 Se 1mo + 2ndo >= 18 --> SUPERATO
3
Esame 5 Feb 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Confermato alle 12.15
• Ricordo
 Se 1mo + 2ndo >= 18 --> SUPERATO
 8+8 = 16 << 18 --> NON SUPERATO
4
Esame 5 Feb 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Confermato alle 12.15
• Ricordo
 Se 1mo + 2ndo >= 18 --> SUPERATO
 8+8 = 16 << 18 --> NON SUPERATO
 Se superato, DOVETE iscrivervi ad un
appello per registrare il voto
5
Esame 5 Feb 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Confermato alle 12.15
• Ricordo
 Se 1mo + 2ndo >= 18 --> SUPERATO
 8+8 = 16 << 18 --> NON SUPERATO
 Se superato, DOVETE iscrivervi ad un
appello per registrare il voto
 L’appello DEVE essere di Info B!!!!
6
Lab 7: Agenda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Warm Up (20’)
• Qualche cosa un po’ più divertente (45’)
• Altri exe (75’)
7
Lab 7: Ora..
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Warm Up (20’)
 shiftSinistro
• Qualche cosa un po’ più divertente (45’)
• Altri exe (75’)
8
shiftSinistro: problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dato un vettore riga v rappresentante
un numero in codifica binaria
 Si effettui lo shift a sinistra (cioè si spostino
a sinistra i singoli bit) fino a che non si
incontra il primo 1
Es: v=[0 0 1 0 1 0 1 1] -> [1 0 1 0 1 1 0 0]
9
shiftSinistro
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function [ris] = shiftSx(n)
if ~isvector(n) | any (n < 0 | n > 1)
ris = NaN;
elseif n(1) == 1
ris = n;
else
ris = shiftSx([n(2:length(n)) n(1)]);
end
10
Lab 7: Ora..
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Warm Up (20’)
• Qualche cosa un po’ più divertente (45’)
 numeroPrimo
 serie (normale)
• Altri exe.. (75’)
11
numeroPrimo: problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dato un numero intero positivo inserito
dall’utente, dire se tale numero è primo
(stampa a video 1 se primo, 0 altrimenti)
 Un numero è primo se è divisibile solo per
1 e se stesso
 Esempio
• >>> 7 ---> >>>1
• >>> 9 ---> >>>0
12
numeroPrimo iterativa
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function [ris] = numPrimo2(x)
ris=1;
for y=2:sqrt(x)
ris = ris*(~(~rem(x,y)));
end
13
numeroPrimo Ricorsiva
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function [ris] = numPrimo(x,y)
if y>sqrt(x)
ris = 1
else
ris = (~(~rem(x,y)))*numPrimo(x,y+1);
end
14
serie (normale): problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Si consideri la successione definita dalla
seguente relazione:
x(1) = 0
x(2) = 1
x(n) = 2 * x(n-1) + 3 * x(n-2)
Si scriva una funzione succ(n) che calcoli
il valore
n-esimo della successione.
15
serie (normale): soluzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function res = succ(n)
res = [0 1]
if (n>2):
for i = 3:1:n
res = [res 2*res(i-1) + 3*res(i-2)];
end
else if n==2
res = 1
else n ==1
res = 0
16
Lab 7: Ora…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Warm Up (20’)
• Qualche cosa un po’ più divertente (45’)
• Altri exe… (75’)
 serie (ricorsione)
 sottoMatrici
17
serie (ricorsione): problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Si consideri la successione definita dalla
seguente relazione ricorsiva:
x(1) = 0
x(2) = 1
x(n) = 2 * x(n-1) + 3 * x(n-2)
Si scriva una funzione ricorsiva
succRic(n) che calcoli il valore
n-esimo della successione.
18
serie (ricorsione): soluzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function res = succRic(n)
if n==1
% Primo caso base
res = 0;
elseif n==2
% Secondo caso base
res = 1;
else
% Passo ricorsivo
res = 2*succRic(n-1) + 3*succRic(n-2);
end
19
sottoMatrici: problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creare una matrice di dimensione n*n che nel suo centro
contiene un quadrato 2x2 che contenente il valore 1 e,
andando verso l'esterno, i valori 2, 3, .. fino a n/2 nella
cornice più esterna
Es.:
é
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
êë
6
6
6
6
6
6
6
6
6
6
6
6
6
5
5
5
5
5
5
5
5
5
5
6
6
5
4
4
4
4
4
4
4
4
5
6
6
5
4
3
3
3
3
3
3
4
5
6
6
5
4
3
2
2
2
2
3
4
5
6
6
5
4
3
2
1
1
2
3
4
5
6
6
5
4
3
2
1
1
2
3
4
5
6
6
5
4
3
2
2
2
2
3
4
5
6
6
5
4
3
3
3
3
3
3
4
5
6
6
5
4
4
4
4
4
4
4
4
5
6
6
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
6
6
6
ù
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
úû
20
sottoMatrici: soluzione1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function [M] = sottoMatr(n)
if(n == 1)
M = ones(2,2);
else
M = sottoMatr(n-1)
r = ones(1, size(M, 2)) * n
M = [r; M ; r]
c = ones(size(M, 1), 1) * n
M = [c M c]
end
21
sottoMatrici: soluzione2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
function [matrRis]=sottoMatr(n)
if n==1
matrRis=ones(2);
else
matrRis=n*ones(2*n);
matrRis(2:2*n-1,2:2*n-1)=sottoMatr(n-1);
end
22
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Fonti per lo studio
 Introduzione alla programmazione in
MATLAB, A.Campi, E.Di Nitto, D.Loiacono,
A.Morzenti, P.Spoletini, Ed.Esculapio
• Capitolo 2, 4, 5
• Credits:
 Prof. Paolo Garza (per l’esercizio
sottoMatrici)
 Emanuele Panigati
https://sites.google.com/site/engpanigati/
23
Scarica

V1 - PPT