ZZZ01 Esercizi Vari. Esercizi per preparazione alla prova pratica di laboratorio



Documenti analoghi
Linguaggio C - Stringhe

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

NOZIONI BASE SHELL E SCRIPT LINUX

Introduzione alla programmazione in C

Caratteri e stringhe Esercizi risolti

Breve riepilogo della puntata precedente:

Introduzione al Linguaggio C

DevC++ vers Manuale d uso

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

I puntatori e l allocazione dinamica di memoria

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Le stringhe. Le stringhe

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo

Linguaggio C Compilazione, linking e preprocessor

Linguaggio C. Fondamenti. Struttura di un programma.

Funzioni in C. Violetta Lonati

Il sistema operativo UNIX/Linux. Gli script di shell


Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Gestione delle stringhe in C

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Appunti di Informatica 1

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

Compilatori GNU in Linux: gcc e g++

Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo. A. Murli - Cacolo Scientifico a.a.

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

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

Editor vi. Editor vi

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Introduzione a Dev-C++

Makefile. Un target in generale e' un file. Usando.PHONY: target specifichiamo a make che il target non e' un file

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Sistemi Operativi (M. Cesati)

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

Introduzione al linguaggio C Gli array

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

RICERCA DI UN ELEMENTO

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Esercizio 1. Esercizio 1

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

Esercizio: gestione di un conto corrente

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Allocazione dinamica della memoria - riepilogo

Calcolare il massimo di una lista

Fondamenti di Informatica 2

Compilatore risorse display grafico LCD serie IEC-line

LABORATORIO DI INFORMATICA parte 6 -

Lezione 10: Librerie e compilazione separata

Il compilatore Dev-C++

Procedura per creare un archivio storico locale nelle 24 ore giornaliere


ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Alcune regole di base per scrivere un programma in linguaggio C

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

GESTIONE INFORMATICA DEI DATI AZIENDALI

Struttura di un programma Java

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

NOZIONI BASE PER ESERCITAZIONI

puntatori Lab. Calc. AA 2007/08 1

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

1.0 GUIDA PER L UTENTE

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

I Metacaratteri della Shell Unix

Si apre la seguente pagina!

Esercizio 2. Client e server comunicano attraverso socket TCP

Analizzatore lessicale o scanner

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Esercizi di programmazione in C

Visualizzazione grafica. dell'output di un programma con GNUplot

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

Corso ForTIC C2 LEZIONE n. 8. Cos'è la shell Le variabili d'ambiente L'uso della shell per la realizzazione di semplici script

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Fondamenti di Programmazione

COMPILAZIONE DI UN APPLICAZIONE. 1) Compilare il file (o i file se più d uno) che contengono il testo del programma. compilatore

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

costruttori e distruttori

Introduzione al Python

Lab 11 Gestione file di testo"

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

Scuola Superiore Sant Anna. Progetto parte Unix. AA : Distributed File Repository

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI

Programmare in Java. Olga Scotti

Laboratorio di Informatica

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Transcript:

ZZZ01 Esercizi Vari Esercizi per preparazione alla prova pratica di laboratorio

Esercizio ZZZ01_01 - Elefanti Schizzinosi Nella savana africana c'e' una pozza d'acqua fresca alimentata da un acquedotto. La pozza può contenere al massimo 500 litri d'acqua. C'e' un branco di N=5 elefanti che bevono ciascuno ogni volta 100 litri impiegando ciascuno 1/10 di secondo. Dopo avere bevuto ogni elefante fa un giretto e torna a bere dopo 1 secondo. C'e' un branco di M=10 pekari che bevono ciascuno ogni volta 1 litro impiegando ciascuno 1/100 di secondo. Dopo avere bevuto ogni pekari fa un giretto e torna a bere dopo 2.2 secondi. Potenzialmente alla pozza c'e' posto sufficiente affinché tutti gli animali possano bere assieme, però ci sono delle complicazioni. Più pekari possono bere contemporaneamente ad altri pekari. Più elefanti possono bere contemporaneamente ad altri elefanti. Se uno o più elefanti sta bevendo, ed un pekari inizia a bere, gli elefanti completano la bevuta. Se uno o più pekari stanno bevendo, nessun elefante si avvicina perché i pekari puzzano maledettamente, quindi gli elefanti aspettano. Un animale può cominciare a bere solo se nella pozza c'è acqua sufficiente per - far completare la bevuta di tutti gli animali che stanno già bevendo, - ed anche a far completare la bevuta dell'animale che vuole cominciare a bere. Ogni secondo, ed impiegando un tempo infinitesimo, l'acquedotto aggiunge alla pozza 70 litri. Se la pozza è già abbastanza piena, l'acqua in eccesso fuoriesce dalla pozza e viene persa Modellare ed implementare il sistema descritto, utilizzando dei thread POSIX per ciascuna figura (acquedotto, pekari, elefanti) ed avvalendosi delle opportune strutture dati per la sincronizzazione. Scrivere immediatamente il Makefile per compilare e linkare i sorgenti. Occorre inserire il controllo di errore nelle chiamate a funzione delle librerie dei pthread. In caso di errore grave, terminare il programma producendo un avviso a video.

