82
1 A.A. 2014/2015 Docente: A. Saetti Elementi di informatica e Programmazione Elementi di informatica e programmazione – Università di Brescia Corsi di Laurea di Ing. Informatica, Ing. Elettronica e delle Telecomunicazioni, Ing. dell'Automazione Industriale Alessandro Saetti Marco Sechi e Alessandro Bugatti (email: {alessandro.saetti,marco.sechi,alessandro.bugatti}@unibs.it) Università degli Studi di Brescia A.A. 2014/2015

Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

Embed Size (px)

Citation preview

Page 1: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

1A.A. 2014/2015Docente: A. Saetti

Elementi di informatica e Programmazione

Elementi di informatica e programmazione – Università di Brescia

Corsi di Laurea di Ing. Informatica, Ing. Elettronica e delle Telecomunicazioni, Ing. dell'Automazione Industriale

Alessandro SaettiMarco Sechi e Alessandro Bugatti

(email: {alessandro.saetti,marco.sechi,alessandro.bugatti}@unibs.it)

Università degli Studi di BresciaA.A. 2014/2015

Page 2: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

2A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

FAC SIMILEESAME

Page 3: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

3A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

PARTE IFAC SIMILE ESAME

Page 4: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

4A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

Page 5: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

5A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

55

DOMANDE RISPOSTE CHIUSE

X

Page 6: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

6A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

1 bit 0, 12 bit 0, 1, 2, 3 (00, 01, 10, 11)3 bit 0, 1, 2, … 23-1 (000, 001, 010, 011, 100, 101, 110, 111)

…K bit 0 … 2k-1

2 4 8 16 32 64

55

26 6

DOMANDE RISPOSTE CHIUSE

X

Page 7: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

7A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Struttura semplificata di una unità centrale di elaborazione e dei suoi collegamenti con le altre unità funzionali

DOMANDE RISPOSTE CHIUSE

X

Page 8: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

8A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

La cache è costituita da SRAM (acronimo di Static Random Access Memory). E' un tipo di RAM volatile che non necessita di refresh. La necessità di usare molti componenti per cella le rende però più costose delle DRAM (usate per la ram). Le celle di una SRAM sono costituite sostanzialmente da un particolare circuito

X

Page 9: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

9A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

X

V[]

XX=

V[i]=

I=

Page 10: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

10A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

X

I

I=I=

F()

Copio il valore

Page 11: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

11A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

X

P[1].x=P[1].x=

F()

P[1].x=P[1].x=

Page 12: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

12A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

X

Page 13: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

13A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE CHIUSE

X

Page 14: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

14A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

Quesito 1: Visualizzare i divisori di un intero acquisito da tastiera.

Quesito 2: Visualizzare i primi 1000 numeri con le cifre invertite.

Page 15: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

15A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 1 Visualizzare i divisori di un intero acquisito da tastiera.

Page 16: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

16A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

1234 10 4

1234 10 3123

Quesito 2: Visualizzare i primi 1000 numeri con le cifre invertite.

10 4

123 10 312 10 4 2

112 10 31 4 2

Per stampare le cifre in modo rovesciato posso seguire questa procedura

10

1 10 0 FINE

Page 17: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

17A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

Page 18: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

18A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 3: Indicare i bit di segno, mantissa ed esponente della codifica del numero 12.683 in notazione scientifica normalizzata a base 2, definita utilizzando 8 bit per la mantissa, 4 bit per l’esponente e codificando l’esponente in complemento a 2.

12 . 683Codifica di 12 1100 (4 bit) La mantissa è di 8 per cui arrivo alla quarta cifra

1100 . 1010

0.11001010 x 24Mantissa

0Positivo segno

Esponente

0100

Page 19: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

19A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 4: Si supponga che la memoria centrale del calcolatore contenga 3 processi P1, P2 e P3; - I tre processi siano inizialmente in stato “pronto” e siano ordinati nel seguente modo nella coda: P1,

P2, P3 ; - Il quanto di tempo della CPU sia di 10 msec;- Il processo P1 esegua una operazione di output che dura 7 msec dopo essere stato in esecuzione per

1msec; - P2 esegua un’operazione di input che dura 20msec dopo 5 msec di esecuzione; - P3 non esegua operazioni di I/O; - il tempo di esecuzione complessivo richiesto da ogni processo sia di 10 msec. Utilizzando un Gantt Chart si indichi per ogni processo quando e quali stati assume prima di terminare.

Page 20: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

20A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 5 Si consideri un calcolatore con un banco di 16 registri ad uso generico, parole di memoria di 16 bit ed istruzioni del linguaggio macchina con 4 bit di codice operativo. Scrivere il programma Assembly che incrementa di 1 unità i 30 numeri naturali presenti in un’area contigua della memoria centrale, supponendo che ciascun naturale sia codificato con 2 byte e che il primo byte dell’area di memoria abbia indirizzo uguale a 200. È consentito l’uso delle seguenti istruzioni Assembly.

Possibili formati di codifica delle nostre istruzioni assembler sono:LOADiL RX, VALLOADiH RY, VAL

ADD RX, RY, RZ

LOAD RX, RYSTORE RX, RY

B LABEL

END

Quesito 5

Page 21: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

21A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

R3LOAD

STORE

21

21

22 R1

R2

