SlideShare a Scribd company logo
1 of 13
Download to read offline
ANALISI




Code: 

Coda<char> acquisisciElementoFile(FILE *F), che legge dal file di testo F un rigo e ne inserisce i 

caratteri in una coda 

Coda<char> acquisisciElementoTastiera(), che legge da tastiera un rigo e ne inserisce i caratteri in 

una coda 

verificando che il rigo letto sia del tipo (OpNum)Suff(Fin) "Comm" 

con Op in {<,<=,=,>=,>,<>}, Num numero intero non negativo; Suff sequenza di caratteri 

alfabetici; Fin sequenza di lettere separate da virgole; Comm sequenza di caratteri qualunque. 

Esempio:

(>=1)zion(e,i) "s f/sing,f/pl"




È richiesta la realizzazione di due funzioni che analizzino del testo al fine di determinare la loro 

appartenenza ad un certo tipo di stringhe.

La prima funzione avrà in input un file di testo, il quale, sarà composto da una singola riga che sarà 

scansionata per determinarne l’appartenenza alla classe di equivalenza delle stringa con il seguente 

formato: (OpNum)Suff(Fin) "Comm".

La seconda funzione invece provvederà ad ottenere una singola stringha direttamente dalla tastiera e 

procederà alla scansione della stringa come definito nella procedura precedente.

Entrambe le procedure forniranno come output una coda con all’interno la riga da analizzare.



Nella direttiva del problema non vi sono accenni ai seguenti casi: 

         1. Per la prima funzione non è menzionato come comportarsi nel caso il file in input fosse 

            vuoto. 

Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                             Pagina 1
2. Inerentemente alla prima funzione non è indicato come comportarsi nel caso in cui il file 

           di input non esista.

       3. Per la prima funzione non vi sono riferimenti su come interpretare la fine di una riga.

       4. Per la seconda funzione non vi sono riferimenti su come interpretare la fine di una riga.

       5. Per la seconda funzione non è riportato come comportarsi nel caso in cui l’utente non 

           digiti nessun carattere da tastiera.

       6. Per entrambe le procedure non è descritto il comportamento nel caso in cui la stringa 

           analizzata appartenga alla classe delle stringhe (OpNum)Suff(Fin) "Comm"

       7. Per entrambe le procedure non è descritto il comportamento nel caso in cui la stringa 

           analizzata non appartenga alla classe delle stringhe (OpNum)Suff(Fin) "Comm"



In corrispondenza di questi casi, sono stati presi i seguenti provvedimenti:



       1. Nel caso il file di input fosse vuoto verrà visualizzato un messaggio riguardante la 

           stringa non conforme alla classe di equivalenza delle stringhe 

           (OpNum)Suff(Fin)”Comm”.

       2. Nel caso in cui il file di input non esiste, sarà visualizzato un messaggio di errore 

           all’utente.

       3. Si considererà fine di una stringa la presenza del carattere ASCII  invio.

       4. Si considererà fine di una stringa la presenza del carattere ASCII  invio.

       5. Se non viene digitato nessun carattere, la funzione considererà la mancanza di caratteri 

           come stringhe non conformi alla classe di equivalenza delle stringhe 

           (OpNum)Suff(Fin)“Comm”.

       6. Nel caso in cui la stringa sia ammessa dopo l’analisi alla classe delle stringhe 

           (OpNum)Suff(Fin) "Comm" l'utente sarà avvisato con un opportuno messaggio. 

       7. Nel caso in cui la stringa non sia ammessa dopo l’analisi alla classe delle stringhe 

           (OpNum)Suff(Fin) "Comm" l’utente  sarà avvisato con un opportuno messaggio.


Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                             Pagina 2
PROGETTAZIONE


La struttura utilizzata per la realizzazione della funzione e la coda: 



Specifica sintattica:

TIPI:

         Coda

         Boolean

         Tipoelem

         File