Esercizio ZZZ01_02 - Macro ProdottoAumentato In linguaggio ANSI C, scrivere una macro avente nome ProdottoAumentato che prende due argomenti. Gli argomenti passati alla macro possono essere di qualunque tipologia. La macro deve incrementare di 1 il primo argomento e deve moltiplicare il risultato dell'incremento per il secondo argomento. Scrivere un file main.c che contenga un piccolo programma di esempio in cui viene invocata la macro. Scrivere anche un Makefile per compilare e linkare il programma. Esercizio ZZZ01_03 - Makefile In linguaggio ANSI C, scrivere una semplice programma che stampa a video la frase ciao, come stai?" e poi va a capo riga e termina. Devono essere stampati anche i due doppi apici ad inizio e fine della frase. Scrivere un semplice Makefile che deve far eseguire l'eseguibile ottenuto da compilazione e linking dei sorgenti del programma.

Esercizio ZZZ01_04 - Stringhe In linguaggio ANSI C, scrivere una semplice programma (ed il Makefile per compilarlo e linkarlo) che deve svolgere questi semplici compiti: - Inizializzare una stringa con il contenuto "ghini non sa andare in bicicletta". Stampare a video il contenuto della stringa. - Poi Modificare il contenuto della stringa sostituendo con 3 caratteri bianchi (space, ' ', codice ascii 32, 0x20) ciascuno dei caratteri che compongono la sottostringa "non". Stampare a video il nuovo contenuto della stringa. - Poi Invertire il contenuto della stringa, ovvero mettere il primo carattere al posto dell'ultimo, il secondo carattere al posto del penultimo e così via. Stampare a video il nuovo contenuto della stringa. - Ridurre la lunghezza del contenuto della stringa, eliminando dal contenuto tutti i caratteri 'c'. Stampare a video il nuovo contenuto della stringa.

Esercizio ZZZ01_05 - Stringhe In linguaggio ANSI C, sia dato il seguente programma : #include <stdlib.h> #include <unistd.h> #include <stdio.h> int main(void) { char stringa[120] = "ciao"; char *p; } p= (char*) malloc ( strlen(stringa) +1); if(!p ) { printf("malloc failed\n"); return(1); } strcpy( p, stringa ); printf( "%s\n", p ); free( p ); free ( stringa ); return(0); Il programma viene compilato e linkato correttamente oppure produce errori? Se credete che l'eseguibile possa essere generato, eseguendo l'eseguibile accade qualche errore a run-time oppure no?

Esercizio ZZZ01_06 - bash Scrivere uno script bash lanciaedopokilla.sh che lancia 10 volte direttamente in background il comando sleep(1000). Durante il lancio dei comandi NON deve essere memorizzato il pid dei processi lanciati in background. Solo DOPO avere lanciato TUTTI i 10 comandi, utilizzare i comandi bash più opportuni per rintracciare i pid dei processi sleep in esecuzione ed eliminare tali processi. Esercizio ZZZ01_07 - bash Scrivere uno script bash cerca.sh che cerca tutti i file con estensione.h nella directory /usr/include/linux/netfilter/ cercando anche nelle sue sottodirectory. Per ciascun file trovato controllare se in quel file è presente la stringa int Stampare a video il nome (inteso come percorso assoluto) di quei file che NON contengono la stringa int Soluzione in pagina successiva

soluzione Esercizio ZZZ01_07 - bash for name in `find /usr/include/linux/netfilter -type f -name "*.h" -print` ; do NUMLINES=`grep int ${name} wc -l` ; if (( ${NUMLINES} == 0 )) ; then echo ${name} ; fi ; done ;