Incremento R3

22

21 22

1

2

3

A

200

260B

4

202

Quesito 5

Page 22: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

22A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONELa sequenza dei passaggi che il nostro programma deve svolgere è la seguente:

LOADiL R1 11001000LOADiH R1 00000000

LOADiL R2 00000100LOADiH R2 00000001

Imposto come posizione di partenza 200 (in R1)

Imposto come posizione di arrivo 260 (in R2)

FINE

Non sono giunto in fondo (R1<R2)

NO

SI

Leggo il contenuto indicato in R1e lo sistemo nel registro R3

Incremento il contenuto di R3

Riscrivo il  nuovo contenuto di R3nella cella di memoria indicata da R1

Mi sposto al numero successivoincrementando R1 di 2

A

B

1

2

3

4

Quesito 5

Page 23: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

23A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTELa memoria centrale non è altro che un insieme di celle accessibili mediante un indirizzo:

Per caricare nel registro R3 il contenuto della cella indicata nel registro R1 (inizialmente contenente l’indirizzo 200) devo eseguire l’istruzione LOAD sotto indicata:

LOAD R3 R1

13

13

OPERAZIONE DI LETTURA IN MEMORIA

Leggo il contenuto indicato in R1e lo sistemo nel registro R3

Quesito 5

Page 24: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

24A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

Per incrementare il contenuto di un registro (nel nostro caso R3) possiamo usare la costante 0001

ADD R3 R3 0001

13+…

Si poteva anche inizializzare un registro non ancora usato (esempio R4) con il valore 1 …

Incremento il contenuto di R3

ADD R3 R3 R4

LOADiL R4 00000001LOADiH R4 00000000

… e poi utilizzare l’istruzione ADD a fianco

14 Incremento

1

Quesito 5

Page 25: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

25A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

Per scrivere il contenuto del registro R3nella cella indicata nel registro R1 mi basta eseguire la seguente STORE

STORE R1, R3

14

14

OPERAZIONE DI SCRITTURA IN MEMORIA:

Riscrivo il  nuovo contenuto di R3nella cella di memoria indicata da R1

Quesito 5

Page 26: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

26A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTE

Per spostarsi alla cifra successiva occorre spostarsi di 2 byte (il numero naturale è codificato con 2 byte)

ADD R1, R1, 0010

202

14

Mi sposto al numero successivoincrementando R1 di 2

200

Quesito 5

Page 27: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

27A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEAbbiamo tutto quello che ci serve per implementare la soluzione

Imposto come posizione di partenza 200 (in R1)

Imposto come posizione di arrivo 260 (in R2)

FINE

Non sono giunto in fondo (R1<R2)

NO

SI

Leggo il contenuto indicato in R1e lo sistemo nel registro R3

Incremento il contenuto di R3

Riscrivo il  nuovo contenuto di R3nella cella di memoria indicata da R1

Mi sposto al numero successivoincrementando R1 di 2

LOADiL R1 11001000LOADiH R1 00000000LOADiL R2 00000100LOADiH R2 00000001

CICLO: LOAD R3 R1ADD R3 R3 0001STORE R1 R3ADD R1 R1 0010BLT R1 R2 CICLO

FINE: END

R1=200 R2=260

R3=

Quesito 5

Page 28: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

28A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTESeguendo un procedimento leggermente diverso avremo avuto invece la seguente codifica

LOADiL R1 11001000LOADiH R1 00000000LOADiL R2 00000100LOADiH R2 00000001

INIZIO: BLT R1 R2 CICLOB FINE

CICLO: LOAD R3 R1ADD R3 R3 0001STORE R1 R3ADD R1 R1 0010B INIZIO

FINE: END

R1=

R2=

R3=

Imposto come posizione di partenza 200 (in R1)

Imposto come posizione di arrivo 260 (in R2)

FINE

Se non sono giunto in fondo (R1<R2) NO

SILeggo il contenuto indicato in R1

e lo sistemo nel registro R3

Incremento il contenuto di R3

Riscrivo il  nuovo contenuto di R3nella cella di memoria indicata da R1

Mi sposto al numero successivoincrementando R1 di 2

Quesito 5

Page 29: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

29A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

PARTE II - PROGRAMMAZIONEFACSIMILE ESERCITAZIONE

Page 30: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

30A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Predisporre opportunamente le

sezioni della funzione in modo

adatto alla scrittura su carta

SEZIONE DICHIARAZIONE VARIABILI/ INIZIALIZZAZIONE/INPUT

E' la sezione più corposa predisporre uno spazio sufficientemente ampio

Inserire nella parte più in basso dello spazio a disposizione le eventuali istruzioni di output

SEZIONE CORPO FUNZIONE

SEZIONE OUTPUT / PRESENTAZIONE RISULTATI

Inserire nella parte più in alto dello spazio a disposizione, man mano che servono, le variabili 

necessarie al corpo della funzione

SEZIONE DICHIARAZIONE VARIABILI

Inseriamo qui le valorizzazioni iniziali che consentono all’algoritmo implementato nella 

funzione di operare correttamente

SEZIONE DICHIARAZIONE VARIABILI

TipoRestituito NomeFunzione(parametri){

return(Valore Restituito);}

INTESTAZIONE DELLA FUNZIONE

VALORI DI RITORNO

