FPL Prova di Laboratorio

Documenti analoghi
Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Nozioni Base di Linux

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep -

Università degli Studi di Ferrara

Prova Pratica 017 turno 1 gruppo febbraio 06

Laboratorio di Algoritmi

Laboratorio di Algoritmi e Strutture Dati

Matlab: Script e Funzioni

ASD Lab 1. Alessandra Giordani UniTN. Alessandra Giordani (UniTN) ASD Lab / 20

Dati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap

Introduzione a Linux Lezione 7 Programmare in Linux

Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito.

Esercitazione 1 la shell

Laboratorio di Algoritmi e Strutture Dati

Secondo Progetto ASD 2015/16

Filtri e pipeline. qualsiasi comando unix ha a disposizione 3 file con cui comunicare con il resto del sistema: standard input in ingresso

Lezione 5 in laboratorio processi, stringhe

- comando sort: con chiavi di ordinamento -

Laboratorio di Algoritmi e Strutture Dati

Laurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione

Esercizi Programmazione I

Intro ad analisi. Alessandra Giordani Lunedì 5 marzo 2011

Università degli Studi di Ferrara

Perché il linguaggio C?

Introduzione al DEV C++

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Lab 19 Unix e comandi di base

Usare Python in Linux

Programmazione di base

Esercizi su permessi

SISTEMI DI ELABORAZIONE

Lab 04 Programmazione Strutturata"

Algoritmi e Strutture Dati. Lezione 1

Usare Python in Linux

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Università degli Studi di Ferrara

Primi passi Output formattato Le quattro operazioni. Programmazione 1. Lezione 2 Parte 2. Vincenzo Marra.

IDE DevC

L AMBIENTE CODE BLOCKS E L IO

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

1.1 RETI INFORMATICHE

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Influenza da browser

Laboratorio di informatica Ingegneria meccanica

Introduzione. Informatica B. Daniele Loiacono

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

Esercitazione Programmare Liste

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

a strange language, shaped as much by history as by design

PROGETTO PER IL LABORATORIO DI ASD A.A. 2018/19 VERSIONE 1.0

Università degli Studi di Ferrara

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

ESERCITAZIONE 2 fork e exec

Corso di Reti di Calcolatori T

WPCustPad Utility per la personalizzazione di WEBpatente 4.2 offline.

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Ereditarieta', Polimorfismo e Metodi Virtuali. Per "referenza" e per "valore".

LA PIATTAFORMA DIGITALE PER I BENI CULTURALI PIEMONTESI. Importazione dati archivistici

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Sei su un computer immaginario con sistema operativo Linux. La tua directory (cartella) corrente e : /home/utente/pianeti/saturno

Laboratorio di Algoritmi e Strutture Dati

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

Corso di Laboratorio di Sistemi Operativi

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Contagion: il tuo amico è il vero nemico...etchi

Perché il linguaggio C?

Introduzione alla programmazione nella shell di Unix 10 Maggio 2005

Laboratorio di Sistemi Operativi a.a Esercitazione 2

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Struct e liste concatenate

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

FONDAMENTI DI INFORMATICA

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Numero NaviDimensione Nave

Applicativo PSR

Esercizio 1. Esercizio 2

Informatica Generale --- Scritto del XX Settembre 2002

Programmazione di base

La programmazione in linguaggio C

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Corso di Informatica di Base

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Programmazione in C. La struttura del programma Variabili, espressioni, operazioni

Strumenti per la programmazione. Strumenti per la programmazione. Strumenti per la programmazione. Strumenti per la programmazione

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing

Esercitazioni di Informatica (CIV)

WPCustPad 1.1 Utility per la personalizzazione di WEBpatente e WEBpatentino AM offline.

lkale: una agenda interattiva client-server

Progettazione di Algoritmi Anno Accademico Esercizi su Grafi: Parte Prima

Calcolo su Polinomi ===================

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Programmazione di base

Transcript:

