Informatica B - A.A. 2018/2019

Documenti analoghi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Lab 4 Info B. Luca M. Cassano SadeghM. Astaneh

Prof. Marco Masseroli

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

Rappresentazione degli algoritmi

Lab 04 Programmazione Strutturata"

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Esercizi 2. Marco Anisetti

3+4 2 (3+1) 4. Variabili a = 3 b = 4 c = a + b who, whos MATrixLABoratory Un numero è una matrice 1 1.

Vettori e Matrici. Corso di Calcolo Numerico. 24 Aprile 2018

Lab 5 Info B. Marco D. Santambrogio Riccardo Cattaneo Ver. aggiornata al 1 Dicembre 2014

Lab 5 Info B. Marco D. Santambrogio Matteo Ferroni Ver. aggiornata al 15 Dicembre 2015

Strutture di controllo condizionali in Matlab

Parte 1: tipi primitivi e istruzioni C

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

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

Programmare con MatLab IV

A.A. 2018/2019. Esercitazione 3 [Per Casa] Strutturazione del Codice Sorgente per la Risoluzione di Problemi mediante MATLAB

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Laboratorio di Programmazione Laurea in Bioinformatica

MATLAB Alcune funzioni utili: fprintf, length, size

12 Function Handles e Ricorsione in MATLAB

Corso di Fondamenti di Informatica

Informatica B

Fondamenti di Informatica

Introduzione al MATLAB c Parte 3 Script e function

Esercitazioni - Informatica A

Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 5. !esercizi tratti da temi d esame

Informatica B

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

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

% Dato un vettore in ingresso ed un numero a (entrambi float) % controllare quante occorrenze del numero sono presenti % nel vettore.

Esercizio 9.1. Esercizio 9.2. Esercizio 9.3. Chiedere all utente due parole e stampare a video se una è anagramma dell altra. Esercizio 9.

Laboratorio di Informatica I

Esercitazioni con GNU Octave

Aritmetica in Floating Point

Foglio Elettronico Lezione 1

Programmare con MATLAB c Parte 5 Cicli: for e while

Informatica B

A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica

Laboratorio di Programmazione Laurea in Bioinformatica

Esercizio 9.1. F (0) = 0 F (1) = 1 F (n) = F (n 1) + F (n 2), n > 1. Esercizio 9.2. Esercizio 9.3

Fondamenti di Informatica

Risoluzione di un problema

8 Introduzione MATLAB

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

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

8 Introduzione MATLAB

Fondamenti di Informatica

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Esercizio 9.1. F (0) = 0 F (1) = 1 F (n) = F (n 1) + F (n 2), n > 1. Esercizio 9.2. Esercizio 9.3

Strutture di controllo

ESERCIZIO 1. Informatica B - Esercitazione 12

% Scrivere un programma che inizializza un vettore monodimensionale di interi a = [ ]

Ambienti di Programmazione per il Software di Base

Strutture di controllo in C++

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

PROGRAMMAZIONE: Le strutture di controllo

MATRICI e DETERMINANTI. Prof.ssa Maddalena Dominijanni

Fondamenti di Informatica T-1 Modulo 2

Esercitazione 00 Introduzione a Matlab

Laboratorio di Python

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Laboratorio di Matematica e Informatica 1

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

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

Introduzione alla programmazione Esercizi risolti

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Strutture di controllo

Informatica (A-K) 5. Algoritmi e pseudocodifica

Capitolo 16 Iterazione

Operatori relazionali

Esercitazione 1 Conversione di base

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Analisi Numerica I Introduzione a Matlab

Fondamenti di Informatica

Cicli. S i a i = a 1 + a 2 + a a n

Esercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli

Fondamenti di Informatica T-1 Modulo 2

Matematica con Python

Esercizi di Algoritmi e Strutture Dati

Estrazione di dati da una matrice

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

fprintf('avete speso %d (media %f)', somma, media);

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Esercitazione di Reti degli elaboratori

Fondamenti di Informatica

1. Date due matrici S e T di uguali dimensioni, definiamo la somma delle differenze assolute: numrighe. numcol SAD=5&

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Fondamenti di Informatica, A.A

Principi di Programmazione Prova del 10/6/2008 (ore 10.30)

Esercizi Programmazione I

Transcript:

Politecnico di Milano Informatica B - A.A. 2018/2019 Laboratorio 4 26/11/2018 Andrea Tirinzoni ( andrea.tirinzoni@polimi.it ) Pietro Fezzardi ( pietro.fezzardi@polimi.it ) 1. Introduzione 1.1 - Semplici calcoli Si scriva un programma che pra in input una temperatura in gradi Fahrenheit e la converta in gradi Celsius. Formula: Fahrenheit = Celsius * 9/5 + 32 F = input('inserire una temperatura in Fahrenheit: '); C = (F - 32) * (5.0/9.0) 1.2 - Acquisizione da tastiera Si scriva un programma che pra in input una sequenza di numeri, al piu 10, fino a che non viene inserito un valore negativo. a = 0; while (input('dammi un numero, negativo per terminare: ') > 0) a = a + 1; if a >= 10 break; 1.3 - Lettura e moltiplicazione di array Si scriva un programma che pra in input due array, x e y, e stampi il loro prodotto scalare (x*y) e l array risultante dalla loro moltiplicazione elemento per elemento. Suggerimento. A differenza del C, in MATLAB e possibile acquisire direttamente array utilizzando la funzione input().

