1 | 0 | 0 | 1 | 3 | 5 | 4 | 2 | 3 | ||
i | j | k | dati | R | S |
RIPETI FINCHÉ i<=3 {
j = j + dati[i*2]
k = k + dati[i*2 - 1]
i = i + 1
}
R = j + k
S = R / (2*i - 2)
dire cosa "fa" questo frammento di programma. Alla fine della computazione, qual è il valore di R? E quello di S?
SOLUZIONE: il programma in j somma i valori del vettore "dati" che si trovano in posizione pari, in k somma i valori in posizione dispari. R, essendo la somma di j e k, è la somma di tutti i valori contenuti nel vettore "dati", e vale 18. Il valore di S dipende dal valore di i: quando viene raggiunta l'istruzione che assegna il valore a S, i ha inevitabilmente il valore 4 (è la condizione del ciclo RIPETI: i parte da 1 e viene incrementato di 1, quando arriva al primo valore >3, cioè 4, il ciclo si interrompe e il programma continua con le istruzioni dopo la graffa). Perciò S = 18 / (2*4 - 2) = 18 / 6 = 3. Si può notare che S non è altro che la media dei valori contenuti nel vettore "dati".
RISPOSTA MINIMALE "da esame": il programma somma in j i valori in posizione pari e in k quelli in posizione dispari. R=18. S=3.
2. Data la memoria
1 | 0 | 0 | 1 | 3 | 5 | 4 | 2 | 3 | ||
i | j | k | dati | R | S |
e le seguenti istruzioni:
RIPETI FINCHÉ i<=3 {
j = dati[i*2 - 1] * dati[i*2]
k = k + j
i = i + 1
}
R = k
S = (R - 4) * i
dire cosa "fa" questo frammento di programma. Alla fine della computazione, qual è il valore di R? E quello di S?
SOLUZIONE PARZIALE: S=100
3. Data la memoria
6 | 0 | 0 | 1 | 3 | 5 | 4 | 2 | 3 | ||
i | j | k | dati | R | S |
e le seguenti istruzioni:
RIPETI FINCHÉ i>0 {
j = j + dati[i]
k = k - dati[7-i]
i = i - 1
}
R = j + k
S = R + i
dire cosa "fa" questo frammento di programma. Alla fine della computazione, qual è il valore di R? E quello di S?
SOLUZIONE PARZIALE: S=0
4. Data la seguente stringa di simboli
abaacaaadaaaaeaaaaafaaaaaag
quali sono i risultati delle seguenti espressioni regolari? (notate che con <- si intende "sostituisci la prima occorrenza" e con <<- si intende "sostituisci tutte le occorrenze". con "_" si intende lo spazio e con "Ø" la stringa vuota)
- [^a] <<- Ø
- [a] <<- Ø
- ([abc]*).* <- $1
- .*h <- x
- (aa)* <<- 2
- (a+)([b-g]) <<- $2$1
- Elimina (sostituendogli la stringa vuota) tutti i caratteri diversi da a: aaaaaaaaaaaaaaaaaaaaa
- Elimina tutti i caratteri uguali ad a: bcdefg
- Trova la prima e più lunga sequenza di caratteri a b c (in qualsiasi ordine) e la "cattura" in un gruppo, e quindi seleziona tutto il resto della stringa (con .* che significa una sequenza qualsiasi di caratteri) per sostituirlo (con $1) con i caratteri catturati dal gruppo di cattura: abaacaaa
- cerca una qualsiasi sequenza di caratteri seguita da una h, ma la h non è presente nella nostra stringa quindi non trova nulla e non sostituisce nulla: abaacaaadaaaaeaaaaafaaaaaag
- sostituisce tutte le sequenze di a di lunghezza pari (infatti l'asterisco fa ripetere sempre una sequenza di esattamente due a) con un 2:
ab2c2ad22e22af222gab2c2ad2e2af2g(infatti sostituisce l'intera sequenza, non la singola coppia) - scambia le sequenze di a con la lettera diversa da a che segue: bacaadaaaeaaaafaaaaagaaaaaa
17542907417352412
Relativamente al foglio di Calc:
quali sono i risultati delle seguenti espressioni regolari? (notate che con <- si intende "sostituisci la prima occorrenza" e con <<- si intende "sostituisci tutte le occorrenze". con "_" si intende lo spazio e con "Ø" la stringa vuota)
- [02468] <<- P
- [13579] <<- D
- .*1(.*) <- $1
- 7.*7 <- Ø
- [02468][13579] <<- PD
- ([02468][13579])* <<- PD
- 175PP9P7P1735PP1P
- 2
- elimina una sequenza (quale?) compresa tra due 7. Elimina anche i 7?
- 1754PD7352PD2
Relativamente al foglio di Calc:
(a) Scrivere una formula da porre nella cella Cella1a in modo da calcolare il totale dei valori della relativa area. Scrivere la formula in modo che, copiando Cella1a in Cella2a, il valore risultante in Cella2a sia il totale dei valori della seconda area.
(b) Scrivere una formula da inserire in Cella1b in modo che vi venga calcolato il totale pesato (=moltiplicato) in base a una costante che si troverà nella cella indicata con Peso. Copiando Cella1b in Cella2b il valore risultante dovrà essere il totale pesato della seconda area.
(b) Scrivere una formula da inserire in Cella1b in modo che vi venga calcolato il totale pesato (=moltiplicato) in base a una costante che si troverà nella cella indicata con Peso. Copiando Cella1b in Cella2b il valore risultante dovrà essere il totale pesato della seconda area.