Page 31: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

31A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Come nei flow chart occorre cercare una

predisposizione spaziale adatta alla presentazione della soluzione su carta.

SEZIONE DICHIARAZIONE VARIABILI/ INIZIALIZZAZIONE/INPUT

E' la sezione più corposa predisporre uno spazio sufficientemente ampio

Inserire nella parte più in basso dello spazio a disposizione le istruzioni di output

SEZIONE ALGORITMO

SEZIONE OUTPUT / PRESENTAZIONE RISULTATI

Inserire nella parte più in alto dello spazio a disposizione, man mano che servono, le variabili 

necessarie alla sezione algoritmo

SEZIONE DICHIARAZIONE VARIABILI

Inseriamo qui le valorizzazioni iniziali che consentono all’algoritmo applicato di funzionare

SEZIONE INIZIALIZZAZIONE / INPUT

#include <stdio.h>#include <stdlib.h>

int main(){

system("Pause");return(0);

}

Page 32: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

32A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONE

Quesito 1: Visualizzare la quantità di divisori di 10 numeri naturali acquisiti da tastiera. Per svolgere questo compito si definisca ed utilizzi una funzione che produca la quantità di divisori di un dato intero.

Page 33: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

33A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

#include <stdio.h>

int divisori(int num){

int i, div = 0;for (i = 1; i <= num; i++)

if (num % i == 0) div = div + 1;return div;

}

int main(void){

int i, x;for (i = 0; i <= 10; i++){

scanf("%d", &x);printf("%d\n", divisori(x));

}return 0;

}

Quesito 1 DOMANDE DI PROGRAMMAZIONE

Page 34: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

34A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONEQuesito 2: Acquisire 5 numeri naturali e successivamente per ciascuno di questi numeri visualizzare la x-esima potenza di 2. Per svolgere questo compito si definisca ed utilizzi una funzione che per ciascun intero x in un dato vettore di n variabili intere visualizzi la x-esima potenza di 2. È vietato l’utilizzo delle funzionalità disponibili tramite la libreria math.h.

Page 35: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

35A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 2 DOMANDE DI PROGRAMMAZIONE

Pot 120

Pot Pot

Pot=1

21

21Pot=Pot*2

Pot Pot 22

22Pot=Pot*2

1

2

4

Pot Pot 22n-1

2nPot=Pot*2

2n

i

i

i

1

2

n

Calcolo della potenza n‐esima di 2 mediante iterazione

Page 36: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

36A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 2 DOMANDE DI PROGRAMMAZIONE

#include <stdio.h>

void potenza(int v[], int n){

int i, j, pot;for (i = 0; i < n; i++){

pot = 1;for (j = 1; j <= v[i]; j++)

pot = pot * 2;printf("%d\n", pot);

}}

int main(void){

int vett[5], i;for (i = 0; i < 5; i++) scanf("%d", &vett[i]);potenza(vett,5);return 0;

}

Page 37: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

37A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONEQuesito 3: Acquisire da tastiera 10 date del calendario e successivamente visualizzare il numero di date acquisite che precedono l’ultima data acquisita. Per svolgere questo compito si dichiari una nuova tipologia di dati adatta ai fini dell’esercizio e si definisca ed utilizzi due funzioni C con le seguenti finalità:• Produrre 1 se una data del calendario precede una seconda data del calendario.• Produrre la quantità di date del calendario in un data sequenza di n date del calendario che precedono una data del calendario.

Page 38: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

38A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Iniziamo ad analizzare la prima funzione richiesta. Dovrà avere uno schema di questo tipo

ACQUISIRE LA DATA 1 E LA DATA 2

CORPO DELLA FUNZIONE

RESTITUIRE 1 SE DATA1<DATA2 ALTRIMENTI 0

Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione . . .

int primaDi(Data d1, Data d2){

// dichiarazione variabili,inizializzazione// CORPO FUNZIONE ...Return (0 oppure 1);

}

1 se la Data1 è precedente alla Data2 altrimenti 0

typedef struct {

int g, m, a;} Data;

. . . e definire la struttura dati necessaria

D1

D2

Quesito 3 DOMANDE DI PROGRAMMAZIONE

Page 39: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

39A.A. 2014/2015

CORPO DELLA FUNZIONE

… altrimenti se i mesi nelle due date coincidono …

… altrimenti se gli anni delle due date coincidono …

Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Analizziamo ora il corpo della funzione PrimaDi()

Ho considerato tutte le casistiche possibili percui la 1^ data non è precedente alla 2^ data

if (d1.a < d2.a) return 1

Se l’anno della 1^ data è minore dell’anno della 2^ data allora la 1^ data è sicuramente precedente

else if (d1.a == d2.a){

}

… valuto il mese e se quello della 1^ data è  inferiorea quello della 2^ data allora la 1^data è 

sicuramente precedente

if (d1.m < d2.m) return 1;

… valuto i giorni e se quelli della 1^ datasono inferiori a quelli della 2^ data allora la 1^ data è 

sicuramente precedente

else if (d1.m == d2.m){

if (d1.g < d2.g) return 1;

return 0;

Quesito 3 DOMANDE DI PROGRAMMAZIONE

}

Page 40: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

40A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Iniziamo ora ad analizzare la seconda funzione richiesta.