OPERATORI:

         CREACODA :            ()                          Coda

         CODAVUOTA :      (coda)                     Boolean

         LEGGICODA :       (coda)                      Tipoelem

         FUORICODA :       (coda)                      Coda

         INCODA :        (tipoelem, coda)            Coda



OPERATORI DI SERVIZIO:

         ACQUISISCIELEMENTOTASTIERA ()  Coda

         ACQUISISCIELEMENTOFILE (File)       Coda



Specifica semantica

TIPI: 

         FILE: sequenza di caratteri delimitata da un valore booleano che ne contrassegna la fine 

(EOF)

         CODA: insieme delle sequenze Q = a1, a2, … , an di elementi

                  di tipo TIPOELEM;

Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                          Pagina 3
BOOLEAN: insieme dei valori di verità;



OPERATORI:

     CREACODA = Q’

             Post: Q’ = L (sequenza vuota)

     CODAVUOTA(Q) = b

             Post: b = true se Q = L, b = false altrimenti

     LEGGICODA(Q) = a

             Pre: Q = a1,a2,…,an && n >= 1 

             Post: a = a1

     FUORICODA(Q) = Q’

             Pre: Q = a1,a2,…,an && n >= 1 

             Post: Q’ = a2,a3,…,an  se n > 1, Q’ = L se n = 1

     INCODA (a,Q) = Q’

             Pre: Q = a1, a2,…, an  && n >= 0 

             Post: Q’ = a1, a2,…, an, a



OPERATORI DI SERVIZIO:

     ACQUISISCIELEMENTOTASTIERA =  Q

             Post: Q = coda realizzata prendendo in input da tastiera una riga di caratteri. Sarà 

             verificato che questa stringa appartenga alla classe delle stringhe (OpNum)Suff(Fin) 

             "Comm"

     ACQUISISCIELEMENTOFILE (F) = Q

             Post: Q = coda realizzata prendendo in input da un file una riga di caratteri. Sarà 

             verificato che questa stringa appartenga alla classe delle stringhe (OpNum)Suff(Fin) 

             "Comm"




Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                          Pagina 4
ALGORITMO RISOLUTIVO

ACQUISISCI ELEMENTO TASTIERA

Crea una coda di char;

boolean Test  false;

Controllo stringa (Test, Coda);

Se test==false

        Allora

                  Svuota la Coda;

Restituisci (Coda);



CONTROLLO STRINGA

Prende il prossimo carattere dalla riga

Se il carattere == ‘ ( ‘

        Allora 

                  Metti in Coda il carattere;

                  Richiama la funzione OP (Test, Coda);

fine Se.



OP

Prende il prossimo carattere dalla riga

Se( il carattere == ‘ < ‘) AND (NOT Test)

        Allora 

                  Metti in Coda il carattere;

                  Prendi il prossimo carattere dalla riga;

                  Se il (carattere == ‘ > ‘ OR carattere == ‘ = ‘) AND (NOT Test)

                           Allora 

                                     Metti in Coda il carattere;

Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                   Pagina 5
Prendi il prossimo carattere dalla riga;

                                  Richiama la funzione NUM (Test, Coda, Carattere);

                        Altrimenti

                                  Richiama la funzione NUM (Test, Coda, Carattere);

                 fine Se;

fine Se;

Se (il carattere == ‘ > ‘) AND (NOT Test)

       Allora 

                 Metti in Coda il carattere;

                 Prendi il prossimo carattere dalla riga;

                 Se il (carattere == ‘ = ‘ ) AND (NOT Test)

                        Allora 

                                  Metti in Coda il carattere;

                                  Prendi il prossimo carattere dalla riga;

                                  Richiama la funzione NUM (Test, Coda, Carattere);

                        Altrimenti

                                  Richiama la funzione NUM (Test, Coda, Carattere);

                 fine Se;

fine Se;

Se (il carattere == ‘ = ‘) AND (NOT Test)

       Allora 

                 Metti in coda il carattere;

                 Prendi il prossimo carattere dalla riga;

                 Richiama la funzione NUM (Test, Coda, Carattere);

fine Se;




Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                     Pagina 6
NUM

Fintantoche (Il carattere >= ‘ 0 ‘) AND (il carattere <= ‘ 9 ‘)

        Metti in coda il carattere;

        Prendi il prossimo carattere dalla riga;

Se (il carattere == ‘ ) ‘)

        Allora

                 Metti in coda il carattere;

                 Richiama la funzione SUFF (Test, Coda);

