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.

    Appelli, programmi, dettagli

    Come annunciato dal post precedente, numerosi problemi burocratici e formali stanno rendendo complicato questo passaggio di docenza. Da questa settimana probabilmente verranno definiti gli ultimi aspetti conclusivi riguardanti particolarmente gli studenti in debito d'esame.

    Da venerdì spero di poter inserire gli appelli sia per gli studenti del II anno che per quelli degli anni successivi in debito.

    Per cercare di compensare almeno parzialmente la confusione riguardo l'esame, la mia indisponibilità di informazioni precise e lo slittamento dei tempi (oltre che tutte le mie umane pecche) intendo spostare gli appelli di giugno di una settimana. Inoltre fino al prossimo primo appello di giugno sarò disponibile a ricevimento dalle 15 alle 16 dei giorni: 25, 26, 27, 31 Maggio; 1, 6 Giugno. Il ricevimento è presso lo studio 49/B al quarto piano del palazzo Parlangeli. (studio del Prof. Salvatore)

    Per gli esami di giugno non ci saranno vincoli riguardo l'iscrizione degli appelli (l'esame si può ripetere senza vincoli di voto).

    L'esame di Gestione verrà seguito dalla prof. Maria Grazia Celentano: http://www.mariagraziacelentano.it/

    Il Prof. Antonio Caruso ha dato la sua disponibilità, per quegli studenti che eventualmente volessero fare l'esame secondo le sue modalità e il suo programma, a sostenere l'esame con lui. In ogni caso l'iscrizione andrà fatta agli appelli che verranno inseriti da me.

    Vista la confusione che è stata generata dalla modalità di illustrazione dei programmi parziali, la sezione "programma e appelli" viene aggiornata in modo da rendere più chiare le aspettative formative.

    Negli esami gli esercizi comprenderanno sempre l'esecuzione di un semplice programma e le espressioni regolari.