ACQUISIRE LA DATA DI RIFERIMENTO,

L’ELENCO DELLE DATE E LA SUA NUMEROSITA’

CORPO DELLA FUNZIONE

RESTITUIRE IL NUMERO DI DATE PRECEDENTI ALLA

DATADI RIFERIMENTO

Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione . . .

int numPrecedenze(Data v[], int n, Data ref){

// DICHIARAZIONE VARIABILI// CORPO DELLA FUNZIONEreturn prec;

}

N

Numero di date[] precedenti a una data di riferimento (quindi un int)

Quesito 3 DOMANDE DI PROGRAMMAZIONE

Page 41: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

41A.A. 2014/2015

CORPO DELLA FUNZIONE

Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Esercizio 6Scrivere la dichiarazione C di un nuovo tipo di struttura dati che aggrega tre variabili intere che rappresentano rispettivamente l'ora, i minuti e i secondi di un determinato orario. Scrivere una funzione C che dati due

orari produce 1 se il primo orario è inferiore al secondo, 0 altrimenti. Scrivere una seconda funzione C che, sfruttando la precedente funzione, restituisca il numero di orari di un dato vettore di n variabili di tipo orario che precedono un orario acquisito da tastiera.

Analizziamo ora il corpo della funzione NumPrecedenze()

for (i=0 ; i < n ; i++){

int i;

Lo scorrimento degli elementi di un elenco richiede l’uso di una variabile contatore

Scorro l’array v[] dal primo all’ultimo elemento

if (primaDi(v[i], ref) == 1) prec = prec + 1

Se la data i‐esima v[i] è precedente alla datadi riferimento incremento la variabile che conteggia il numero di date precedenti

int prec;

int i;int prec=0;

Inserisco le variabili e poi eventualmente le inizializzo

int numPrecedenze(Data v[], int n, Data ref){

}

return prec;}

Page 42: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

42A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 2 DOMANDE DI PROGRAMMAZIONE#include <stdio.h>

typedef struct {int g, m, a;

} Data;

int primaDi(Data d1, Data d2){

if (d1.a < d2.a) return 1;

else if (d1.a == d2.a){

if (d1.m < d2.m) return 1;

else if (d1.m == d2.m){

if (d1.g < d2.g) return 1;

}}return 0;

}

Page 43: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

43A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 2 DOMANDE DI PROGRAMMAZIONE

int numPrecedenze(Data v[], int n, Data ref){

int i, prec = 0;for (i = 0; i < n; i++)

if (primaDi(v[i], ref) == 1) prec = prec + 1;

return prec;}

int main(void){

Data vett[10];int i;for (i = 0; i < 10; i++)

scanf("%d/%d/%d", &vett[i].g, &vett[i].m, &vett[i].a);printf("%d\n", numPrecedenze(vett, 9, vett[9]));return 0;

}

Page 44: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

44A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEULTERIORI ESEMPI FLOW CHART

Quesito 1: Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L’orario è costituito dalla coppia hh.mm

Quesito 2: Indicare se una matrice NxN di numeri è simmetrica (ovvero se è uguale alla sua trasposta). (2 cicli annidati). Si supponga che l’esecutore sia in grado di interpretare le operazioni riguardanti l’acquisizione di una intera matrice NxN (usare un blocco sottoprogramma).

Page 45: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

45A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 1: Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L’orario è costituito dalla coppia hh.mm

Alcuni passaggi possono essere «formalizzati» immediatamente nel simbolismo visto per i flow chart. Altri invece necessitano di un’ulteriore approfondimento che andremo via via ad analizzare

Inizialmente la parte di inizializzazione sembra superflua. Scrivendo la soluzione su carta conviene comunque lasciare dello spazio per questa sezione

Parte iterata

Leggo per 10 volte degli orari nella forma hh:mm

Lasciamo, visto che si scrive su carta, uno spazio sufficiente a contenere la parte iterata,

Page 46: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

46A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L’orario è costituito dalla coppia hh.mm (1 singolo ciclo)Quesito 1

Per valutare l’orario più vicino alle 12.00 devo sapere quale è la differenza minima (diff_minima) riscontrata nei precedenti orari … 

HHmin MMmin

HHNMMN

HHN>=12

differenza<diff_minima

SINO

diff_minima=differenzaHHmin=HHN

MMmin=MMN

NO

SI

differenza=(HHN‐12)*60+MMNdifferenza=(12‐HHN)*60‐MMN

Valuto se è il più vicino alle 12:00 fino a quel momentoValuto se è il più vicino alle 12:00 fino a quel momento

DOMANDE RISPOSTE APERTE

Page 47: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

47A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L’orario è costituito dalla coppia hh.mm (1 singolo ciclo)Quesito 1

… ma il primo orario letto con quale diff_minima deve essere messo a confronto ? 

Parte iterata

All’inizio devo impostare la variabile diff_minima con la massima differenza possibile ovvero 12*60+1. Questo assegnamento va posto nel blocco relativo all’inizializzazione dell’algoritmo.

diff_minima=12*60+1

DOMANDE RISPOSTE APERTE

Page 48: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

48A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Per ottimizzare la disposizione dei blocchi su un foglio di carta è consigliabile disporre gli elementi del flow chart  seguendo una disposizione spaziale che dia ampio spazio alla «parte iterata» che solitamente risulta essere quella più articolata.

