Fondamenti di Informatica

Documenti analoghi
Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Scrivi una funzione ricorsiva che prende in input un vettore V e restituisce un vettore V2 della dimensione doppia di V, che

Informatica B

Informatica B

8 Introduzione MATLAB

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)

8 Introduzione MATLAB

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis ( ) Tutor : prof. Marcello Colella (

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Informatica! Appunti della lezione 8!

12 Function Handles e Ricorsione in MATLAB

Facoltà di Ingegneria Civile, Ambientale e Territoriale

Corso di Fondamenti di Informatica Prof Aldo Franco Dragoni Prova Scritta 25/07/2011

PARTE

Fondamenti di Informatica

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Prof. Venturino Taggi

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

Introduzione al MATLAB c Parte 3 Script e function

Fondamenti di Informatica

Fondamenti di Informatica. Exercises: Cell Array and Struct Array

Appello di Fondamenti di Informatica 12/09/2017

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

UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

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

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

La prova di verifica e algoritmi di forza bruta

Esercitazione di Reti degli elaboratori

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Strutture di controllo in C++

Esercitazione Dicembre 2010 (2 ore)

Corso di Fondamenti di Informatica Macroarea di Ingegneria 2017/18. Tutor: prof. Francesco De Vincenzi

Traccia B. Spazio Riservato alla Commissione Esercizio 2 (10 punti)

8 Introduzione MATLAB

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Esercizi. Fondamenti di Informatica

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio

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

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica

Seconda Prova Intracorso di Fondamenti di Informatica e Programmazione 04/12/2017

COGNOME E NOME Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 18 Febbraio 2016 RIGA COLONNA MATRICOLA

Elementi di Calcolo Scientifico per l Ingegneria A.A

Fondamenti di Informatica A.A. 2016/17

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

Fondamenti di Informatica Esercitazione 8/5/2014

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

A.A. 2018/2019. Esercitazione 5. Modellazione e Risoluzione di Problemi mediante MATLAB. [ Possibili Soluzioni ]

Fondamenti di Informatica 2

Fondamenti di Informatica

Fondamenti di Programmazione

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

Corso di Fondamenti di Informatica Macroarea di Ingegneria 2017/18. Tutor: prof. Francesco De Vincenzi

Programmazione in Java (I modulo)

Esercizi su array di array

Informatica (A-K) 5. Algoritmi e pseudocodifica

Fondamenti di Informatica A.A. 2016/17

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti

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

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

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly

RIGA COLONNA MATRICOLA

Laboratorio di Python

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

Fondamenti di Informatica

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

Fondamenti di Programmazione

Fondamenti di Informatica

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

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

A.A. 2018/2019. Esercitazione 4 [Guidata] Risoluzione di un Problema con Strutturazione del Codice Sorgente mediante MATLAB

13 Ricorsione con MATLAB

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI ARRAY

Fondamenti di Informatica T-1

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

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 25 gennaio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Esercitazione Fondamenti di informatica 2

SOLUZIONE. ELEMENTI DI INFORMATICA Sede di Mondovì

Lab 7 Info B. Marco D. Santambrogio Matteo Ferroni Ver. aggiornata al 19 Gennaio 2016

Tema A+B COGNOME E NOME. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 4 Febbraio 2016

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

Esercizi in Laboratorio

Traccia C. Spazio Riservato alla Commissione Esercizio 2 (10 punti)

Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica, Prof. G. Boracchi Allievi Ingegneria Civile e Mitigazione del Rischio

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

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

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

FONDAMENTI DI INFORMATICA

strutture e file di testo/binari Esercizio - lettura/filtro/scrittura PEOPLE.TXT PARTNERS.DAT Due persone sono compatibili

Fondamenti di Informatica

Appello di Fondamenti di Informatica e Programmazione 03/01/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Transcript:

Fondamenti di Informatica lesson 25 Exercises 2013/06/23 Prof. Emiliano Casalicchio emiliano.casalicchio@uniroma2.it

Esami n Appelli (Prova Scritta - Prova Pratica) 1 Luglio (ore 9:00) 3 Luglio (ore 14) 15 Luglio (ore 9:00) 17 Luglio (ore 14) n Regole Alla prova scritta non è consentito consultare ne libri, ne appunti, ne dispositivi elettronici di alcun genere (telefoni, palmari, etc ) Alla prova pratica si accede solo se si supera la prova scritta, ossia si consegue un voto >= 18/30 2

Esercizi n n n Dato l andamento giornaliero dello spread degli ultimi 2 anni costruire la top 10 ordinata per valore assunto dallo spread e la relativa data Ordinare gli elementi dell agenda (nome, cognome, numero di telefono) in ordine alfabetico cresente per cognome Dato un sudoku completato, verificare che la soluzione sia corretta. Regole: matrice 9x9 divisa in sottomatrici 3x3 ogni sottomatrice deve contenere elementi da 1 a 9 senza ripetizioni ogni riga deve contenere numeri da 1 a 9 senza ripetizioni ogni colonna deve contenere i numeri da 1 a 9 senza ripetizioni 3

Esercizi: Spread n Dato l andamento giornaliero dello spread degli ultimi 2 anni si chiede di determinare la top 10 ordinata per valore assunto dallo spread la top 10 ordinata per data in entrambi I casi restituire sia il valore dello spread sia la data 4

Analisi del problema: Spread n rappresentazione dei dati (data,spread) n rappresentazione della data gg, mm, aaaa in struttura? aaaammgg come numero? n rappresentazione della collezione dei dati array di strutture? matrice 2xn? 2 array? n scegliamo una matrice 2xn n rappresentazione della data aaaammgg n operazioni sort + filter 5

Soluzione: spread.m spreads=[234 233 220 238 257 245 257 259 300 320...! 347 356 470 397 350 300 297!! 20110701 20110702 20110703 20110704 20110705...! 20110706 20110707 20110708 20110709 20110710...! 20110711 20110712 20110713 20110714 20110715...! 20110716 20110717];! spreads_sorted=mybubblesort(spreads,1,'des');! if length(spreads_sorted)>=10! top10(1,:)=spreads_sorted(1,1:10);! top10(2,:)=spreads_sorted(2,1:10);! else top10=spreads_sorted;! 6

mybubblesort function v = mybubblesort( v, row,order)! %Sort the array v along the row specified in the input.! %INPUT: a vector of numbers v! % a row index (1 or 2)! % order 'asc' ascending 'des' descending! %OUTPUT: a vector v of number sorted in descending order!! for i=1:length(v)-1! scambio=false;! for j=2:length(v)-i+1! switch order! case 'des'! if v(row,j-1)<v(row,j)! x1=v(1,j);! x2=v(2,j);! v(1,j)=v(1,j-1);! v(2,j)=v(2,j-1);! v(1,j-1)=x1;! v(2,j-1)=x2;! scambio=true;! 7

mybubblesort!case 'asc'! if v(row,j-1)>v(row,j)! x1=v(1,j);! x2=v(2,j);! v(1,j)=v(1,j-1);! v(2,j)=v(2,j-1);! v(1,j-1)=x1;! v(2,j-1)=x2;! scambio=true;! if ~scambio! break;! 8

Esercizi n Ordinare gli elementi di un agenda (nome, cognome, numero di telefono) in ordine alfabetico cresente per cognome 9

Analisi del problema n reppresentazione dell agenda struct n operazioni sort su stringhe 10

confronto tra stringhe >> s1='asfsae ;! >> s2='werdf';! >> s1>s2!??? Error using ==> gt! Matrix dimensions must agree.!! >> s1(1:min(length(s1),length(s2)))>s2(1:min(length(s1),le ngth(s2)))! ans =! 0 1 0 1 0! >> strcmp(s1,s2)! ans =! 0!! 11

Soluzione del problema % Inizio Script! %Ordinamento agenda! clear;! agenda=builddata('agenda.xls');! agenda=mysortcognome(agenda);! % Fine Script! 12

mysortcognome function v = mysortcognome(v)! %Sort the array v along the row specified in the input.! %INPUT: a struct vector containing strings! %OUTPUT: a vector v of number sorted in descending order! for i=1:length(v)-1! scambio=false;! for j=2:length(v)-i+1! if gtstr(v(j-1).cognome,v(j).cognome)! x=v(j);! v(j)=v(j-1);! v(j-1)=x;! scambio=true;! if ~scambio! break;!! 13

Esercizi n Dato un sudoku completato, verificare che la soluzione sia corretta matrice 9x9 divisa in sottomatrici 3x3 ogni sottomatrice deve contenere elementi da 1 a 9 senza ripetizioni ogni riga deve contenere numeri da 1 a 9 senza ripetizioni ogni colonna deve contenere i numeri da 1 a 9 senza ripetizioni 14

Analisi del problema n Input: matrice 9x9 regole Sudoku n Output True or False n Operazioni (fold di fold) analisi righe: fold analisi colonne: fold analisi sottomatrici: fold 15

Sudoku.m %Sudoku! clc;! clear;! sudoku =...; % MATRICE OMESSA PER MANCANZA DI SPAZIO. VEDI CODICE! %! if ~isempty(find(sudoku>9)) ~isempty(find(sudoku<1))! %controllo se gli elementi del sudoku sono complresi da 1 a 9! fprintf(' Sudoku errato. \n Il sudoku contiene valori >9 o < 1');! elseif controllorighe(sudoku) &&...! controllocolonne(sudoku) &&...! controllosottomatrici(sudoku)! fprintf(' Sudoku corretto ');! else! fprintf(' Sudoku errato. Ci sono duplicati non ammessi (righe, colonne sottomatrici)');! 16

controllorighe.m function r = controllorighe( s )! %Data una matrice s controlla che nelle righe! %non ci siano elementi ripetuti.! %INPUT: matrice s! %OUTPUT: r=true se non ci sono ripetizioni. Altrimenti r=false! r=true;! for i=1:size(s,1) % scorro righe! for j=1:size(s,2) % scorro colonne! if length(find(s(i,:)==s(i,j)))>1! r=false;! break;! if r==false! break;!! 17

controllocolonne.m function r = controllocolonne( s )! %Data una matrice s controlla che nelle colonne! %non ci siano elementi ripetuti.! %INPUT: matrice s! %OUTPUT: r=true se non ci sono ripetizioni. Altrimenti r=false! r=true;! for i=1:size(s,2) %scorro colonne! for j=2:size(s,1) %scorro righe! if length(find(s(:,i)==s(j,i)))>1! r=false;! break;! if r==false! break;! 18

controllosottomatrici.m function r = controllosottomatrici(s)! %Data una matrice s di dimensione 9x9 controlla che nelle sottomatrici! %di dimensione 3x3 (mod 3) non ci siano elementi ripetuti.! %INPUT: matrice s! %OUTPUT: r=true se non ci sono ripetizioni. Altrimenti r=false! r=true;! if size(s,1)~=9 && size(s,2)~=9! r=false;! else! for i=1:3:size(s,1)! for j=1:3:size(s,2)! if ~controllomatrice(s(i:i+2,j:j+2))! r = false;! break;! if r == false! break;! 19

controllomatrice.m function r = controllomatrice(m)! r=true;! for i=1:size(m,1)! for j=1:size(m,2)! if length(find(m==m(i,j)))>1! r=false;! break;! if r == false! break;! 20

Simmetrica n Verifica se e una matrice simmetrica iterativa ricorsiva 21

Esercizi n Scrivere una funzione che verifichi la simmetricità di una matrice n Realizzare una funzione per il calcolo delle disposizioni semplici Dnk=n!/(n-k)! n Scrivere una funzione che, dati in input due interi N1 ed N2, restituisca la somma di tutti gli interi compresi tra N1 ed N2. n Sia assegnato un vettore A di interi di dimensione N. Scrivere una funzione ricorsiva che calcoli il massimo valore degli elementi di A n Scrivere una funzione che verifichi se una parola e un palindromo, ossia se letta in senso inverso, sia da sinistra sia da destra, rimane identica (per es. oro) n Scrivere una funzione che verifichi se un numero intero è palindromo, ovvero se letto in senso inverso, sia da sinistra sia da destra, rimane identico (ad es. 101) 22