1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "1 (6) 2 (7) 3 (7) 4 (7) 5 (6)"

Transcript

1 CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B anno accademico Prof. Danilo ARDAGNA Seconda Prova in Itinere Durata 1h 30 Valutazioni 1 (6) (7) 3 (7) 4 (7) 5 (6) Cognome Nome Matricola Firma Si ricorda che non è possibile consultare libri o appunti punti 6 Si consideri il seguente frammento di codice in linguaggio C: #include <stdio.h> int f(int *v, int n) main() int r; if(n == 0) return 1; r = f(&v[1], n-1); printf("%d - ", v[1] + 1); return r+; int vettore[7]; int i; int ris; for(i=0; i<5; i++) vettore[i] = i*; ris = f(&vettore[1], );

2 printf("%d\n", ris); indicare l output della printf e fornire lo stack di attivazione relativo all esecuzione del programma. Funzione Variabile Valore main vettore[0] vettore[1] vettore[] vettore[3] vettore[4] vettore[5] ? vettore[6]? f i ris v n 5 5 &vettore[1] r 3 f v n &v[1] 1 r 1 f v &v[1] n 0 r? Output: punti 7 Si vuole implementare un programma in linguaggio C per la gestione delle adozioni in un canile. Il programma legge un file di testo chiamato cani.txt (già esistente) contenente su ogni riga il nome dei cani, e scrive in un file chiamato adozioni.txt ciascun nome letto seguito da ADOTTATO o NON ADOTTATO in base all'avvenuta adozione. Il programma sfrutta una funzione (già data) con il seguente prototipo: int adottato(char*); che prende in input il nome del cane e restituisce 1 se il cane è stato adottato, 0 altrimenti. int main() FILE *fp1, *fp; char nome[10];

3 fp1 = fopen("cani.txt", "r"); fp = fopen("adozioni.txt", "w"); 3 if(fp1 == NULL fp == NULL) return -1; else while(fscanf(fp1, "%s", nome)!= EOF) fclose(fp1); fclose(fp); if(adottato(nome)) fprintf(fp, "%s %s \n", nome, "ADOTTATO"); else fprintf(fp, "%s %s \n", nome, "NON ADOTTATO"); punti 7 Siano dati i seguenti prototipi di funzione: int parolecrociate(char m[][], int r, int c, char dizionario[][], int n); int ricercaindizionario (char parola[], char dizionario[][], int n); in cui m è una matrice di r righe e c colonne, dizionario è un array contenente n stringhe e parola è una stringa. m è una matrice di caratteri utilizzata per rappresentare schemi del gioco delle parole crociate: 3

4 Ogni elemento di m contiene un carattere (per sempicità si considerino solo caratteri minuscoli) oppure il carattere convenzionale \0 per rappresentare la casella nera di separazione. int ricercaindizionario (char parola[], char dizionario[][], int n) int i; /* Il dizionario viene analizzato elemento per elemento; se l'elemento corrente e' uguale alla parola ricercata allora viene restituito 1*/ for (i=0; i<n; i++) if (strcmp(parola,dizionario[i])==0) return 1; /* Si e' giunti alla fine del dizionario e non e' stata trovata la parola da ricercare, la funzione restituisce 0*/ Se il dizionario e ordinato e sufficiente sostituire la condizione del for con la seguente: i<n && (strcmp(parola,dizionario[i])<=0) 4 Si fornisca l implementazione di ricercaindizionario che restituisce 1 se la parola è presente in dizionario e 0 altrimenti (si faccia uso della funzione di libreria int strcmp(char *s1, char *s) che restituisce un valore positivo se s1 è maggiore di s negativo se s is maggiore di s1 e 0 in caso di uguaglianza). Come cambia l implementazione della funzione se si assume che l array dizionario è ordinato? punti 7 Si fornisca l implementazione della funzione parolecrociate che restituisce 1 se tutte le parole incluse nella matrice m compaiono in dizionario e 0 in caso contrario. Si faccia uso della funzione ricercaindizionario implementata al punto precedente. Si assuma per semplicità che non possano comparire più caselle nere consecutive. int parolecrociate(char m[r][c], int r, int c, char dizionario[n][maxp], int n) int i, j;/*indici di scansione della matrice*/ int k;/*indice di scansione della parola da ricercare nel dizionario */ char p[maxp]; for (i=0; i<r; i++) k=0; /*Scansione della matrice per righe */ for (j=0; j<c; j++) 4