Page 49: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

49A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L’orario è costituito dalla coppia hh.mm (1 singolo ciclo)Quesito 1Seguendo la disposizione spaziale consigliata otteniamo la soluzione finale

DOMANDE RISPOSTE APERTE

Page 50: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

50A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 2: Indicare se una matrice NxN di numeri è simmetrica (ovvero se è uguale alla sua trasposta). (2 cicli annidati). Si supponga che l’esecutore sia in grado di interpretare le operazioni riguardanti l’acquisizione di una intera matrice NxN (usare un blocco sottoprogramma).

Alcuni passaggi possono essere «formalizzati» immediatamente nel simbolismo visto per i flow chart. Altri invece necessitano di un’ulteriore approfondimento che andremo via via ad analizzare

Inizialmente la parte di inizializzazione sembra superflua. Scrivendo la soluzione su carta conviene comunque lasciare dello spazio per questa sezione

Loop esterno

Scorro per N volte le righe della matrice

Loop interno

Lascio in sospeso l’output del nostro algoritmo

Per ogni r-esima riga scorro per N volte le colonne della matrice

Page 51: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

51A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 2 Indicare se una matrice NxN di numeri è simmetrica ovvero è uguale alla sua trasposta. (2 cicli annidati)

… appena un elemento della matrice risulta diverso dal suo corrispondente trasposto la matrice non sarà più simmetrica!

MR,C!= MR,CSI

NOSimmetrica=0

Valuto se l’elemento M[R,C]!=M[C,R] e se si allora la matrice M non è simmetrica

Simmetrica==1 SINO

Enuncio se la matrice è simmetrica oppure no

«E’ simmetrica»

«Non è’ simmetrica»

Simmetrica=1Ipotizzo inizialmente che la mia matrice sia simmetrica

Sostituiamo i blocchetti contenenti la «descrizione informale»

12

1

3

DOMANDE RISPOSTE APERTE

Page 52: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

52A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Effettuando le opportune sostituzioni otteniamo la seguente soluzione

Quesito 2 Indicare se una matrice NxN di numeri è simmetrica ovvero è uguale alla sua trasposta. (2 cicli annidati)DOMANDE RISPOSTE APERTE

Page 53: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

53A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Per ottimizzare la disposizione dei blocchi su un foglio di carta è consigliabile disporre gli elementi del flow chart  seguendo una disposizione spaziale che dia ampio spazio alla «parte iterata» che solitamente risulta essere quella più articolata.

Parte iterata esterna

Page 54: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

54A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Seguendo la disposizione spaziale consigliata otteniamo la soluzione finaleQuesito 2 Indicare se una matrice NxN di numeri è simmetrica ovvero è uguale alla sua trasposta. (2 cicli annidati)

DOMANDE RISPOSTE APERTE

Page 55: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

55A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 3: Indicare i bit di segno, mantissa ed esponente della codifica del numero -0.3203125 in notazione scientifica normalizzata a base 2, definita utilizzando 8 bit per la mantissa, 4 bit per l’esponente e codificando l’esponente in complemento a 2.

-0 . 3203125

Codifica di 0 0 (1 bit)

La mantissa è di 8 per cui arrivo alla settima cifra

0 . 01010010.10100100 x 2-1

Mantissa

1Negativo segno

Esponente

1111

0001

Complemento i singoli bit

Aggiungo 1

1110

Normalizzo la rappresentazione

Page 56: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

56A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 4: Si supponga che la memoria centrale del calcolatore contenga 3 processi P1, P2 e P3; -I 3 processi siano inizialmente in stato “pronto” e siano ordinati nel seguente modo nella coda: P1, P2, P3 ; -Il quanto di tempo della CPU sia di 10 msec;-Il processo P1 esegua una operazione di output che dura 7 msec dopo essere stato in esecuzione per 1msec e questo per 2 volte; -P2 esegua un’operazione di input che dura 17msec dopo 5 msec di esecuzione; -P3 non esegua operazioni di I/O; -il tempo di esecuzione complessivo richiesto da ogni processo è rispettivamente: 4 msec. P1 - 10 msec. P2 e 20 msec. P3Utilizzando un Gantt Chart si indichi per ogni processo quando e quali stati assume prima di terminare.

Page 57: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

57A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE RISPOSTE APERTEQuesito 5 Si consideri un calcolatore con un banco di 16 registri ad uso generico, parole di memoria di 16 bit ed istruzioni del linguaggio macchina con 4 bit di codice operativo. Scrivere il programma Assembly che moltiplica due numeri naturali positivi presenti in un’area contigua della memoria centrale a partire dall’indirizzo 200. Supponiamo che ciascun naturale sia codificato con 2 byte e che il risultato venga scritto nell’area di memoria con indirizzo uguale a 300. È consentito l’uso delle seguenti istruzioni Assembly.

Page 58: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

58A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 5 DOMANDE RISPOSTE APERTE

R2

R3

R4

Moltiplico R2 * R3

LOAD

LOAD

STORE

Page 59: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

59A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

La sequenza dei passaggi che il nostro programma deve svolgere è la seguente:

LOADiL R1 11001000LOADiH R1 00000000LOAD R2 R1 ; R2 M[R1]