fine Se;



SUFF

Prendi il prossimo carattere;

Fintantoche (il carattere >= ‘ a ‘) AND ( il carattere <= ‘ z ‘)

        Metti in coda il carattere;

        Prendi il prossimo carattere dalla riga;

fine Fintantoche;

Se (il carattere == ‘ ( ‘ )

        Allora

                 Metti in coda il carattere;

                 Prendi il prossimo carattere dalla riga;

                 Se(il carattere==')')

                         Allora

                                  Metti in coda il carattere;

                                  Prendi il prossimo carattere dalla riga;

                                  Se (il carattere ==' ” ')

                                          Allora

                                                   Metti in coda il carattere;


Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                Pagina 7
Richiama la funzione COMM(Test,Coda);

                         Altrimenti

                                  Richiama la funzione FIN (Test, Coda,Carattere);

fine Se;




FIN

Se (il carattere >= ‘ a ‘) AND (il carattere <= ‘ z ‘)

        Metti in coda il carattere;

        Richiama la funzione FIN2 (Test, Coda);

fine Se;



FIN2

Prendi il prossimo carattere;

Se (il carattere == ‘ , ‘)

        Allora

                 Metti in coda il carattere;

                 Prendi il prossimo carattere dalla riga;

                 Richiama la funzione FIN (Test, Coda,Carattere);

fine Se;

Se (il carattere == ‘ ) ‘ )

        Allora

                 Metti in coda il carattere;

                 Prendi il prossimo carattere;

                 Se (il carattere == ‘ “ ‘ )

                         Allora


Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                        Pagina 8
Metti in coda il carattere;

                                Richiama la funzione COMM (Test, Coda);

                 fine Se;

fine Se;



COMM

Prendi il prossimo carattere;

Fintantoche (prendi qualsiasi carattere esclusa ‘ “ ‘)

        Metti in coda il carattere;

        Prendi il prossimo carattere;

fine Fintantoche;

Se (il carattere == ‘ “ ‘)

        Allora

                 Metti in coda il carattere;

                 Test = true;

fine Se;

                                  ALGORITMO RISOLUTIVO

ACQUISISCI ELEMENTO DA FILE

L’algoritmo risolutivo è lo stesso usato per l’acquisizione della stringa da tastiera con la differenza 

che ad ogni funzione, verrà passato come parametro il file oltre ai parametri Test e Coda 




                                         REALIZZAZIONE

Le realizzazioni effettuate sono le seguenti:

    1. Coda realizzata con vettore (il limite massimo è impostato a 1024 elementi).

    2. Coda realizzata con puntatori.



Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                             Pagina 9
TEST

Sono state individuate le seguenti classi di equivalenza:

1. Il file in input non esiste;




Output: messaggio di errore



2. Il file di input è vuoto




Output: messaggio di stringa non conforme



3. Stringa conforme




Output: messaggio di stringa conforme con visualizzazione della stringa
Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                         Pagina 10
4. Stringa non conforme

   a. (>r12)zidsadsadon(e,i)"s f/sing,fasdsadsad/pl"  ­­ (errore nella sezione OpNum)




   b. (>12)z2idsadsadon(e,i)"s f/sing,fasdsadsad/pl"  ­­ (errore nella sezione Suff)




   c. (>12)zidsadsadon(e,,i)"s f/sing,fasdsadsad/pl"  ­­ (errore nella sezione Fin)




Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                       Pagina 11
5. Nell’inserimento da tastiera non viene inserito nulla




Output: messaggio di stringa non conforme



6. La stringa inserita è conforme