x = input('dammi un array: '); y = input('dammi un array (della stessa dimensione): '); % Usiamo la funzione disp per stampare i risultati disp(['prodotto scalare: ' num2str(x*y')]); disp(['prodotto elemento per elemento: ' mat2str(x.*y)]); 2. Strutture di Controllo & Array 2.1 - Conteggio negli array Si scriva un programma che pra in input un array e un numero e conti il numero di elementi dell array maggiori di tale valore. Bonus: Si risolva l esercizio senza utilizzare cicli o istruzioni condizionali. Suggerimento. MATLAB e diverso dal C: non considerando la fase di acquisizione, e possibile risolvere l esercizio in una riga di codice senza cicli e condizionali (si cerchino le funzioni opportune...) a = input('inserire un vettore: '); b = input('inserire un numero: '); % Il risultato di a>b e un vettore logico che ad ogni posizione contiene: % - 1 se a(i) > b % - 0 altrimenti % La somma dei suoi elementi e quindi il numero di elementi in cui a(i)>b risultato = sum(a > b) 2.2 - Conversione da base 2 a base 10 Si scriva un programma che, dato un array di cifre binarie rappresentante un numero in base 2, ne stampi il corrispondente valore in base 10. Bonus: si risolva lo stesso esercizio senza utilizzare cicli. (con cicli) risultato = 0; for i = 1:length(a) risultato = risultato + a(i)*(2^(length(a) - i)); disp([mat2str(a) ' in base 10: ' num2str(risultato)]);

(senza cicli) % Supponiamo che contenga N elementi. L idea e la seguente: % - Creiamo un vettore contente N volte 2: [2 2 2 2] % - Eleviamo elemento per elemento per il vettore [N-1 N-2 1 0] % - Otteniamo quindi il vettore: [2^(N-1) 2^(N-2) 2^0] % - Facciamo il prodotto scalare per a (ovvero prima moltiplico poi sommo) risultato = (2*ones(1,length(a))).^((length(a)-1):-1:0) * a'; disp([mat2str(a) ' in base 10: ' num2str(risultato)]); 2.3 - Shift a sinistra Si scriva un programma che, dato un array di cifre binarie, effettui lo shift a sinistra fino a quando non si ottiene un 1 nella prima posizione. Ad esempio: [0 0 1 1 0 1 0] [1 1 0 1 0 0 0] % Uso find per trovare gli indici in cui a non e zero indicinonzero = find(a); % Salvo solo il primo indice non zero primoindicenonzero = indicinonzero(1); % Creo un vettore formato dalle due parti di a: % - Gli elementi dal primo indice non zero fino alla fine % - Gli elementi dal primo al primo indice non zero (escluso) risultato = [a(primoindicenonzero:) a(1:primoindicenonzero-1)] 2.4 - Matrici con righe a somma costante Si scriva un programma che pra in input una matrice (di dimensioni non specificate) e controlli se tutte le righe hanno la stessa somma. a = input('inserire una matrice qualunque: '); % Calcolo le somme su riga (ovvero sommo sulla seconda dimensione di a) somme = sum(a, 2); % Sottraggo la massima somma ad ogni elemento di somme % Se ogni elemento dell array risultate e zero, le somme sono uguali if sum(somme - max(somme)) ~= 0 disp('le somme sono diverse');

else disp('le somme sono uguali'); 2.5 - Rilievi altimetrici Si scriva un programma che pra in input una serie di rilievi altimetrici. Ogni rilievo e costituito da tre variabili: altitudine, latitudine e longitudine. Il programma deve poi calcolare l altitudine media di tutti i rilievi che hanno latitudine compresa tra 10 e 80 e longitudine compresa tra 30 e 60. Si supponga, per semplicita, che tutte le variabili siano comprese fra 0 e 100. % Massimo numero di rilievi da leggere N = 5; % Pre-alloco i vettori che conterrano i rilievi alt = zeros(1, N); lat = zeros(1, N); long = zeros(1, N); % Acquisisco i rilievi for i=1:n disp(['rilievo #' num2str(i)]); alt(i) = input('altitudine: '); lat(i) = input('latitudine: '); long(i) = input('longitudine: '); disp('---'); % Calcolo il risultato risultato = mean(alt(lat>=10 & lat<=80 & long>=30 & long<=60)) 2.6 - Approssimare il numero di Nepero Si scriva un programma che calcoli un approssimazione del numero di Nepero (e) sfruttando l espansione in serie di Taylor dell esponenziale: Il programma pre in input un valore N >0 e approssima la serie di Taylor (per x=1) sommando solo i primi N termini. Si stampi poi l errore assoluto commesso nell approssimazione.

Suggerimento. Non e necessario scrivere il codice per calcolare il fattoriale: MATLAB dispone di una funzione factorial. N = input('inserire N: '); % Calcolo la somma del reciproco dei fattoriali e = sum(1./ factorial(0:n)) % Calcolo l errore assoluto rispetto al vero valore di e (che ottengo con exp(1)) errore = abs(e - exp(1)) 2.7 - Sottomatrici Si scriva un programma che, date due matrici A e B, controlli se B e una sottomatrice di A. Suggerimento. E possibile controllare se due matrici A e B sono uguali utilizzando la funzione isequal(a,b). A = input('inserisci una matrice: '); B = input('inserisci una seconda matrice: '); % Flag sottomatrice = false; % Calcolo le dimensioni di A e B [N_A,M_A] = size(a); [N_B,M_B] = size(b); % Provo tutte le possibili posizioni in cui B puo' essere sottomatrice di A for i=1:n_a-n_b+1 for j=1:m_a-m_b+1 % Controllo se B e' sottomatrice parto da (i,j) if isequal(a(i:i+n_b-1, j:j+m_b-1), B) sottomatrice = true; break; if sottomatrice disp('b è sottomatrice di A'); else disp('b non è sottomatrice di A');