Imposto la posizione del secondo fattore (202 in R1)

FINE

Leggo il contenuto indicato in R1e lo sistemo nel registro R2

Scrivo il  nuovo contenuto di R4nella cella di memoria indicata da R1

Imposto la posizione del primo fattore (200 in R1)

Leggo il contenuto indicato in R1e lo sistemo nel registro R3

Calcolo il prodotto tra R3 e R2 e lo riverso in R4

Imposto la posizione in ram del risultato (300 in R1)

LOADiL R1 11001010LOADiH R1 00000000LOAD R3 R1 ; R3 M[R1]

LOADiL R1 00101100LOADiH R1 00000001STORE R1 R4 ; M[R1] R4

Quesito 5 DOMANDE RISPOSTE APERTE

END

Page 60: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

60A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 5 DOMANDE RISPOSTE APERTE

Non avendo a disposizione l’istruzione relativa al prodotto posso sostituirla con una somma multipla. In altre parole per implementare il prodotto M x N …

… sommo M volte il valore N

R2 R3

Rappresenta NRappresenta il prodotto P

R4

R3

1

R2

R5

R4

Rappresenta M

Rappresenta N

Rappresenta M

Page 61: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

61A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 5 DOMANDE RISPOSTE APERTE

Quindi per implementare il prodotto MxN (R2xR3) posso inizializzare un registro (esempio R4) con il valore 0 e successivamente, per M (R2) volte, aggiungere a R4 il valore N (R3). Per conteggiare il numero di somme multiple effettuate avrò bisogno di un ulteriore registro (R5).

0 5

…10

2

01 Ad ogni somma incremento R5

e solo quando diventa uguale a M‐1 (R2) smettoRappresenta il contatore

3Primo fattore M

Secondo fattore N

M-1

R5

R4 R3

R2

4

3

Rappresenta il risultato

Sommo ripetutamente a R4 il contenuto di R3 (N)

Page 62: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

62A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 5 DOMANDE RISPOSTE APERTE

1

Incremento il contatore R5 di 1 (R1)

Sommo il contenuto del registro R3 al contenutodel registro risultato R4

Azzero il registro (R4) che conterrà il risultato

Imposto a 0 il registro contatore R5

LOADiL R4 00000000LOADiH R4 000000002

LOADiL R5 00000000LOADiH R5 00000000

3 CICLO: ADD R4 R4 R3

ADD R5 R5 0001

NO

SINon ho finito ?

(R5<R2)

4

BLT R5 R2 CICLO ;(4)

Parto da 0 poiché l’istruzione di salto è basata sull’operatore di 

confronto «minore»

Calcolo il prodotto tra R3 e R2 e lo riverso in R4

Page 63: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

63A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 5 DOMANDE RISPOSTE APERTE

LOADiL R1 11001000 ; indirizzo 1^ fattore MLOADiH R1 00000000LOAD R2 R1 ; R2 M[R1]LOADiL R1 11001010 ; indirizzo 2^ fattore NLOADiH R1 00000000LOAD R3 R1 ; R3 M[R1]LOADiL R4 00000000 ; azzero il risultatoLOADiH R4 00000000LOADiL R5 00000000 ; contatoreLOADiH R5 00000000

CICLO: ADD R4 R4 R3ADD R5 R5 0001 ; incremento contatoreBLT R5 R2 CICLOLOADiL R1 00101100LOADiH R1 00000001STORE R1 R4 ; M[R1] R4END

R1= R2=3 R3=5 R4= R5=contatorerisultato2^ fattoreIndirizzo 1^ fattore

Page 64: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

64A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Quesito 5 DOMANDE RISPOSTE APERTE

1

Incremento il contatore R5 di 1 (R1)

FINE

Sommo il contenuto del registro R3 al contenutodel registro risultato R4

Azzero il registro (R4) che conterrà il risultato

Imposto a 0 il registro contatore R5

LOADiL R4 00000000LOADiH R4 00000000

2

LOADiL R5 00000000LOADiH R5 00000000

3 CICLO: ADD R4 R4 R3

ADD R5 R5 0001

NOSI

Non ho finito ?(R5<R2)

4

INIZIO: BLT R5 R2 CICLOB FINE

Calcolo il prodotto tra R3 e R2 e lo riverso in R4 Se N o M possono essere nulli il 

programma deve essere modificato in questo modo

B INIZIO

FINE: END

Page 65: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

65A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONE

Quesito 1: Visualizzare il numero di una sequenza di 10 numeri naturali che risulti più vicino alla loro media. Per svolgere questo compito si definisca ed utilizzi una funzione che dato un elenco di valori restituisca tale valore .

Page 66: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

66A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Il funzione C che dovremo implementare sarà caratterizzata da una struttura di questo tipo:

ACQUISIRE L’ELENCO DI VALORI IN UN VETTORE X[] E

LA SUA DIMENSIONE N

CORPO DELLA FUNZIONE

RESTITUIRE IL VALORE PIU’ VICINO ALLA MEDIA

N

Numero di X[i] più vicino alla media (quindi un double)

Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione

double NrPiuVicinoAllaMedia(double X[], int n){

// dichiarazione variabili,inizializzazione// CORPO FUNZIONE ...return piuvicino;

}

Quesito 1 DOMANDE DI PROGRAMMAZIONE

