Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Documenti analoghi
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

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

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

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

Informatica B Allievi Meccanici con cognome da Cl a L Recupero della I prova intermedia 26/02/01 Prof. Elisabetta Di Nitto. Cognome Nome Matricola

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

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

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

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica (ICA-LC) [083668]

Prova in itinere del 20 Novembre 2013 RIGA COLONNA MATRICOLA

Informatica B Prof. Di Nitto, Morzenti Prova del 18 novembre 2004 Cognome e Nome... Numero Matricola... (in stampatello)

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 10 Novembre 2009 COGNOME E NOME RIGA COLONNA MATRICOLA

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2003/ novembre 2003

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

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 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 10 Novembre 2009 COGNOME E NOME RIGA COLONNA MATRICOLA

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

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

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

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Politecnico di Milano Facoltà di Ingegneria Milano Leonardo A.A. 2007/08

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

Esercizio 1: media di numeri reali (uso funzioni e struct)

RIGA COLONNA MATRICOLA

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

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

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

Esercizio 1: parole nel testo

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C e diagrammi a blocchi. Preparazione prima prova intermedia

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri. Fondamenti di Informatica I prova in itinere

RIGA COLONNA MATRICOLA

Tutorato Elementi di Informatica 2018

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Esercizi. La funzione swapint() primo tentativo

Spazio riservato ai docenti

FONDAMENTI DI INFORMATICA

NOTA: I codici proposti sono solo una delle possibile soluzioni, non sono da intendersi come unica soluzione possibile o corretta

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

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

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

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri. Fondamenti di Informatica I prova in itinere

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

FONDAMENTI DI INFORMATICA

Il linguaggio C. Puntatori e dintorni

Elementi di Informatica e Programmazione PPING 15 giugno 2010 Non saranno corretti elaborati scritti confusamente o con grafia difficilmente leggibile

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

Struttura dei programmi C

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Esercizi. Filtraggio

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

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

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2005/ novembre 2006

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

Fondamenti di Informatica 2

cout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;

Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

COGNOME: NOME: MATRICOLA:

Esercizi Programmazione I

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande / VERSIONE 1

Fondamenti di Informatica 2

INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA. MODULO DI INFORMATICA Prof. Stefano Gaburri e Prof. Gianluca Palermo. Prova del 12 Luglio 2010

Fondamenti di Informatica

Fondamenti di Informatica 2

Prova di recupero di Informatica B Corsi di Laurea in Ingegneria Meccanica prof. Francesco Amigoni 20 febbraio 2004

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

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 20 Febbraio 2014 COGNOME E NOME

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

Fondamenti di Informatica 2

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

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Informatica (ICA-LC) [083668] Informatica [060054] Informatica B [079904] Prof. P. Plebani Allievi Ingegneria Civile e Ambientale

Prof. Massimiliano Giacomin 22 dicembre NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli

Introduzione al C. Lez. 2 Funzioni e Puntatori

Elementi di Informatica e Programmazione Allievi Ingegneria Informatica, Elettronica e delle Telecomunicazioni, Automazione Industriale

Introduzione al C. Lez. 2. Funzioni e Puntatori

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

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

RIGA COLONNA MATRICOLA

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

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

Informatica A. Istruzioni

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 3 Febbraio 2009 COGNOME E NOME RIGA COLONNA MATRICOLA

Fondamenti di Informatica 2

Esame di Informatica Generale 9 CFU 19 Aprile 2011 Professori: Carulli, Fiorino, Mazzei

Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008

TUTORAGGIO INFORMATICA Settimana 2

Esercizi. FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo. Funzioni

Programmazione di base

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

Introduzione alla Ricorsione

INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA. MODULO DI INFORMATICA Prof. Stefano Gaburri e Prof. Gianluca Palermo. Prova del 28 Giugno 2010

Transcript:

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME 13 novembre 2006 RIGA COLONNA MATRICOLA Il presente plico pinzato, composto di sei fogli, deve essere debitamente compilato con cognome, nome, numero di matricola, posizione durante lo scritto (comunicata dal docente), e deve essere firmato. I compiti non compilati, non firmati o con fogli mancanti non saranno considerati validi e quindi non saranno corretti. Sarà valutato solo quanto scritto su questi fogli. Sul tavolo non devono essere presenti telefoni cellulari, PDA o computer di qualsiasi tipo. FIRMA

