Fondamenti di Informatica, A.A

Documenti analoghi
Fondamenti di Informatica, A.A FILA A

Fondamenti di Informatica, A.A

Fondamenti di Informatica, A.A FILA A

Fondamenti di Informatica, A.A

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

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

Università degli Studi di Ferrara

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

RICONOSCIMENTO DI FORME A.A OBIETTIVI PARTE 1 INTRODUZIONE A MATLAB

Informatica Applicata al Suono Tutorial Matlab

UNIVERSITÀ DEGLI. DI - Dipartimento di Informatica Università degli Studi di Milano

Informatica B - A.A. 2018/2019

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

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

Studio degli algoritmi

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

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

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

CORSO DI LABORATORIO DI INFORMATICA

Introduzione a Matlab

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21

Programmare con MATLAB c Parte 5 Cicli: for e while

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

LABORATORIO DI PROGRAMMAZIONE E CALCOLO Docente E. Carlini A.A. 2012/13 Foglio di esercizi N.8 con la collaborazione di Andrea Pugliese

Operatori relazionali

Introduzione al MATLAB c Parte 2

UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

MATLAB Alcune funzioni utili: fprintf, length, size

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Implementazione di DFA in C

Matlab. Istruzioni condizionali, cicli for e cicli while.

clear clc v=input(['digitare V']); for i=1:length(v); for j=1:length(v); if i==j; m(i,j)=v(i); else; m(i,j)=0; end; end; end; disp(m)

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Comandi di Input/Output in Matlab

Esercitazione 00 Introduzione a Matlab

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Esame di Calcolo Numerico per Informatica A.A. 2010/11: testo soluzioni Proff. S. De Marchi e M. R. Russo 12 luglio 2011

Matlab: Script e Funzioni

Assegnazione di una variabile

Introduzione a Java e all'ambiente di sviluppo

PROGRAMMAZIONE STRUTTURATA

Rappresentazione degli algoritmi

Iterazione determinata e indeterminata

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Rappresentazione degli algoritmi

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Corso di Fondamenti di Informatica

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

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

Esercizi d esame. Elena Tundo

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

Fondamenti di Informatica

Laboratorio di Informatica I

Fondamenti di Informatica

Lezione 22: Funzioni e File Giovedì 18 Novembre 2010

Laboratorio di Calcolo Numerico Laboratorio 11: Metodi diretti per la soluzione di sistemi lineari

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

Fondamenti di Informatica

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

Il costrutto if else (I) Il costrutto if else (II)

Silvia Rossi. Cenni sulla complessità. Informatica. Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Programmazione I

Mini-Corso di Informatica

Modulo III - Cenni alla programmazione in R

Matrici.h Definizione dei tipi #define MAXROWS 10 #define MAXCOLS 10 #define ELEMENT int #define ELEMENTFORMAT "%d" Tipo degli elementi della matrice

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Primi script in MATLAB

Fondamenti di Informatica

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

1. Calcolo dell indice di condizionamento di una matrice

8 Introduzione MATLAB

Il primo programma C++

Fondamenti di Informatica e Programmazione

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Strutture di controllo

Javascript: il browser

Strutture di controllo in C++

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Linguaggio C Strutture di controllo

Lezione 3 Strutture di controllo

A.A. 2018/2019. AlgoBuild: Introduzione agli Array FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Gestione dei file in C

Esercizi in Python. Docente: Domenico Daniele Bloisi

Fondamenti di Informatica

Istruzioni di Controllo in C. Emilio Di Giacomo

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

Introduzione al Linguaggio C

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Transcript:

Fondamenti di Informatica, A.A. 2012-2013 10/07/2013 fila A Esercizio 1 È dato il frammento di codice Matlab n = 6 ; v = [ 1 3 2 4 5 2 ] ; m = 1 ; v ( i ) = v ( i ) ˆ 2 ; [m j ] = max( v ) ; v ( i ) = m+v ( i ) ; disp ( v ) ; Si chiede cosa viene visualizzato dall interprete Matlab. Per la corretta soluzione del problema occorre notare che il massimo valore nel vettore cambia ad ogni iterazione. L interprete Matlab stampa octave :5> disp ( v ) ; 6 18 22 38 63 67 Esercizio 2 Discutere le funzionalità legate all I/O in Octave/Matlab con particolare riguardo ai file di testo. Octave/Matlab consente di gestire agevolmente molteplici formati di file (testuali, audio, video,...) grazie a delle funzioni di alto livello. E inoltre possibile accedere a file testuali attraverso funzioni di basso livello che permettono una gestione più generale utile nel caso in cui si debbano maneggiare formati particolari non leggibili dalle funzioni di alto livello. Per poter accedere ad un file di testo con tali funzioni è richiesta, come prima operazione, la sua apertura attraverso la funzione fopen( path, mode ) la quale pre come parametri il percorso del file e la modalità di apertura; quest ultima può essere di sola lettura, di sola scrittura, di scrittura alla fine del file, ecc. La funzione fopen() ritorna un identificativo univoco; tale numero verrà utilizzato da tutte le funzioni di basso livello per poter operare correttamente sul file in questione, attraverso ad esempio le funzioni fgets, fscanf, fprintf. Una particolarità di Octave/Matlab è quella di poter salvare/caricare il valore delle variabili del workspace con i semplici comandi save e load.

Esercizio 3 In una prova di esame di informatica viene richiesto di trovare i numeri primi compresi fra 1 e 100. Uno studente propone il seguente codice n = 1 : 1 0 0 ; k=1; p = [ ] ; p ( k )=2; i =1; j =1; while ( i<=length ( n ) ) primo=true ; for j =1:k i f mod( n ( i ), p ( j ) ) == 0 primo = primo & f a l s e ; i f primo k = k+1; p ( k)=n ( i ) ; i = i +1; Si chiede di trovare l errore presente nel codice e di proporre una correzione adeguata. Il problema riguarda la presenza del numero 1 fra quelli candidati ad essere numeri primi; il codice proposto trova che 1 soddisfa le condizioni richieste (dato che mod(1,2) == 1), lo include nell elenco dei numeri primi, e da quel momento in poi qualunque numero risulta non primo, in quanto il resto della divisione per 1 è sempre 0. Le possibili soluzioni riguardano quindi l esclusione di tale numero dai candidati. Una possibile soluzione è quindi la seguente: n = 3 : 1 0 0 ; k=1; p = [ ] ; p ( k )=2; i =1; while ( ( i<=length ( n ) ) ) primo=true ; for j =1:k i f mod( n ( i ), p ( j ) ) == 0 primo = primo & f a l s e ;

i f primo k = k+1; p ( k)=n ( i ) ; i = i +1; in cui si escludono i numeri 1 e 2 dai candidati. Esercizio 4 È data la seguente funzione Matlab function [ x n]= simple ( a, x, b ) n=length ( x ) ; x = a\b ; n = length ( x) 1; Si stimi il numero di operazioni aritmetiche eseguite assumo che a sia una matrice triangolare inferiore e che x e b siano arrays. Il comando a\b risolve un sistema lineare; esso a triangolare inferiore, questo richiede n 2 operazioni aritmetiche. Per ogni iterazione del ciclo viene inoltre eseguita una singola sottrazione; dato che il ciclo viene eseguito n volte si avranno in totale n(n 2 + 1) = n 3 + n operazioni aritmetiche. Da notare che la definizione della variabile n all interno del ciclo non influenza il numero di iterazioni eseguite. Esercizio 5 È dato il frammento di codice Matlab n=100; i = 1 ; j = 1 ; maxt = 30000; v = [ ] ; x = 1 : 1 0 ; t = 0 ; while i<=n && t<=maxt while j<i v ( i ) = j+i ; j = j +2; t = max( v ) ;

j = 1 ; i = i +1; Riscrivere il codice faco uso di uno o piu cicli for. Una possibile soluzione è la seguente: n=100; i = 1 ; j = 1 ; maxt = 30000; v = [ ] ; x = 1 : 1 0 ; t =0; for j = 1 : 2 : i 1 v ( i ) = j+i t = max( v ) ; i f ( t > maxt ) break ;

