Elementi di informatica e Programmazione
|
|
|
- Vittorio Pastore
- 9 anni fa
- Просмотров:
Транскрипт
1 Elementi di informatica e Programmazione Corsi di Laurea di Ing. Informatica, Ing. Elettronica e delle Telecomunicazioni, Ing. dell'automazione Industriale Alessandro Saetti Marco Sechi e Alessandro Bugatti ( alessandro.saetti,marco.sechi,[email protected]) Università degli Studi di Brescia Elementi di informatica e programmazione Università di Brescia 1
2 FAC SIMILE ESAME 2
3 PARTE I FAC SIMILE ESAME 3
4 DOMANDE RISPOSTE CHIUSE 4
5 DOMANDE RISPOSTE CHIUSE X 55 5
6 DOMANDE RISPOSTE CHIUSE X 1 bit 0, 1 2 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 2 k
7 DOMANDE RISPOSTE CHIUSE X Struttura semplificata di una unità centrale di elaborazione e dei suoi collegamenti con le altre unità funzionali 7
8 DOMANDE RISPOSTE CHIUSE X 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 8
9 DOMANDE RISPOSTE CHIUSE X X I= X= V[] V[i]= 9
10 DOMANDE RISPOSTE CHIUSE X F() I Copio il valore I= I= 10
11 DOMANDE RISPOSTE CHIUSE X P[1].x= P[1].x= F() P[1].x= P[1].x= 11
12 DOMANDE RISPOSTE CHIUSE X 12
13 DOMANDE RISPOSTE CHIUSE X 13
14 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. 14
15 DOMANDE RISPOSTE APERTE Quesito 1 Visualizzare i divisori di un intero acquisito da tastiera. 15
16 DOMANDE RISPOSTE APERTE Quesito 2: Visualizzare i primi 1000 numeri con le cifre invertite. Per stampare le cifre in modo rovesciato posso seguire questa procedura FINE 16
17 DOMANDE RISPOSTE APERTE 17
18 DOMANDE RISPOSTE APERTE Quesito 3: Indicare i bit di segno, mantissa ed esponente della codifica del numero 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. Positivo segno Codifica di (4 bit) La mantissa è di 8 per cui arrivo alla quarta cifra Mantissa x 2 4 Esponente
19 DOMANDE RISPOSTE APERTE Quesito 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. 19
20 Quesito 5 DOMANDE RISPOSTE APERTE Quesito 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, VAL LOADiH RY, VAL ADD RX, RY, RZ LOAD RX, RY STORE RX, RY B LABEL END 20
21 Quesito 5 DOMANDE RISPOSTE APERTE 1 LOAD 21 STORE R3 3 Incremento R R1 A B R2 21
22 Quesito 5 DOMANDE PROGRAMMAZIONE La sequenza dei passaggi che il nostro programma deve svolgere è la seguente: A B Imposto come posizione di partenza 200 (in R1) Imposto come posizione di arrivo 260 (in R2) Leggo il contenuto indicato in R1 e lo sistemo nel registro R3 Incremento il contenuto di R3 Riscrivo il nuovo contenuto di R3 nella cella di memoria indicata da R1 Mi sposto al numero successivo incrementando R1 di LOADiL R LOADiH R LOADiL R LOADiH R SI Non sono giunto in fondo (R1<R2) NO FINE 22
23 Quesito 5 DOMANDE RISPOSTE APERTE La memoria centrale non è altro che un insieme di celle accessibili mediante un indirizzo: OPERAZIONE DI LETTURA IN MEMORIA Leggo il contenuto indicato in R1 e lo sistemo nel registro R3 13 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 R
24 Quesito 5 DOMANDE RISPOSTE APERTE Incremento il contenuto di R3 Per incrementare il contenuto di un registro (nel nostro caso R3) possiamo usare la costante 0001 ADD R3 R Incremento 13+ Si poteva anche inizializzare un registro non ancora usato (esempio R4) con il valore 1 LOADiL R LOADiH R e poi utilizzare l istruzione ADD a fianco ADD R3 R3 R4 24
25 Quesito 5 DOMANDE RISPOSTE APERTE OPERAZIONE DI SCRITTURA IN MEMORIA: Riscrivo il nuovo contenuto di R3 nella cella di memoria indicata da R1 14 Per scrivere il contenuto del registro R3 nella cella indicata nel registro R1 mi basta eseguire la seguente STORE STORE R1, R
26 Quesito 5 DOMANDE RISPOSTE APERTE Mi sposto al numero successivo incrementando R1 di 2 14 Per spostarsi alla cifra successiva occorre spostarsi di 2 byte (il numero naturale è codificato con 2 byte) ADD R1, R1,
27 Quesito 5 DOMANDE RISPOSTE APERTE Abbiamo 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) Leggo il contenuto indicato in R1 e lo sistemo nel registro R3 Incremento il contenuto di R3 Riscrivo il nuovo contenuto di R3 nella cella di memoria indicata da R1 Mi sposto al numero successivo incrementando R1 di 2 LOADiL R LOADiH R LOADiL R LOADiH R CICLO: LOAD R3 R1 ADD R3 R STORE R1 R3 ADD R1 R BLT R1 R2 CICLO FINE: END R1=200 R2=260 SI Non sono giunto in fondo (R1<R2) NO FINE R3= 27
28 Quesito 5 DOMANDE RISPOSTE APERTE Seguendo un procedimento leggermente diverso avremo avuto invece la seguente codifica Imposto come posizione di partenza 200 (in R1) Imposto come posizione di arrivo 260 (in R2) Se non sono giunto in fondo (R1<R2) SI Leggo il contenuto indicato in R1 e lo sistemo nel registro R3 Incremento il contenuto di R3 Riscrivo il nuovo contenuto di R3 nella cella di memoria indicata da R1 Mi sposto al numero successivo incrementando R1 di 2 FINE NO LOADiL R LOADiH R LOADiL R LOADiH R INIZIO: BLT R1 R2 CICLO B FINE CICLO: LOAD R3 R1 ADD R3 R STORE R1 R3 ADD R1 R B INIZIO FINE: END R1= R2= R3= 28
29 PARTE II - PROGRAMMAZIONE FACSIMILE ESERCITAZIONE 29
30 INTESTAZIONE DELLA FUNZIONE TipoRestituito NomeFunzione(parametri) Predisporre opportunamente le sezioni della funzione in modo adatto alla scrittura su carta SEZIONE DICHIARAZIONE VARIABILI/ INIZIALIZZAZIONE/INPUT SEZIONE DICHIARAZIONE VARIABILI 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 CORPO FUNZIONE E' la sezione più corposa predisporre uno spazio sufficientemente ampio SEZIONE OUTPUT / PRESENTAZIONE RISULTATI Inserire nella parte più in basso dello spazio a disposizione le eventuali istruzioni di output return(valore Restituito); VALORI DI RITORNO 30
31 #include <stdio.h> #include <stdlib.h> Come nei flow chart occorre cercare una predisposizione spaziale adatta alla presentazione della soluzione su carta. int main() SEZIONE DICHIARAZIONE VARIABILI/ INIZIALIZZAZIONE/INPUT SEZIONE DICHIARAZIONE VARIABILI Inserire nella parte più in alto dello spazio a disposizione, man mano che servono, le variabili necessarie alla sezione algoritmo SEZIONE INIZIALIZZAZIONE / INPUT Inseriamo qui le valorizzazioni iniziali che consentono all algoritmo applicato di funzionare E' la sezione più corposa predisporre uno spazio sufficientemente ampio SEZIONE ALGORITMO SEZIONE OUTPUT / PRESENTAZIONE RISULTATI Inserire nella parte più in basso dello spazio a disposizione le istruzioni di output system("pause"); return(0); 31
32 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. 32
33 Quesito 1 DOMANDE DI PROGRAMMAZIONE #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; 33
34 DOMANDE PROGRAMMAZIONE Quesito 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. 34
35 Quesito 2 Pot=1 2 0 Pot=Pot*2 2 1 DOMANDE DI PROGRAMMAZIONE Pot 1 Pot 2 1 Calcolo della potenza n esima di 2 mediante iterazione 1 Pot 2 1 i Pot=Pot* Pot Pot 2 2 i Pot=Pot*2 2 n 2 n 2 n-1 Pot Pot 2 n i 35
36 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; 36
37 DOMANDE PROGRAMMAZIONE Quesito 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. 37
38 Quesito 3 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 DOMANDE DI PROGRAMMAZIONE D1 Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione... D2... e definire la struttura dati necessaria typedef struct int g, m, a; Data; 1 se la Data1 è precedente alla Data2 altrimenti 0 RESTITUIRE 1 SE DATA1<DATA2 ALTRIMENTI 0 int primadi(data d1, Data d2) // dichiarazione variabili,inizializzazione // CORPO FUNZIONE... Return (0 oppure 1); 38
39 Quesito 3 DOMANDE DI PROGRAMMAZIONE Analizziamo ora il corpo della funzione PrimaDi() CORPO DELLA FUNZIONE Se l anno della 1^ data è minore dell anno della 2^ data allora la 1^ data è sicuramente precedente altrimenti se gli anni delle due date coincidono if (d1.a < d2.a) return 1 else if (d1.a == d2.a) valuto il mese e se quello della 1^ data è inferiore a quello della 2^ data allora la 1^data è sicuramente precedente altrimenti se i mesi nelle due date coincidono valuto i giorni e se quelli della 1^ data sono inferiori a quelli della 2^ data allora la 1^ data è sicuramente precedente Ho considerato tutte le casistiche possibili per cui la 1^ data non è precedente alla 2^ data if (d1.m < d2.m) return 1; else if (d1.m == d2.m) return 0; if (d1.g < d2.g) return 1; 39
40 Quesito 3 DOMANDE DI PROGRAMMAZIONE Iniziamo ora ad analizzare la seconda funzione richiesta. ACQUISIRE LA DATA DI RIFERIMENTO, L ELENCO DELLE DATE E LA SUA NUMEROSITA Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione... N CORPO DELLA FUNZIONE RESTITUIRE IL NUMERO DI DATE PRECEDENTI ALLA DATADI RIFERIMENTO Numero di date[] precedenti a una data di riferimento (quindi un int) int numprecedenze(data v[], int n, Data ref) // DICHIARAZIONE VARIABILI // CORPO DELLA FUNZIONE return prec; 40
41 Esercizio 6 Scrivere 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() Lo scorrimento degli elementi di un elenco richiede l uso di una variabile contatore int i; int numprecedenze(data v[], int n, Data ref) Inserisco le variabili e poi eventualmente le inizializzo int i; int prec=0; CORPO DELLA FUNZIONE Scorro l array v[] dal primo all ultimo elemento for (i=0 ; i < n ; i++) Se la data i esima v[i] è precedente alla data di riferimento incremento la variabile che conteggia il numero di date precedenti if (primadi(v[i], ref) == 1) prec = prec + 1 return prec; int prec; 41
42 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; 42
43 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; 43
44 DOMANDE RISPOSTE APERTE ULTERIORI 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). 44
45 DOMANDE RISPOSTE APERTE Quesito 1: Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L orario è costituito dalla coppia hh.mm Inizialmente la parte di inizializzazione sembra superflua. Scrivendo la soluzione su carta conviene comunque lasciare dello spazio per questa sezione 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, Parte iterata 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 45
46 Quesito 1 DOMANDE RISPOSTE APERTE Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L orario è costituito dalla coppia hh.mm (1 singolo ciclo) HH N MM N Valuto se è il più vicino alle 12:00 fino a quel momento NO HH N >=12 SI differenza=(12 HH N )*60 MM N differenza=(hh N 12)*60+MM N NO differenza<diff_minima SI diff_minima=differenza HH min =HH N MM min =MM N Per valutare l orario più vicino alle devo sapere quale è la differenza minima (diff_minima) riscontrata nei precedenti orari HH min MM min 46
47 Quesito 1 DOMANDE RISPOSTE APERTE Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L orario è costituito dalla coppia hh.mm (1 singolo ciclo) Parte iterata ma il primo orario letto con quale diff_minima deve essere messo a confronto? 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*
48 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. 48
49 DOMANDE RISPOSTE APERTE Quesito 1 Seguendo la disposizione spaziale consigliata otteniamo la soluzione finale Visualizzare in una sequenza di 10 orari quello più vicino a mezzogiorno. L orario è costituito dalla coppia hh.mm (1 singolo ciclo) 49
50 DOMANDE RISPOSTE APERTE 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). Inizialmente la parte di inizializzazione sembra superflua. Scrivendo la soluzione su carta conviene comunque lasciare dello spazio per questa sezione Loop interno Loop esterno Scorro per N volte le righe della matrice 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 Lascio in sospeso l output del nostro algoritmo Per ogni r-esima riga scorro per N volte le colonne della matrice 50
51 DOMANDE RISPOSTE APERTE Quesito 2 Sostituiamo i blocchetti contenenti la «descrizione informale» Ipotizzo inizialmente che la Simmetrica=1 mia matrice sia simmetrica 3 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! Valuto se l elemento M[R,C]!=M[C,R] e se si allora la matrice M non è simmetrica 12 M R,C!= M R,C NO SI Simmetrica=0 Enuncio se la matrice è simmetrica oppure no NO Simmetrica==1 SI 1 «Non è simmetrica» «E simmetrica» 51
52 Quesito 2 DOMANDE RISPOSTE APERTE Indicare se una matrice NxN di numeri è simmetrica ovvero è uguale alla sua trasposta. (2 cicli annidati) Effettuando le opportune sostituzioni otteniamo la seguente soluzione 52
53 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 53
54 Quesito 2 Seguendo la disposizione spaziale consigliata otteniamo la soluzione finale DOMANDE RISPOSTE APERTE Indicare se una matrice NxN di numeri è simmetrica ovvero è uguale alla sua trasposta. (2 cicli annidati) 54
55 DOMANDE RISPOSTE APERTE Quesito 3: Indicare i bit di segno, mantissa ed esponente della codifica del numero 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. Negativo segno La mantissa è di 8 per cui arrivo alla settima cifra Codifica di 0 0 (1 bit) Normalizzo la rappresentazione Mantissa x 2-1 Complemento i singoli bit Aggiungo Esponente
56 DOMANDE RISPOSTE APERTE Quesito 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. P3 Utilizzando un Gantt Chart si indichi per ogni processo quando e quali stati assume prima di terminare. 56
57 DOMANDE RISPOSTE APERTE Quesito 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. 57
58 Quesito 5 DOMANDE RISPOSTE APERTE LOAD R2 LOAD R3 Moltiplico R2 * R3 STORE R4 58
59 Quesito 5 DOMANDE RISPOSTE APERTE La sequenza dei passaggi che il nostro programma deve svolgere è la seguente: Imposto la posizione del primo fattore (200 in R1) Leggo il contenuto indicato in R1 e lo sistemo nel registro R2 Imposto la posizione del secondo fattore (202 in R1) Leggo il contenuto indicato in R1 e lo sistemo nel registro R3 Calcolo il prodotto tra R3 e R2 e lo riverso in R4 LOADiL R LOADiH R LOAD R2 R1 ; R2 M[R1] LOADiL R LOADiH R LOAD R3 R1 ; R3 M[R1] Imposto la posizione in ram del risultato (300 in R1) Scrivo il nuovo contenuto di R4 nella cella di memoria indicata da R1 FINE END LOADiL R LOADiH R STORE R1 R4 ; M[R1] R4 59
60 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 Rappresenta il prodotto P Rappresenta M Rappresenta N R4 R2 R3 sommo M volte il valore N Rappresenta M R2 R4 R3 R5 1 Rappresenta N 60
61 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). Sommo ripetutamente a 3 R4 il contenuto di R3 (N) 0 R2 1 2 M R4 R3 3 Primo fattore M Secondo fattore N Rappresenta il risultato 0 1 Ad ogni somma incremento R5 R5 e solo quando diventa uguale a M 1 (R2) smetto Rappresenta il contatore 4 61
62 Quesito 5 DOMANDE RISPOSTE APERTE Calcolo il prodotto tra R3 e R2 e lo riverso in R4 Parto da 0 poiché l istruzione di salto è basata sull operatore di confronto «minore» 1 Imposto a 0 il registro contatore R5 LOADiL R LOADiH R Azzero il registro (R4) che conterrà il risultato LOADiL R LOADiH R Sommo il contenuto del registro R3 al contenuto 3 CICLO: del registro risultato R4 ADD R4 R4 R3 4 Incremento il contatore R5 di 1 (R1) ADD R5 R SI Non ho finito? (R5<R2) NO BLT R5 R2 CICLO ;(4) 62
63 Quesito 5 DOMANDE RISPOSTE APERTE LOADiL R ; indirizzo 1^ fattore M LOADiH R LOAD R2 R1 ; R2 M[R1] LOADiL R ; indirizzo 2^ fattore N LOADiH R LOAD R3 R1 ; R3 M[R1] LOADiL R ; azzero il risultato LOADiH R LOADiL R ; contatore LOADiH R CICLO: ADD R4 R4 R3 ADD R5 R ; incremento contatore BLT R5 R2 CICLO LOADiL R LOADiH R STORE R1 R4 ; M[R1] R4 END Indirizzo 1^ fattore 2^ fattore risultato contatore R1= R2=3 R3=5 R4= R5= 63
64 Quesito 5 Calcolo il prodotto tra R3 e R2 e lo riverso in R4 DOMANDE RISPOSTE APERTE Se N o M possono essere nulli il programma deve essere modificato in questo modo 1 2 Imposto a 0 il registro contatore R5 Azzero il registro (R4) che conterrà il risultato Non ho finito? (R5<R2) SI Sommo il contenuto del registro R3 al contenuto del registro risultato R4 NO LOADiL R LOADiH R LOADiL R LOADiH R INIZIO: BLT R5 R2 CICLO B FINE 3 CICLO: ADD R4 R4 R3 Incremento il contatore R5 di 1 (R1) 4 ADD R5 R B INIZIO FINE FINE: END 64
65 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. 65
66 Quesito 1 Il funzione C che dovremo implementare sarà caratterizzata da una struttura di questo tipo: DOMANDE DI PROGRAMMAZIONE Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione ACQUISIRE L ELENCO DI VALORI IN UN VETTORE X[] E LA SUA DIMENSIONE N N CORPO DELLA FUNZIONE RESTITUIRE IL VALORE PIU VICINO ALLA MEDIA Numero di X[i] più vicino alla media (quindi un double) double NrPiuVicinoAllaMedia(double X[], int n) // dichiarazione variabili,inizializzazione // CORPO FUNZIONE... return piuvicino; 66
67 Quesito 1 DOMANDE DI PROGRAMMAZIONE Continuiamo ad analizzare il corpo della nostra funzione CALCOLO LA MEDIA SCORRO L ELENCO DEI VALORI, CALCOLO LA DIFFERENZA E LOCALIZZO L ELEMENTO PIU VICINO NrPiuVicinoAllaMedia(double X[], int n) // dichiarazione variabili,inizializzazione double media, piuvicino, distanzaminima; int i; // CORPO FUNZIONE... // A) Calcolo la media media=0; for (i=0; i<n ; i++) media=media+x[i]; media=media/n; // B) Calcolo il valore + vicino piuvicino=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); // Restituzione risultati return piuvicino; 67
68 Quesito 1 DOMANDE DI PROGRAMMAZIONE Scriviamo quindi il corpo della nostra funzione. double NrPiuVicinoAllaMedia(double X[], int n) // Dichiarazione delle variabili /inizializzazione double media =0, piuvicino=x[0], distanzaminima; int i; // Corpo della funzione // A) Calcolo la media for (i=0; i<n ; i++) media=media+x[i]; media=media/n; printf("la media e': %.2f",media); // B) Calcolo il valore + vicino 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); // Restituzione risultato return piuvicino; 68
69 Quesito 1 DOMANDE DI PROGRAMMAZIONE 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 5 double NrPiuVicinoAllaMedia(double X[], int n) // Dichiarazione delle variabili /inizializzazione double media =0, piuvicino=x[0], distanzaminima; int i; // Corpo della funzione // A) Calcolo la media for (i=0; i<n ; i++) media=media+x[i]; media=media/n; printf("la media e': %.2f",media); // B) Calcolo il valore + vicino 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); // Restituzione risultato return 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); 69
70 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 70
71 Quesito 2 La funzione C che dovremo implementare sarà caratterizzata da una struttura di questo tipo: DOMANDE DI PROGRAMMAZIONE Partendo da questo schema possiamo individuare i parametri essenziali per la nostra funzione ACQUISIRE IL VETTORE X[] E LA SUA DIMENSIONE N N CORPO DELLA FUNZIONE (DOPPIO CICLO) Numero di X[i] più frequente (quindi un int) MOSTRO IL VALORE PIU FREQUENTE (MODA) int EstraiLaModa(int X[], int n) // dichiarazione variabili,inizializzazione // CORPO FUNZIONE... Return moda; 71
72 Quesito 2 DOMANDE DI PROGRAMMAZIONE 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[] Mi serve una variabile per il conteggio dei numeri distinti Se X[i] è la prima occorrenza in Distinti[j] VERO 1 Contemporaneamente per ogni valore distinto Distinti[j] conteggio il numero di occorrenze in Conta[j] FALSO Se è una successiva occorrenza del numero incremento di 1 il conteggio 72
73 Quesito 2 Scriviamo il corpo della nostra funzione DOMANDE DI PROGRAMMAZIONE Man mano servono dichiaro le singole variabili bool ENuovo; int i, j; int Conta[N]=0, maxconta; int Distinti[N]=0; int ndistinti=0; // A - Conteggio la frequenza di ogni numero for (i=0 ; i<n ; i++) ENuovo=true; // ipotizzo che sia un nuovo valore for (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++; SCORRO L ELENCO DAL PRIMO ALL ULTIMO ELEMENTO X i DEL VETTORE X[] ED ESTRAGGO LE SINGOLE OCCORRENZE E CONTEMPORANEAME NE CONTEGGIO LE ISTANZE.. 73
74 Quesito 2 DOMANDE DI PROGRAMMAZIONE Scriviamo il corpo della nostra funzione Man mano servono aggiungo ulteriori variabili int Moda; int maxconta; // B - Determinazione del nr + frequente maxconta=conta[0]; Moda=Distinti[0]; for (j=1; j<ndistinti ; j++) if (maxconta < Conta[j]) maxconta=conta[j]; Moda=Distinti[j]; POI SCORRO L ARRAY DEI CONTEGGI CONTA[] ALLA RICERCA DEL VALORE IN DISTINTI[] PIU FREQUENTE 74
75 Quesito 2 DOMANDE DI PROGRAMMAZIONE Scriviamo quindi il corpo della nostra funzione. int EstraiLaModa(int X[], int n) // Dichiarazione variabili/inizializzazione bool 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 numero for (i=0 ; i<n ; i++) ENuovo=true; // ipotizzo che sia un nuovo valore for (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 + frequente maxconta=conta[0]; Moda=Distinti[0]; for (j=1; j<ndistinti ; j++) if (maxconta < Conta[j]) maxconta=conta[j]; Moda=Distinti[j]; // Restituzione del valore return Moda; 75
76 DOMANDE PROGRAMMAZIONE Quesito 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 76
77 Quesito 3 DOMANDE DI PROGRAMMAZIONE #include <stdio.h> #define N 5 typedef 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; 77
78 Quesito 3 DOMANDE DI PROGRAMMAZIONE int DurataFasciaOrariaOccupata(tOrario Orari[], int n) // Devo determinare il minimo e il massimo orario torario vmin,vmax; int tsecmax, tsecmin, tsec, i; // Inizializzazione tsecmin=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 massimo tsec=seconditrascorsi(vmax)-seconditrascorsi(vmin); return tsec; 78
79 Quesito 3 DOMANDE DI PROGRAMMAZIONE 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); 79
80 Docente: A. Elementi di Informatica e Programmazione 80
81 R5 D1 81
82 82
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
Cenni su algoritmi, diagrammi di flusso, strutture di controllo
Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni
Esame del 3 febbraio 2010
Fondamenti di Informatica CdL in Ingegneria Gestionale a.a. 2009/2010 Docente: Andrea Prati Esame del 3 febbraio 2010 Esercizio 1 Vettori Sia data un vettore (array monodimensionale) di interi: int VETT[N];
Architettura dei calcolatori II parte Memorie
Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Informatica ed Elementi di Statistica 3 c.f.u. Anno Accademico 2010/2011 Docente: ing. Salvatore Sorce Architettura dei calcolatori
La selezione binaria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Introduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
Esame di INFORMATICA
Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello
Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile
Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione
Dispense di Informatica per l ITG Valadier
La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di
CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO
CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO 1 Domanda [1 punto] Dato il formato in virgola mobile su 32 bit così definito (precisione singola): o 1
FONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI
Esercizi 5 Esercizio 1 Realizzare una funzione che, chiesto all utente un numero intero pari a N, ricavi e stampi a video tutte le terne pitagoriche con i cateti minori o uguali ad N. CICLI Una terna pitagorica
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
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
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
Esercitazione Informatica I AA 2012-2013. Nicola Paoletti
Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.
RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI
RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI Diagramma di flusso L algoritmo può essere rappresentato in vari modi, grafici o testuali. Uno dei metodi grafici più usati e conosciuti è il cosiddetto diagramma
INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
Alcune regole di base per scrivere un programma in linguaggio C
Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza
CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU
Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi
Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno
Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,
CPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c
Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione
Linguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
Utilizzo delle formule in Excel
Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2
Rappresentazione delle informazioni
Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore
Excel. A cura di Luigi Labonia. e-mail: [email protected]
Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
Breve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
Lezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL
LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL ESERCITAZIONE GUIDATA: LE RENDITE 1. Il montante di una rendita immediata posticipata Utilizzando Excel, calcoliamo il montante di una
Programmazione dinamica
Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)
Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari
Scopo della lezione. Informatica. Informatica - def. 1. Informatica
Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni
[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008
Se devo memorizzare più valori che sono in qualche modo parenti dal punto di vista logico, posso usare il concetto di vettore di variabili (array). Ad esempio, se devo memorizzare le temperature di tutti
Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema 3 7 problema 4 10 totale 30
Elementi di Architettura e Sistemi Operativi Bioinformatica - Tiziano Villa 22 Giugno 2012 Nome e Cognome: Matricola: Posta elettronica: problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema
Introduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
Vettori Algoritmi elementari di ordinamento
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Vettori Algoritmi elementari di ordinamento Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale
Matematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Testi di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
INFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
PROVA INTRACORSO TRACCIA A Pagina 1 di 6
PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento
La memoria centrale (RAM)
La memoria centrale (RAM) Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione Memoria ad accesso casuale Tecnologia elettronica: Veloce ma volatile e costosa Due eccezioni R.O.M.
Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6
Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...
DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1
DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica
Uso di base delle funzioni in Microsoft Excel
Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce
Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >
Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego
dall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
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
PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA" V i a A n g e l o Ma j, 1 2 4 1 2 1 B E R G A M O 035 237502 Fax: 035 236331 Sito e contatti: www.liceolussana.com Codice fiscale: 80026450165 PROGRAMMA SVOLTO
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
Caratteri e stringhe Esercizi risolti
Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.
Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate
CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata
Lezione n.6 Unità di controllo microprogrammata 1 Sommario Unità di controllo microprogrammata Ottimizzazione, per ottimizzare lo spazio di memoria occupato Il moltiplicatore binario Esempio di architettura
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Descrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
Corso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
Corso di Informatica
Corso di Informatica Modulo T Scorrimento-Rotazione-Ricerca Prerequisiti Programmazione elementare Conoscenza ed uso di vettori Introduzione Lo scopo di questa Unità è approfondire il concetto di vettore
Ing. Paolo Domenici PREFAZIONE
Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte
Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio
AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio
Calcolo del Valore Attuale Netto (VAN)
Calcolo del Valore Attuale Netto (VAN) Il calcolo del valore attuale netto (VAN) serve per determinare la redditività di un investimento. Si tratta di utilizzare un procedimento che può consentirci di
Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
Appunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
Architettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
Dispensa di Informatica I.1
IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.
I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio
Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
Interesse, sconto, ratei e risconti
129 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 129 129.1.1 Esercizio per il calcolo dell interesse semplice........................
Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.
Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella [email protected] Prestazioni Si valutano in maniera diversa a seconda dell
Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
SISTEMI DI NUMERAZIONE DECIMALE E BINARIO
SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono
Convertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
LINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
Codifica dei numeri negativi
E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione
Architettura dei computer
Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore (CPU) la memoria principale (RAM) la memoria secondaria i dispositivi di input/output Il processore
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Gerarchia delle memorie
Memorie Gerarchia delle memorie Cache CPU Centrale Massa Distanza Capacità Tempi di accesso Costo 2 1 Le memorie centrali Nella macchina di Von Neumann, le istruzioni e i dati sono contenute in una memoria
Gli algoritmi: definizioni e proprietà
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani ([email protected])
Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
Interesse, sconto, ratei e risconti
TXT HTM PDF pdf P1 P2 P3 P4 293 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 293 129.1.1 Esercizio per il calcolo dell