FPL Prova di Laboratorio Appello del //06 Istruzioni Risolvete il seguente esercizio prestando particolare attenzione alla formattazione dell input e dell output. La correzione avverrà in maniera automatica eseguendo dei test e confrontando l output prodotto dalla vostra soluzione con l output atteso. Si ricorda che è possibile verificare la correttezza del vostro programma su un sottoinsieme dei input/output utilizzati. I file di input e output per i test sono nominati secondo lo schema: input0.txt output0.txt input.txt output.txt... Per effettuare le vostre prove potete utilizzare il comando del terminale per la redirezione dell input. Ad esempio./compilato < input0.txt effettua il test del vostro codice sui dati contenuti nel primo file di input, assumendo che compilato contenga la compilazione della vostra soluzione e che si trovi nella vostra home directory. Dovete aspettarvi che l output coincida con quello contenuto nel file output0.txt. Per effettuare un controllo automatico sul primo file input input0.txt potete eseguire la sequenza di comandi./compilato < input0.txt diff - output0.txt Questa esegue la vostra soluzione e controlla le differenze fra l output prodotto e quello corretto. Una volta consegnata, la vostra soluzione verrà valutata nel server di consegna utilizzando altri file di test non accessibili. Si ricorda di avvisare i docenti una volta che il server ha accettato una soluzione come corretta.

Suggerimenti Progettare una soluzione efficiente. Prestare attenzione ad eventuali requisiti in tempo e spazio richiesti dall esercizio. In ogni caso, valutare la complessità della soluzione proposta e accertarsi che sia ragionevole: difficilmente una soluzione con complessità Θ ( n 3) sarà accettata se esiste una soluzione semplice ed efficiente in tempo O (n). Abilitare i messaggi di diagnostica del compilatore. codice usando le opzioni -g -Wall di gcc: gcc - Wall - g soluzione. c - o soluzione Compilare il risolvere tutti gli eventuali warnings restituiti dal compilatore, in particolar modo quelli relativi alle funzioni che non restituiscono un valore e ad assegnamenti tra puntatori di tipo diverso. Provare la propria soluzione in locale. Valutare la correttezza della soluzione sulla propria macchina accertandosi che rispetti tutti gli input/output contenuti nel TestSet. Al fine di agevolare la verifica, si consiglia di posizionare la soluzione compilata e i file appartenenti al TestSet nella stessa directory e lanciare sotto tale directory lo script seguente: for i in input * ; do./ soluzione < ${i} diff -q - output$ {i## input } done

Esercizio Si vuole simulare la gestione di una coda di interi Q da N elementi ordinati secondo la politica LRU (Last Recently Used): in ogni momento, il primo elemento della lista è l elemento letto più recentemente, il secondo è il secondo elemento letto più recentemente e così via. In particolare, il programma deve leggere da input la lunghezza N della lista. Successivamente, il programma deve entrare in un ciclo in cui all inizio di ogni iterazione va letto un intero e che indica una delle tre possibili operazioni da eseguire: e = 0 (terminazione): termina il programma. e = (accesso): leggi da input un intero x ed aggiorna la coda seguendo i passi qui riportati:. cerca x in Q;. se x è già presente in Q, allora è necessario spostarlo in testa a Q; 3. se x non è già presente in Q, allora è necessario aggiungerlo in testa; 4. se x non era già presente in Q ed il suo inserimento in coda fa sì che la lunghezza della coda ecceda N, allora è necessario rimuovere l elemento in coda a Q. e = (stampa): Stampa il contenuto di Q, partendo dall elemento in testa. L input è formattato nel seguente modo. La prima riga è costituita dall intero N che indica la dimensione della coda Q. Segue poi un numero indeterminato di comandi, formattati nel modo seguente: e = 0 : una riga contenente l intero 0; e = : una riga contenente l intero, a cui segue una riga contenente l intero x con cui aggiornare Q; e = : una riga contenente l intero. L output consiste negli output delle code richiesti dai comandi e = in input. In particolare, l output di Q deve essere formattato su una singola riga contenente gli interi in Q, dal primo all ultimo, e terminata dal carattere $. Ogni intero è separato dal successivo da un singolo spazio. Ad esempio, la stampa della coda Q = {,, } consiste nella riga $, mentre la coda vuota Q = {} consiste nella riga contenente il singolo carattere $. 3

Note La coda può anche essere implementata mediante l uso di un array. Se durante le vostre prove vi capitasse di non riuscire a interrompere il ciclo, per forzare la terminazione dell esecuzione del programma si usi la combinazione di tasti Ctrl+C. 4

Esempio Nota: il testo in verde è da intendersi come commento e dunque non fa parte dell input. Input 5 // N // Comando e = : accesso 3 // Intero da accedere // Comando e = : accesso 6 // Intero da accedere // Comando e = : stampa // Comando e = : stampa // etc. 8 7 5 8 3 0 5 0 Output 6 3 $ 6 3 $ 3 8 5 7 6 $ 5 0 3 8 7 $ 5