Esercizio 1 (3 punti). Si consideri il seguente programma in linguaggio C: #include <stdio.h> void s1(int a1, int a2) int tmp; if(a1 > a2) tmp = a1; a1 = a2; a2 = tmp; void s2(int *a1, int *a2) int tmp; if(*a1 > *a2) tmp = *a1; *a1 = *a2; *a2 = tmp; void main() int x = 10; int y = 12; s1(x, y); printf( x=%d, y=%d\n, x, y); s2(&y, &x); printf( x=%d, y=%d\n, x, y); s2(&x, &y); printf( x=%d, y=%d\n, x, y); s2(&y, &y); printf( x=%d, y=%d\n, x, y); Si risponda alle seguenti domande: a. Che cosa viene stampato a video dalle quattro printf presenti nel main? b. Qual è il compito assolto da ciascun sottoprogramma? c. Per ogni chiamata di un sottoprogramma, si disegnino gli ambienti di esecuzione del main e del sottoprogramma nel momento in cui il controllo viene ceduto dal main al sottoprogramma (cioè dopo il passaggio dei parametri). a. Le printf stampano a video le seguenti informazioni: x=10, y=12 x=12, y=10 x=10, y=12 x=10, y=12 b. s2 scambia i valori delle variabili puntate dai due parametri nel caso in cui il valore della variabile puntata dal primo parametro sia maggiore del valore della variabile puntata dal secondo parametro. Il sottoprogramma s1 appare simile ad s2, ma in realtà non sortisce nessun effetto sulle variabili del chiamante. c. Ambienti di esecuzione:

Esercizio 2 (3 punti). Definire in linguaggio C un tipo di dato ArchivioDischi che rappresenti un insieme di dischi dei freni per motociclette. Ogni disco è caratterizzato dal diametro, dallo spessore, dal materiale, da una casa costruttrice e da un numero seriale. Dichiarare una variabile ad di tipo ArchivioDischi. Scrivere poi un frammento di programma in linguaggio C che stampa a video le case costruttrici e i numeri seriali dei dischi contenuti in ad con diametro maggiore di 20cm e con spessore minore di 4mm. Il programma deve anche stampare a video il numero dei dischi contenuti in ad che soddisfano le condizioni sopra riportate. Si assuma che in ad siano già stati immessi dei dati. #define MAX_STR 30; /* lunghezza massima delle stringhe */ #define MAX_DISCHI 100; /* numero massimo di dischi che il programma può gestire */ typedef struct float diametro; /* diametro del disco in cm */ float spessore; /* spessore del disco in cm */ char materiale[max_str]; char casacostruttrice[max_str]; unsigned long numeroseriale; Disco; typedef struct Disco arch[max_dischi]; int ndischi; ArchivioDischi; void main() int cont; /* contatore dei dischi che soddisfano le condizioni */ int i; ArchivioDischi ad;.. cont = 0; for(i=0; i<ad.ndischi; i++) if( (ad.arch[i].diametro > 20.0) && (ad.arch[i].spessore < 0.4) ) printf( %s %d\n, ad.arch[i].casacostruttrice, ad.arch[i].numeroseriale); cont++; printf( %d, cont);...

Esercizio 3 (3 punti). Date le seguenti dichiarazioni in linguaggio C: typedef char Parola[30]; typedef Parola ArrayParole[100]; void main() ArrayParole ap; int nparole; /* numero parole contenute in ap */ Scrivere una funzione in linguaggio C che riceve come parametri di ingresso un array di parole e il numero di parole contenute nell array e che restituisce il numero di caratteri della parola più lunga che inizia e termina con lo stesso carattere. Scrivere un frammento del main che contenga una chiamata alla funzione, usando come parametri attuali ap e nparole. int PiuLunga(ArrayParole parole, int n) int i; int lung; /* numero di caratteri della parola più lunga che inizia e termina con lo stesso carattere */ int ncar; /* numero di caratteri della parola attualmente analizzata */ lung = 0; for(i=0; i<n; i++) ncar = strlen(parole[i]); if(parole[i][0] == parole[i][ncar - 1]) if(ncar > lung) lung = ncar; return lung; Possibile chiamata alla funzione printf( %d, PiuLunga(ap,nparole) );