Output: messaggio di stringa conforme e visualizzazione della stringa scritta




Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                               Pagina 12
7. La stringa inserita non è conforme

   a. (>r12)zidsadsadon(e,i)"s f/sing,fasdsadsad/pl"  ­­ (errore nella sezione OpNum)




   b. (>12)z2idsadsadon(e,i)"s f/sing,fasdsadsad/pl"  ­­ (errore nella sezione Suff)




   c. (>12)zidsadsadon(e,,i)"s f/sing,fasdsadsad/pl"  ­­ (errore nella sezione Fin)




Ignazio Altomare, Sergio Centrone, Fabio Gadaleta                                       Pagina 13

More Related Content

Viewers also liked

Agriturismo Cascina Ponchietta
Agriturismo Cascina PonchiettaAgriturismo Cascina Ponchietta
Agriturismo Cascina Ponchiettaguest6da693
 
PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)
PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)
PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)Luís Carvalho
 
Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c. isola...
Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c.  isola...Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c.  isola...
Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c. isola...Pino Ciampolillo
 
Tabla de Valencias Elementos Químicos
Tabla de Valencias Elementos QuímicosTabla de Valencias Elementos Químicos
Tabla de Valencias Elementos QuímicosYasmin Pérez
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Viewers also liked (6)

Agriturismo Cascina Ponchietta
Agriturismo Cascina PonchiettaAgriturismo Cascina Ponchietta
Agriturismo Cascina Ponchietta
 
PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)
PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)
PÁSCOA 2014 ..... A páscoa de Jesus Cristo (3/4)
 
Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c. isola...
Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c.  isola...Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c.  isola...
Corte dei conti regione sicilia bilancio 2011 e 2012 scioglimento c.c. isola...
 
Tabla de Valencias Elementos Químicos
Tabla de Valencias Elementos QuímicosTabla de Valencias Elementos Químicos
Tabla de Valencias Elementos Químicos
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

More from Alartzero

Riprogettazione Dellinterfaccia
Riprogettazione DellinterfacciaRiprogettazione Dellinterfaccia
Riprogettazione DellinterfacciaAlartzero
 
Valutazione Dellinterazione
Valutazione DellinterazioneValutazione Dellinterazione
Valutazione DellinterazioneAlartzero
 
Analisi Dei Requisiti E Progettazione Dellinterazione
Analisi Dei Requisiti E Progettazione DellinterazioneAnalisi Dei Requisiti E Progettazione Dellinterazione
Analisi Dei Requisiti E Progettazione DellinterazioneAlartzero
 
Programmazione per il web - WebWord
Programmazione per il web - WebWordProgrammazione per il web - WebWord
Programmazione per il web - WebWordAlartzero
 
Economia Dellinnovazione Caso Di Studio Nintendo
Economia Dellinnovazione   Caso Di Studio   NintendoEconomia Dellinnovazione   Caso Di Studio   Nintendo
Economia Dellinnovazione Caso Di Studio NintendoAlartzero
 
Programmazione Doc Gest, Analisi
Programmazione   Doc Gest, AnalisiProgrammazione   Doc Gest, Analisi
Programmazione Doc Gest, AnalisiAlartzero
 
Linguaggi Di Programmazione Caso Di Studio
Linguaggi Di Programmazione   Caso Di StudioLinguaggi Di Programmazione   Caso Di Studio
Linguaggi Di Programmazione Caso Di StudioAlartzero
 
Programmazione Doc Gest, Codifica
Programmazione   Doc Gest, CodificaProgrammazione   Doc Gest, Codifica
Programmazione Doc Gest, CodificaAlartzero
 
Virginio Desktop Codifica
Virginio Desktop   CodificaVirginio Desktop   Codifica
Virginio Desktop CodificaAlartzero
 
Algoritmi E Strutture Dati Alberi N Ari
Algoritmi E Strutture Dati   Alberi N AriAlgoritmi E Strutture Dati   Alberi N Ari
Algoritmi E Strutture Dati Alberi N AriAlartzero
 