Page 67: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

67A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Continuiamo ad analizzare il corpo della nostra funzione

CALCOLO LA MEDIA

NrPiuVicinoAllaMedia(double X[], int n){

// dichiarazione variabili,inizializzazionedouble media, piuvicino, distanzaminima;int i;// CORPO FUNZIONE ...

// Restituzione risultatireturn piuvicino;

}

// B) Calcolo il valore + vicinopiuvicino=X[0];distanzaminima=fabs(X[0]-media);for (i=1 ; i<n ; i++){

if (fabs(X[i]-media)<distanzaminima){

piuvicino=X[i];distanzaminima=fabs(X[i]-media);

}}

// A) Calcolo la mediamedia=0;for (i=0; i<n ; i++)

media=media+X[i];media=media/n;

SCORRO L’ELENCO DEI VALORI, CALCOLO LA

DIFFERENZA E LOCALIZZO

L’ELEMENTO PIU’ VICINO

Quesito 1 DOMANDE DI PROGRAMMAZIONE

Page 68: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

68A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Scriviamo quindi il corpo  della nostra funzione.

double NrPiuVicinoAllaMedia(double X[], int n){

// Dichiarazione delle variabili /inizializzazionedouble media =0, piuvicino=X[0], distanzaminima;int i;// Corpo della funzione// A) Calcolo la mediafor (i=0; i<n ; i++)

media=media+X[i];media=media/n;printf("La media e': %.2f",media);// B) Calcolo il valore + vicinodistanzaminima=fabs(X[0]-media);for (i=1 ; i<n ; i++){

if (fabs(X[i]-media)<distanzaminima){

piuvicino=X[i];distanzaminima=fabs(X[i]-media);

}}// Restituzione risultatoreturn piuvicino;

}

Quesito 1 DOMANDE DI PROGRAMMAZIONE

Page 69: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

69A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Se si volesse poi testare la funzione appena prodotta possiamo inserirla all’interno del seguente programma C.

#include <stdio.h>#include <math.h>#define N 5double NrPiuVicinoAllaMedia(double X[], int n){

// Dichiarazione delle variabili /inizializzazionedouble media =0, piuvicino=X[0], distanzaminima;int i;// Corpo della funzione// A) Calcolo la mediafor (i=0; i<n ; i++)

media=media+X[i];media=media/n;printf("La media e': %.2f",media);// B) Calcolo il valore + vicinodistanzaminima=fabs(X[0]-media);for (i=1 ; i<n ; i++){

if (fabs(X[i]-media)<distanzaminima){

piuvicino=X[i];distanzaminima=fabs(X[i]-media);

}}// Restituzione risultatoreturn piuvicino;

}

int main(){

double X[N]={3, 7.3, 8.23, 3, 23.1};double risultato=NrPiuVicinoAllaMedia(X,N);printf("Il valore + vicino alla media e': %.2f",risultato);

}

Quesito 1 DOMANDE DI PROGRAMMAZIONE

Page 70: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

70A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONE

Quesito 2: Acquisire un elenco di 10 numeri naturali e successivamente restituirne la «moda» (il valore più frequente). Per svolgere questo compito si definisca ed utilizzi una funzione che dato vettore di n variabili intere visualizzi l’elemento più frequente

Page 71: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

71A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

La funzione C che dovremo implementare sarà caratterizzata da una struttura di questo tipo:

ACQUISIRE IL VETTORE X[] E LA SUA DIMENSIONE N

CORPO DELLA FUNZIONE(DOPPIO CICLO)

MOSTRO IL VALORE PIU’ FREQUENTE (MODA)

N

Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione

int EstraiLaModa(int X[], int n){

// dichiarazione variabili,inizializzazione// CORPO FUNZIONE ...Return moda;

}

Quesito 2 DOMANDE DI PROGRAMMAZIONE

Numero di X[i] più frequente (quindi un int)

Page 72: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

72A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Il corpo della nostra funzione potrebbe implementare il seguente algoritmo:

Lo scorrimento degli elementi di un elenco richiede l’uso di una variabile contatore

Scorro l’array originale X[] e ricopio i valori, eliminando i duplicati, nell’array Distinto[]

Se è una successiva occorrenza del numero incremento di 1 il conteggio

Mi serve una variabile per il conteggio dei numeri distinti

1

Contemporaneamente per ogni valore distinto Distinti[j] conteggio il numero di occorrenze in Conta[j]

Se X[i] è la prima occorrenza in Distinti[j]Se X[i] è la prima occorrenza in Distinti[j]

VEROFALSO

Quesito 2 DOMANDE DI PROGRAMMAZIONE

Page 73: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

73A.A. 2014/2015

// A - Conteggio la frequenza di ogni numerofor (i=0 ; i<n ; i++){

ENuovo=true; // ipotizzo che sia un nuovo valorefor (j=0 ; j<nDistinti ; j++){

if (X[i]==Distinti[j]){

Conta[j]++;ENuovo=false;break;

}}if (ENuovo==true){

Distinti[nDistinti]=X[i];Conta[nDistinti]++;nDistinti++;

}}

bool ENuovo;int i, j;int Conta[N]={0}, maxConta;int Distinti[N]={0};int nDistinti=0;

Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Scriviamo il corpo della nostra funzione

