Lab 6 info b
Download
1 / 24

Lab 6 – Info B - PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on

Lab 6 – Info B. Marco D. Santambrogio – [email protected] Riccardo Cattaneo – [email protected] Ver. aggiornata al 30 Dicembre 2013. Lab 6: Obiettivi. Introduzione a Matlab/Octave Cicli Funzioni. Lab 6: Agenda. Warm Up (30 ’ ) Qualche cosa un po' più divertente (60 ’ )

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Lab 6 – Info B ' - hogan


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Lab 6 info b

Lab 6 – Info B

Marco D. Santambrogio – [email protected]

Riccardo Cattaneo – [email protected]

Ver. aggiornata al 30 Dicembre 2013


Lab 6 obiettivi
Lab 6: Obiettivi

Introduzione a Matlab/Octave

Cicli

Funzioni


Lab 6 agenda
Lab 6: Agenda

  • Warm Up (30’)

  • Qualche cosa un po' più divertente (60’)

  • Altri exe… (90’)


Lab 6 warm up
Lab 6: Warm up

  • Warm Up (30’)

    • Inserisci numeri

    • Temperatura

  • Qualche cosa un po' più divertente (60’)

  • Altri exe… (90’)


Problema inserisci numeri
Problema: Inserisci numeri

  • Acquisiamo numeri da tastiera finché non viene inserito un numero negativo.

    • In ogni caso non accettiamo più di mille numeri


Soluzione inserisci numeri
Soluzione: Inserisci numeri

vector = [ ]; %crea il vettore vuoto

for count = 1:1000 %Raccoglierà al max 1000 valori

value = input('next number ');

if value < 0

break %Se value negativo usciamo dal ciclo

else

vector(count) = value;

end

end

vector %permette di visualizzare il contenuto di vector


Problema temperatura
Problema: Temperatura

  • Scrivere un programma che prende in input la temperatura in gradi Celsius e restituisce in output i gradi Fahrenheit

    • Formula:

      Fahrnait = Celsius * 9/5 + 32


Soluzione temperatura
Soluzione: Temperatura

temp_c = input('Inserire la temperatura in gradi Celsius: ');

temp_f = temp_c * 9/5 + 32;

disp(['La temperatura in gradi Fahrenheit è ', num2str(temp_f)]);


Lab 6 un p o di divertimento
Lab 6: Un po’ di divertimento

  • Warm Up (30’)

  • Qualche cosa un po' più divertente (60’)

    • Maggiore

    • Equazione secondo grado

  • Altri exe… (90’)


Problema maggiore
Problema: Maggiore

  • Scrivere un programma che prenda in input un array e conti tutti i numeri che sono maggiore di un numero n inserito dall’utente


Soluzione maggiore
Soluzione: Maggiore

mag = input('Vuoi contare i numeri maggiori di quanto? ');

disp('Array (ricorda di inserire i numeri tra parentesi quadre):');

inarray = input('');

counter = 0;

for ii=1:length(inarray)

if inarray(ii)>mag

counter = counter+1;

end

end

disp(['I numeri maggiori di ',num2str(mag),' sono ',num2str(counter)]);


Soluzione maggiore in due righe
Soluzione: Maggiore (in due righe)

mag = input('Vuoi contare i numeri maggiori di quanto? ’)

disp('Array (ricorda di inserire i numeri tra parentesi quadre):’)

inarray = input(’’)

magV= inarray(inarray>mag);

counter = size(magV,2);

disp(['I numeri maggiori di ',num2str(mag),' sono ',num2str(counter)]);


Problema equazione secondo grado
Problema: Equazione secondo grado

  • Scrivere una funzione per il calcolo dell'equazione di secondo grado: ax^2 + bx + c.

    • Inseriti a, b e c la funzione deve ritornare il valore di delta, e i valori delle radici reali (se esistono).

    • In caso che delta sia uguale a 0, x1 contiene la soluzione, mentre x2 non è un numero (NaN).


Soluzione equazione secondo grado
Soluzione: Equazione secondo grado

function [delta, x1, x2] = eq2g(a,b,c)

delta = b^2-4*a*c;

if (delta==0)

x1=(-b)/(2*a);

x2=(-b)/(2*a);

else

x1=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);

end


Lab 6 altri exe
Lab 6: Altri exe

  • Warm Up (30’)

  • Qualche cosa un po' più divertente (60’)

  • Altri exe… (90’)

    • Cambio base

    • Scambio elementi

    • Rilievi altimetrici


Problema cambio base
Problema: Cambio base

  • Ricevere un vettore che rappresenti le singole cifre di un numero in base 2 stampare a video il valore in base 10


Cambio base soluzione
Cambio base - Soluzione

function [ris] = cambioBase(n)

% N vettore di 0 e 1

esp=[length(n)-1:-1:0];

Basi=2.^esp;

disp(sum(n.*basi));


Problema scambio elementi
Problema: Scambio elementi

  • Scrivere un programma che dati due array scambi gli elementi di indice dispari

    • usare la funzione mod


Soluzione scambio elementi
Soluzione: Scambio elementi

function [inarray1, inarray2] = swapOdd(inarray1, inarray2)

for ii=1:min(length(inarray1),length(inarray2))

if (mod(ii,2) == 1)

temp=inarray1(ii);

inarray1(ii)=inarray2(ii);

inarray2(ii) = temp;

end

end


Soluzione scambio elementi1
Soluzione: Scambio elementi

disp('Array1 (ricorda di inserire i numeri tra parentesi quadre):');

inarray1 = input('');

disp('Array2 (ricorda di inserire i numeri tra parentesi quadre):');

inarray2 = input('');

[inarray1, inarray2] = swapOdd(inarray1, inarray2);

disp('Ora gli array sono: ');

disp(inarray1);

disp(inarray2);


Esercizio rilievi altimetrici
Esercizio: Rilievi altimetrici

  • Si sviluppi un programma in matlab che acquisisce da tastiera i dati relativi a rilievi altimetrici e stampa a video l’altitudine media di tutti quelli che hanno latitudine compresa tra 10 e 80 e longitudine tra 30 e 60

21


Soluzione 1ma parte rilievi altimetrici
Soluzione (1ma parte): rilievi altimetrici

more = input('vuoi inserire valori altimetrici? (s/n)');

ii=1;

while more=='s'

arch(ii).altitudine = input('altitudine ');

arch(ii).longitudine = input('longitudine ');

arch(ii).latitudine = input('latitudine ');

ii = ii+1;

more = input('vuoi inserire altri valori altimetrici? (s/n)');

end

22


Soluzione 2nda parte rilievi altimetrici
Soluzione (2nda parte): rilievi altimetrici

jj=1;

for ii=1:length(arch)

%attenzione: la condizione deve essere scritta sulla stessa linea…

if arch(ii).latitudine>=10&&arch(ii).latitudine<=80 && arch(ii).longitudine>=30&&arch(ii).longitudine<=60

elemSelez(jj) = arch(ii).altitudine;

jj=jj+1;

end

end

disp(['la media degli elementi selezionati e` ' num2str(mean(elemSelez))]);

23


Fonti per lo studio
Fonti per lo studio

  • Fonti per lo studio

    • Introduzioneallaprogrammazione in MATLAB, A.Campi, E.Di Nitto, D.Loiacono, A.Morzenti, P.Spoletini, Ed.Esculapio

      • Capitoli 2, 3 e 4

  • Credits

    • EmanuelePanigati

      https://sites.google.com/site/engpanigati/


ad