Esercizio 4 (3 punti). Assumendo di avere a disposizione una macchina di Von Neumann con una dimensione della parola di memoria pari a 12 bit e con codici operativi delle istruzioni dati dalla seguente tabella: leggi da tastiera un valore e ponilo in una cella 0100 stampa a video il contenuto di una cella 0101 carica il registro A con il contenuto di una cella 0000 carica il registro B con il contenuto di una cella 0001 somma i contenuti dei registri A e B 0111 moltiplica i contenuti dei registri A e B 1001 immagazzina il contenuto del registro A in una cella 0010 salta se il contenuto del registro A è 0 (jump=0) 1000 salta senza condizioni 1100 halt 1111 Scrivere un programma in linguaggio macchina che produca lo stesso risultato del seguente frammento di programma in linguaggio C: int x, y; scanf( %d, &x); scanf( %d, &y); if(x*y == 0) printf( %d, x+y); else printf( %d, y); INDIRIZZO CELLA CONTENUTO COMMENTO 0 (00000000) 0100 00001101 leggi da tastiera x 1 (00000001) 0100 00001110 leggi da tastiera y 2 (00000010) 0000 00001101 carica x nel registro A 3 (00000011) 0001 00001110 carica y nel registro B 4 (00000100) 1001 00000000 moltiplica il contenuto di A e B (risultato in A) 5 (00000101) 1000 00001000 se A*B è 0, salta all istruzione nella cella 8 6 (00000110) 0101 00001110 stampa a video y (contenuto nella cella 1) 7 (00000111) 1111 00000000 halt 8 (00001000) 0000 00001101 carica x nel registro A 9 (00001001) 0111 00000000 somma il contenuto di A e B (risultato in A) 10 (00001010) 0010 00001101 immagazzina in contenuto di A in x 11 (00001011) 0101 00001101 stampa a video il contenuto di x 12 (00001100) 1111 00000000 halt 13 (00001101) cella di memoria corrispondente a x 14 (00001110) cella di memoria corrispondente a y

Esercizio 5 (2 punti). Dati i numeri interi P1= 61 e P2=59: 1. indicare il numero minimo N1 di bit necessari per rappresentare il solo P1 in complemento a 2; 2. indicare il numero minimo N2 di bit necessari per rappresentare il solo P2 in complemento a 2; 3. indicare il numero N di bit necessari per rappresentare sia P1 che P2 in complemento a 2; 4. trasformare entrambi i numeri in complemento a 2 su N bit ed eseguire quindi la somma algebrica P1 + P2 e la sottrazione P1 P2; 5. dopo aver eseguito la somma, indicare se essa ha generato riporto (ribocco), overflow, entrambi, nessuno dei due. Si indichino tutti i passaggi svolti. Le soluzioni prive di passaggi non verranno prese in considerazione. Dati N bit, è possibile rappresentare i numeri interi P in complemento a 2 compresi nel seguente intervallo: -2 (N-1) <= P <= +2 (N-1) -1. 1) N1=7. Infatti: -2 6 <= -61 <= +2 6-1 cioè -64<= -61 <= +63 2) N2=7. Infatti: -2 6 <= +59 <= +2 6-1 cioè -64<= +59 <= +63 3) N1= N2=N=7. 4) -61<0 allora -61 (compl2) = (128-61 ) = 67 (naturalebase 2) 67 : 2 = 33 1 33 : 2 = 16 1 16 : 2 = 8 0 8 : 2 = 4 0 4 : 2 = 2 0 2 : 2 = 1 0 1 : 2 = 0 1, quindi -61 su 7 bit = 1000011 +59>0 allora +59 (compl2) = 59 (naturalebase 2) 59 : 2 = 29 1 29 : 2 = 14 1 14 : 2 = 7 0 7 : 2 = 3 1 3 : 2 = 1 1 1 : 2 = 0 1, quindi +59 su 7 bit = 0111011 Somma: 1 0 0 0 0 1 1 + 0 1 1 1 0 1 1 = 1 1 1 1 1 1 0 (-2) Differenza: -59<0 allora -59 (compl2) = (128 - -59 ) (naturalebase 2) = 69 (naturalebase 2) 69 : 2 = 34 1 34 : 2 = 17 0 17 : 2 = 8 1 8 : 2 = 4 0 4 : 2 = 2 0 2 : 2 = 1 0 1 : 2 = 0 1, quindi -59 su 7 bit = 1000101

1 0 0 0 0 1 1 + 1 0 0 0 1 0 1 = (1) 0 0 0 1 0 0 0 Si può notare che i due operandi hanno lo stesso segno (negativo) e che il segno del risultato è diverso dal segno dei due operandi. Questo ci dice che si è verificato un overflow. 5) Il risultato ottenuto dalla somma algebrica (-2) è rappresentabile su 7 bit. Di conseguenza, non è possibile avere overflow. Inoltre, il risultato è senza riporto. Il risultato della differenza, invece, NON è rappresentabile su 7 bit. Dunque si ha overflow. Inoltre, il risultato ha generato un riporto.