5 5 if (m[i][j]=='\0') /*Se viene trovatoil terminatore*/ p[k]='\0'; if (ricercaindizionario(p,dizionario,n)==0)/* Si la parola non e' presente la funzione termina con 0*/ k=0; else /*viene effettuata la copia del carattere corrente nella parola di appoggio*/ p[k++]=m[i][j]; si /* si e' giunti a fine riga, si effettua la ricerca della parola sin qui determinata a cui deve aggiungere il terminatore*/ k++; p[k]='\0'; if (ricercaindizionario(p,dizionario,n)==0) /* Da aggiungere la porzione di codice analoga alla precedente che effettua la scansione della matrice per colonne */ /* Se si giunge alla fine della funzione, tutte le parole sono nel dizionario e si restituisce 1*/ return 1; punti 6 Sia dato il seguente schema logico: Barca (ID, Nome, VelocitàMax, Peso, IDProprietario) Proprietario(ID, Nome, Cognome, Nazionalità, DataNascita) Porto(Nome, Estensione, Città) Ormeggio(IDBarca, NomePorto, DataInizio,DataFine) Vincoli di integrità referenziale tra: Barca.IDProprietario e Proprietario.ID Ormeggio.IDBarca e Barca.ID Ormeggio.NomePorto e Porto.Nome Indicare le chiavi primarie ed i vincoli di integrità referenziale. Fornire in SQL le seguenti query: 5

6 a) Elencare i proprietari di nazionalità italiana che hanno ormeggiato la propria barca presso il porto di Nizza nel 011 b) Determinare i proprietari di nazionalità francese nati nel 1973 c) Elencare il nome delle barche ed i relativi proprietari che sono state ormeggiate nel 011 presso il porto di Valencia per un periodo consecutivo superiore a 15 giorni. 6 a) SELECT Proprietario.* FROM Barca, Proprietario,Porto,Ormeggio WHERE Ormeggio.IDBarca=Barca.ID and NomePorto=Porto.Nome and IDProprietario=Proprietario.ID and Città= Nizza and DataInizio >=1/1/011 b) SELECT * FROM Proprietario WHERE DataNascita between 1/1/1973 and 31//1973 and Nazionalità= Francese c) SELECT Barca.Nome, Cognome, Poprietario.Nome FROM Barca, Proprietario,Porto,Ormeggio WHERE Ormeggio.IDBarca=Barca.ID and NomePorto=Porto.Nome and IDProprietario=Proprietario.ID and Città= Valencia and DataInizio >=1/1/011 and DataFine <=31/1/011 and DataFine-DataInizio>15 6

1 (4) 2 (4) 3 (12) 4 (6) 5 (6)

1 (4) 2 (4) 3 (12) 4 (6) 5 (6) CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B, C Anno Accademico 2016-2017 Proff. Danilo ARDAGNA Prima Prova in Itinere 4.5.2017 Cognome Nome Matricola Firma Durata: 2h Valutazioni

Dettagli

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

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009 Esercizio 1 (6 punti) Date le seguenti strutture dati: int elementi[5]; int numeroelementi; Vettore; int elementi[5][5]; int numerorighe; int numerocolonne; Matrice; Fondamenti di Informatica 2 Simulazione

Dettagli

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Matricola Nome Cog Firma Es.1 Es.2 Es.3 Es.4 Es.5 Tot. Esercizio 1 (6 punti) Data la seguente struttura dati: typedef struct{ int elementi[5][5]; int numerorighe; int numerocolonne; Matrice; Fondamenti

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da

Dettagli

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme

Dettagli

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/2002-5 febbraio 2003 -A

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/2002-5 febbraio 2003 -A Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/2002-5 febbraio 2003 -A COGNOME: NOME: MATRICOLA: Istruzioni: Scrivere solo sui

Dettagli

I files in C. A cura del prof. Ghezzi

I files in C. A cura del prof. Ghezzi I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files

Dettagli

Lab 10 Gestione file di testo

Lab 10 Gestione file di testo Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 10 Gestione file di testo Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Appello di Informatica B

Appello di Informatica B Politecnico di Milano Facoltà di Ingegneria Industriale 19 febbraio 2004 Appello di Informatica B Prof. Angelo Morzenti - Prof. Vincenzo Martena Cognome e nome: Matricola: Tipo di prova: recupero I prova

Dettagli

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Dettagli

Lab 11 Gestione file di testo"

Lab 11 Gestione file di testo Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 11 Gestione file di testo" Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome

Dettagli

Lezione 5 Sottoarray di somma massima

Lezione 5 Sottoarray di somma massima Lezione 5 Sottoarray di somma massima Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 My strcat 1 Esercizio Implementare

Dettagli

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

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

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi,

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Problem solving avanzato

Problem solving avanzato Problem solving avanzato Formulazione del problema Struttura dati e algoritmo Il programma 2 26 Politecnico di Torino 1 Dati in input (1/4) Sono dati due file di testo, contenenti le informazioni sulle

Dettagli

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA Anno scolastico Lab informatica AULA n 35 Data inizio svolgimento Progr. relazione primo trimestre secondo pentamestre Cognome e Nome DATI DELLO STUDENTE

Dettagli

Appello di Fondamenti di Informatica 12/09/2017

Appello di Fondamenti di Informatica 12/09/2017 Nome ognome Matricola Firma Traccia 1 Spazio Riservato alla ommissione Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale Appello di Fondamenti di Informatica 12/09/2017 Ingegneria Meccanica

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Dettagli

Esercizio 1 Liste: calcolo perimetro di un poligono

Esercizio 1 Liste: calcolo perimetro di un poligono Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Array multidimensionali e stringhe

Array multidimensionali e stringhe Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi

Dettagli