Algoritmi E Strutture Dati Liste
Algoritmi E Strutture Dati   ListeAlgoritmi E Strutture Dati   Liste
Algoritmi E Strutture Dati ListeAlartzero
 
Virginio Desktop Analisi
Virginio Desktop   AnalisiVirginio Desktop   Analisi
Virginio Desktop AnalisiAlartzero
 
Ingegneria Del Software Schedule, Test
Ingegneria Del Software   Schedule, TestIngegneria Del Software   Schedule, Test
Ingegneria Del Software Schedule, TestAlartzero
 
Ingegneria Del Software Schedule, Progetto
Ingegneria Del Software   Schedule, ProgettoIngegneria Del Software   Schedule, Progetto
Ingegneria Del Software Schedule, ProgettoAlartzero
 
Ingegneria Del Software Schedule, Analisi
Ingegneria Del Software   Schedule, AnalisiIngegneria Del Software   Schedule, Analisi
Ingegneria Del Software Schedule, AnalisiAlartzero
 

More from Alartzero (15)

Riprogettazione Dellinterfaccia
Riprogettazione DellinterfacciaRiprogettazione Dellinterfaccia
Riprogettazione Dellinterfaccia
 
Valutazione Dellinterazione
Valutazione DellinterazioneValutazione Dellinterazione
Valutazione Dellinterazione
 
Analisi Dei Requisiti E Progettazione Dellinterazione
Analisi Dei Requisiti E Progettazione DellinterazioneAnalisi Dei Requisiti E Progettazione Dellinterazione
Analisi Dei Requisiti E Progettazione Dellinterazione
 
Programmazione per il web - WebWord
Programmazione per il web - WebWordProgrammazione per il web - WebWord
Programmazione per il web - WebWord
 
Economia Dellinnovazione Caso Di Studio Nintendo
Economia Dellinnovazione   Caso Di Studio   NintendoEconomia Dellinnovazione   Caso Di Studio   Nintendo
Economia Dellinnovazione Caso Di Studio Nintendo
 
Programmazione Doc Gest, Analisi
Programmazione   Doc Gest, AnalisiProgrammazione   Doc Gest, Analisi
Programmazione Doc Gest, Analisi
 
Linguaggi Di Programmazione Caso Di Studio
Linguaggi Di Programmazione   Caso Di StudioLinguaggi Di Programmazione   Caso Di Studio
Linguaggi Di Programmazione Caso Di Studio
 
Programmazione Doc Gest, Codifica
Programmazione   Doc Gest, CodificaProgrammazione   Doc Gest, Codifica
Programmazione Doc Gest, Codifica
 
Virginio Desktop Codifica
Virginio Desktop   CodificaVirginio Desktop   Codifica
Virginio Desktop Codifica
 
Algoritmi E Strutture Dati Alberi N Ari
Algoritmi E Strutture Dati   Alberi N AriAlgoritmi E Strutture Dati   Alberi N Ari
Algoritmi E Strutture Dati Alberi N Ari
 
Algoritmi E Strutture Dati Liste
Algoritmi E Strutture Dati   ListeAlgoritmi E Strutture Dati   Liste
Algoritmi E Strutture Dati Liste
 
Virginio Desktop Analisi
Virginio Desktop   AnalisiVirginio Desktop   Analisi
Virginio Desktop Analisi
 
Ingegneria Del Software Schedule, Test
Ingegneria Del Software   Schedule, TestIngegneria Del Software   Schedule, Test
Ingegneria Del Software Schedule, Test
 
Ingegneria Del Software Schedule, Progetto
Ingegneria Del Software   Schedule, ProgettoIngegneria Del Software   Schedule, Progetto
Ingegneria Del Software Schedule, Progetto
 
Ingegneria Del Software Schedule, Analisi
Ingegneria Del Software   Schedule, AnalisiIngegneria Del Software   Schedule, Analisi
Ingegneria Del Software Schedule, Analisi
 

Algoritmi E Strutture Dati Code