martedì 24 maggio 2011

Esempi di esercizio (Aggiornato)

1. Data la memoria



100135423
ijkdatiRS
e le seguenti istruzioni:

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


100135423
ijkdatiRS

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)
  1. [^a] <<- Ø
  2. [a] <<- Ø
  3. ([abc]*).* <- $1
  4. .*h <- x
  5. (aa)* <<- 2
  6. (a+)([b-g]) <<- $2$1
SOLUZIONE:
  1. Elimina (sostituendogli la stringa vuota) tutti i caratteri diversi da a: aaaaaaaaaaaaaaaaaaaaa
  2. Elimina tutti i caratteri uguali ad a: bcdefg
  3. 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
  4. 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
  5. sostituisce tutte le sequenze di a di lunghezza pari (infatti l'asterisco fa ripetere sempre una sequenza di esattamente due a) con un 2: ab2c2ad22e22af222g ab2c2ad2e2af2g(infatti sostituisce l'intera sequenza, non la singola coppia)
  6. scambia le sequenze di a con la lettera diversa da a che segue: bacaadaaaeaaaafaaaaagaaaaaa
5. Data la sequenza di simboli

17542907417352412


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)

  1. [02468] <<- P
  2. [13579] <<- D
  3. .*1(.*) <- $1
  4. 7.*7  <- Ø
  5. [02468][13579] <<- PD
  6. ([02468][13579])* <<- PD
SOLUZIONE PARZIALE (basta provarle in openoffice writer!)
  1. 175PP9P7P1735PP1P

  2. 2
  3. elimina una sequenza (quale?) compresa tra due 7. Elimina anche i 7?

  4. 1754PD7352PD2
6.


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.

    4 commenti:

    1. PROF RELATIVAMENTE ALL'ESERCIZIO DI CALC POTREBBE METTERE LA SOLUZIONE IN MODO DA AVERLO COME ESEMPIO PER ESERCITARSI? GRAZIE

      RispondiElimina
    2. ma all'esercizio 2 a me S=8 nn a 100.a voi che viene?

      RispondiElimina
    3. Per Calc basta provarlo sul computer. Mettete una formula e vedete che succede quando la copiate in un altro posto.
      L'esercizio 2 fa il prodotto dei valori due a due (posizione dispari e pari) e poi li somma. Il totale in R è 29, quindi S=100.

      RispondiElimina
    4. dell'esercizio 5 non riesco a capire l'espressione regolare numero 6. Qualcuno può aiutarmi?

      RispondiElimina