10/07/2013 fila B Esercizio 1 È dato il frammento di codice Matlab n = 5 ; v = [ 1 3 4 3 2 ] ; m = 2 ; v ( i ) = v ( i ) 2 ; s = sum( v ) ; m = min(min( v ), s+m) ; v ( i ) = m+v ( i ) ; disp ( v ) ; Si chiede cosa viene visualizzato dall interprete Matlab. L interprete Matlab stampa octave :10> disp ( v ) ; 4 8 10 8 8 Esercizio 2 Discutere l utilizzo dell operatore :. Riportare un esempio tipico di indicizzazione di array attraverso il suo utilizzo. Suppono che a sia una matrice n m, dire cosa accade utilizzando il seguente comando a(:,n:-1:1). L operatore : viene utilizzato in Octave/Matlab per definire un range di valori. Un tipico esempio del suo utilizzo per indicizzare un array b è il seguente b(1:n) dove b è un array di almeno n elementi. Nel caso in cui a sia una matrice n m il comando a(:,n:-1:1) ritorna una matrice quadrata n n in cui le colonne sono le prime n colonne di a ma riportate in senso inverso (assumo che n m). Esercizio 3 In una prova di esami di informatica viene richiesto di implementare un programma che simuli il contachilometri di un veicolo. Uno studente propone il seguente codice b=10; i =0; j =0; k=0; v = zeros ( 1, 3 ) ; while ( k<b ) while ( j < b )

while ( i <b ) v ( 3 ) = i ; disp ( v ) ; i=i +1; j = j +1; v ( 2 ) = j ; v ( 3 ) = 0 ; k=k+1; v ( 1 ) = k ; v ( 2 ) = 0 ; v ( 3 ) = 0 ; Si chiede di trovare l errore presente nel codice e di proporre una correzione adeguata. Il problema è nella mancata reinizializzazione delle variabili i e j alla fine dei due cicli while piu esterni, per cui dopo la configurazione di cifre 009 il ciclo piu interno non viene piu eseguido e non vengono stampate ulteriori sequenze di cifre. Una possibile soluzione è la seguente: b=10; i =0; j =0; k=0; v = zeros ( 1, 3 ) ; while ( k<b ) while ( j < b ) while ( i <b ) v ( 3 ) = i ; disp ( v ) ; i=i +1; j = j +1; v ( 2 ) = j ; v ( 3 ) = 0 ; i =0; k=k+1; v ( 1 ) = k ; v ( 2 ) = 0 ; v ( 3 ) = 0 ; j = 0 ; Esercizio 4 È data la seguente funzione Matlab

function [ x n]= simple ( a, x, b ) n=length ( x ) ; for j =1:2: n x ( i ) = a ( i )/ b ( i ) ; n = length ( x) 1; Si stimi il numero di operazioni aritmetiche eseguite assumo che a,b ed x siano arrays della stessa lunghezza multipla di 2. Nel ciclo for interno viene eseguita una operazione aritmetica per ogni iterazione; il ciclo viene eseguito n/2 volte. Nel ciclo esterno viene eseguito il ciclo interno e una operazione aritmetica aggiuntiva, verranno quindi eseguite in totale n 2 /2 + n operazioni aritmetiche. Da notare che il calcolo della variabile n all interno del ciclo non influenza il numero di iterazioni eseguite, in quanto n viene diminuito di 1, passando da pari a dispari, ed il ciclo interno viene appunto eseguito sui dispari, quindi rimane invariato. La modifica di n non altera (secondo la semantica del ciclo for) il ciclo esterno. Esercizio 5 È dato il frammento di codice Matlab n = 100; j = 0 ; k = 1 ; for i = 1 : 4 : n for j =1:n i f ( k>1000 j==n ) k = k 2; break ; else k = k+j. 2 ; Riscrivere il codice faco uso di uno o piu cicli while e NON usando blocchi condizionali if o switch. Una possibile soluzione è la seguente: n = 100;

j = 0 ; k = 1 ; i = 1 ; while ( i<=n ) j = 1 ; while ( j<=n && k<=1000) k = k+j. 2 ; j=j +1; k = k 2; i = i +4;