SCORRO L’ELENCO DAL PRIMO

ALL’ULTIMO ELEMENTO Xi DEL VETTORE X[] ED ESTRAGGO LE

SINGOLE OCCORRENZE E

CONTEMPORANEAMENE CONTEGGIO LE

ISTANZE. .

Man mano servono dichiaro le singole variabili

Quesito 2 DOMANDE DI PROGRAMMAZIONE

Page 74: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

74A.A. 2014/2015

// B - Determinazione del nr + frequentemaxConta=Conta[0];Moda=Distinti[0];for (j=1; j<nDistinti ; j++)

if (maxConta < Conta[j]){

maxConta=Conta[j];Moda=Distinti[j];

}

int Moda;int maxConta;

Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Scriviamo il corpo della nostra funzione

… POI SCORRO L’ARRAY DEI

CONTEGGI CONTA[] ALLA RICERCA DEL

VALORE IN DISTINTI[] PIU’ FREQUENTE

Man mano servono aggiungo ulteriori variabili

Quesito 2 DOMANDE DI PROGRAMMAZIONE

Page 75: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

75A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

Scriviamo quindi il corpo  della nostra funzione.int EstraiLaModa(int X[], int n){

// Dichiarazione variabili/inizializzazionebool ENuovo;int Moda,i, j;int Conta[N]={0}, maxConta;int Distinti[N]={0};int nDistinti=0;// Corpo funzione// A - Conteggio la frequenza di ogni numerofor (i=0 ; i<n ; i++){

ENuovo=true; // ipotizzo che sia un nuovo valorefor (j=0 ; j<nDistinti ; j++){

if (X[i]==Distinti[j]){

Conta[j]++;ENuovo=false;break;

}}if (ENuovo==true){

Distinti[nDistinti]=X[i];Conta[nDistinti]++;nDistinti++;

}}// Determinazione del nr + frequentemaxConta=Conta[0];Moda=Distinti[0];for (j=1; j<nDistinti ; j++)

if (maxConta < Conta[j]){

maxConta=Conta[j];Moda=Distinti[j];

}// Restituzione del valorereturn Moda;

}

Quesito 2 DOMANDE DI PROGRAMMAZIONE

Page 76: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

76A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

DOMANDE PROGRAMMAZIONEQuesito 3: Acquisire da tastiera 10 orari e successivamente visualizzare il numero di secondi trascorsi tra l’orario minore e quello maggiore. Per svolgere questo compito si dichiari una nuova tipologia di dati adatta ai fini dell’esercizio e si definisca ed utilizzi due funzioni C con le seguenti finalità:• Produrre il numero di secondi trascorsi dall’inizio della giornata dell’orario passato come argomento.• Produrre la durata della fascia temporale in secondi occupata dall’elenco di orari registrati in un determinato vettore di n variabili di tipo orario

Page 77: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

77A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

#include <stdio.h>#define N 5typedef struct{

int ora;int minuti;int secondi;

} tOrario;

void StampaOrario(tOrario O){

printf("%2d:%2d:%2d",O.ora,O.minuti,O.secondi);}

// ------------------------------------------------------------int SecondiTrascorsi(tOrario A){

int tSecA;tSecA=A.ora*60*60+A.minuti*60+A.secondi;return tSecA;

}

Quesito 3 DOMANDE DI PROGRAMMAZIONE

Page 78: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

78A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

int DurataFasciaOrariaOccupata(tOrario Orari[], int n){

// Devo determinare il minimo e il massimo orariotOrario vMin,vMax;int tSecMax, tSecMin, tSec, i;// InizializzazionetSecMin=SecondiTrascorsi(Orari[0]);tSecMax=SecondiTrascorsi(Orari[0]);vMin=Orari[0];vMax=Orari[0];for (i=1 ; i < n ; i++){

tSec=SecondiTrascorsi(Orari[i]);if (tSec < tSecMin) {

tSecMin=tSec; vMin=Orari[i];

}if (tSec > tSecMax) {

tSecMax=tSec; vMax=Orari[i];

}}printf("Fascia considerata: ");StampaOrario(vMin);printf(" - ");StampaOrario(vMax);printf("\n");// Calcolo la differenza in secondi tra l'orario minimo// e quello massimotSec=SecondiTrascorsi(vMax)-SecondiTrascorsi(vMin);return tSec;

}

Quesito 3 DOMANDE DI PROGRAMMAZIONE

Page 79: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

79A.A. 2014/2015Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

int main(){

tOrario Orario;tOrario Orari[N] = {

{21, 56, 18 },{14, 2, 13 },{14, 2, 58 },{21, 46, 58 },{ 9, 14, 59 }

};

printf("La fascia oraria occupata dagli orari dura %d secondi",DurataFasciaOrariaOccupata(Orari,N));

return(0);}

Quesito 3 DOMANDE DI PROGRAMMAZIONE

Page 80: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

80A.A. 2014/2015Docente: A. Elementi di Informatica e Programmazione –

Page 81: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

81A.A. 2014/2015

D1

R5

Page 82: Elementi di informatica e Programmazione - brescianet.com · Docente: A. Saetti Elementi di Informatica e Programmazione –Università di Brescia A.A. 2014/2015 32 DOMANDE PROGRAMMAZIONE

82A.A. 2014/2015