Page under construction!!

Esercizio risolto: Analyze requirements specification

Per ciascuna delle seguenti specifiche, rispondete a queste domande:

  1. Quali sono i goal principali da realizzare nell’implementazione del programma?
  2. Come vanno combinati i piani che realizzano i goal individuati?

Problem 1

Specifiche: Scrivere un programma che legga una sequenza di interi terminata da zero e stampi il più piccolo intero letto e il numero di volte che compare all’interno della sequenza.

Risposte:
Il goal per individuare il più piccolo intero letto è quello per la ricerca del valore estremo, con una variabile min nel ruolo di ricercato.

Per trovare il numero di volte che il minimo numero letto compare nella sequenza, il goal da realizzare è quello per il conteggio, con una variabile countMinimo nel ruolo di passo-passo.

I piani che realizzano i due goal possono essere fusi in un solo ciclo. Ogni volta che viene letto un numero uguale alla variabile min, la variabile countMinimo viene incrementata di 1; ogni volta che viene letto un numero minore della variabile min, la variabile countMinimo deve essere re-impostata a 1.

Problem 2

Specifiche: Scrivere un programma che riceve da riga di comando una serie di lunghezza arbitraria di parole e stampa la parola più lunga e la parola più corta. Nel caso in cui vi siano più parole di lunghezza massima o minima, il programma stampa l’ultima incontrata.

Risposte:
Per individuare la parola più corta serve il goal per la ricerca del valore estremo, con una variabile parolaCorta nel ruolo di ricercato.

Lo stesso goal serve anche per individuare la parola più lunga, questa volta con una variabile parolaLunganel ruolo di ricercato.

I piani che realizzano i due goal possono essere fusi in un solo ciclo, in cui si aggiornano, entrambe solo quando necessario, le variabili parolaCorta e parolaLunga. Poiché non si ha mai il caso in cui entrambe le variabili vadano aggiornate, è opportuno usare il costrutto if-else anziché due if a una via indipendenti.

Problem 3

Specifiche: Scrivere un programma che legga sequenza di N interi (almeno 3), che descrivono il consumo di elettricità in N giorni, e stampi i giorni in cui il consumo è stato inferiore rispetto sia al giorno prima che al giorno dopo. I giorni sono numerati a partire da 1.

Risposte:

Problem 4

Specifiche: Scrivere un programma che legge da standard input una sequenza di interi terminata da -1 e stampa il numero che contiene il maggior numero di 0. Nel caso in cui vi siano più numeri che contengono il massimo numero di 0, il programma stampa l’ultimo incontrato. Ad esempio, se la sequenza letta è 3040 145 80 1707 105002 78 1970 6005 -1 il programma stampa 105002.

Risposte:
Per calcolare quanti 0 ci sono in un numero, il goal è quello per il conteggio: ad ogni iterata si estrae una cifra del numero e se la cifra è zero si incrementa un contatore count0.

Per trovare il valore maggiore, il goal è quello per la ricerca del valore estremo, con una variabile max nel ruolo di ricercato; ad ogni iterata si esamina uno dei numeri della serie.

Il piano che realizza il conteggio va annidato all’interno del piano per la ricerca dell’estremo: il ciclo esterno serve ad esaminare un numero alla volta, e per ciascun numero va applicato il piano per il conteggio degli 0.