SlideShare a Scribd company logo
ANALISI



Pile: 


    •    Suffisso trasferisci(Coda<char>), dove Class Suffisso {private Coda<char> Radice;  

         Pila<char> Desinenza; Coda<char> Uscita; Coda<char> POS}, che scandendo una coda 

         di caratteri letta da una delle funzioni acquisisciElementoFile(FILE *F) o 

         acquisisciElementoTastiera() crea un oggetto Suffisso inserendo ciascun carattere di 

         OpNum in Radice, ciascun carattere di Suff in Desinenza, ciascun carattere di Fin in Uscita, 

         e ciascun carattere di Comm in POS


Esempio:

trasferisci( (>=1)zion(e,i) "s f/sing,f/pl" ) = {Radice: (> = 1); Desinenza: (n o i z); Uscita: (e , i); 

POS: (s ' ' f / s i n g , f / p l)}



Il problema consiste nella realizzazione della funzione Trasferisci che prende in input una Coda di 

caratteri e restituisce in output una struttura Suffisso.

La struttura suffisso sarà a sua volta composta da 

    •    Coda che conterrà la parte di stringa chiamata Radice

    •    Pila che conterrà la parte di stringa chiamata Desinenza

    •    Coda che conterrà la parte di stringa chiamata Uscita

    •    Coda che conterrà la parte di stringa chiamata POS

Ognuna di queste strutture conterrà una parte della stringa del formato (OpNum)Suff(Fin) "Comm" 

e rispettivamente: Radice conterrà OpNum, Desinenza conterrà Suff, Uscita conterrà Fin e infine 

POS conterrà Comm. 

Nella direttiva del problema non vi sono accenni alle seguenti problematiche: 

Per la funzione trasferisci:

         1. Non è indicato come comportarsi in caso di Stringa non Conforme.

Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                                    Pag.1di9
2. Non è indicato come comportarsi se le parti di Stringa Num, Suff, Fin, o Comm della 

            stringa passata alla funzione Trasferisci fossero vuote.

Questi due casi saranno affrontati nel seguente modo:

        1. In caso di Stringa non conforme la funzione Trasferisci non sarà eseguita.

        2. In caso di assenza di una delle parti  Num, Suff, Fin, o Comm, le rispettive strutture atte 

            a contenerle saranno vuote.

                                          PROGETTAZIONE


Le strutture uttilizzate per la realizzazione della funzione sono la coda, la pila e il suffisso.



Specifica sintattica della coda:

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




Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                                     Pag.2di9
Specifica semantica della coda

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;

         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



Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                               Pag.3di9
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"




Specifica sintattica della pila:

TIPI: 

          Pila

         Boolean

         Tipoelem

OPERATORI:

         CREAPILA:                                  ( )  Pila

         PILAVUOTA:                         (Pila)  Boolean

         LEGGIPILA:                           (Pila)  Tipoelem

         FUORIPILA:                           (Pila)  Pila

         INPILA:                  (Tipoelem, Pila)  Pila

Specifica semantica della pila:

TIPI:

         Pila = Insieme delle sequenze P = a1, a2, …, an di elementi di tipo tipoelem gestita con 

                   accesso LIFO;

         Boolean = Insieme dei valori di verità.

OPERATORI:

         CREAPILA = P  (sequenza vuota)

                 POST: P = L 



         PILAVUOTA(P) = b



Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                                Pag.4di9
POST: b = true SE P = L, b = false ALTRIMENTI

        LEGGIPILA(P) = a

                PRE: P = a1, a2, …, an && n >= 1

                POST: a = a1 

        FUORIPILA(P) = P'

                PRE: P = a1, a2, …, an && n >= 1

                POST: P' = a2, a3, …, an SE n >= 1, P’ = L SE n = 1

        INPILA(a, P) = P'

                PRE: P =  a1, a2, …, an && n >= 0

                POST: P' = a, a1, a2, …, an

Specifica sintattica del suffisso:

TIPI:

        Char

        Coda

        Pila

        Suffisso

OPERATORI:

        SETRADICE                    (Char)  Suffisso

        SETDESINENZA            (Char)  Suffisso

        SETUSCITA                     (Char)  Suffisso

        SETPOS                        (Char)  Suffisso

        GETRADICE                  (Coda)  Char

        GETDESINENZA             (Pila)  Char

        GETUSCITA                   (Coda)  Char

        GETPOS                          (Coda)  Char

OPERATORI DI SERVIZIO:

        TRASFERISCI               (Coda)  Suffisso



Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                       Pag.5di9
Specifica sintattica del suffisso:

TIPI:

        Char: è una carattere facente parte di una stringa;

        Pila = Insieme delle sequenze P = a1, a2, …, an di elementi di tipo tipoelem gestita con 

                  accesso LIFO;

        Coda: insieme delle sequenze Q = a1, a2, …, an di elementi di tipo TIPOELEM;

        Suffisso: insieme delle strutture formate da RADICE di tipo Coda, DESINENZA di tipo

                    Pila, USCITA di tipo Coda, POS di tipo Coda

OPERATORI:

        SETRADICE c = Q’

                POST: Q’ = Crea una coda prendendo un carattere

        SETDESINENZA c = P’

                POST: Q’ = Crea una pila prendendo un carattere

        SETUSCITA  c = Q’

                POST: Q’ = Crea una coda prendendo un carattere

        SETPOS c = Q’

                POST: Q’ = Crea una coda prendendo un carattere

        GETRADICE (Q) = c

                PRE: La coda non deve essere vuota

        GETDESINENZA (P) = c

                PRE: La pila non deve essere vuota

        GETUSCITA (Q) = c

                PRE: La coda non deve essere vuota

        GETPOS (Q) = c

                PRE: La coda non deve essere vuota




Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                               Pag.6di9
OPERATORI DI SERVIZIO

       TRASFERISCI (Q) = SUFFISSO

              PRE: Q = La coda deve essere diversa dalla stringa nulla

              POST: SUFFISSO




                                ALGORITMO RISOLUTIVO

TRASFERISCI

Crea un Suffisso;

Se la coda non è vuota

       Butta fuori dalla coda un carattere;

       Fintantoche il carattere presente nella testa della coda è diversa da ‘ ) ‘

              Allora

                       Setta radice in Suffisso con ciò che è presente nella testa della coda;

                       Butta fuori dalla coda l’elemento;

       fine –fintantoche

       Butta fuori dalla coda un carattere;

       Fintantoche il carattere presente nella testa della coda è diversa da ‘ ( ‘

              Allora

                       Setta desinenza in Suffisso con ciò che è presente nella testa della coda;

                       Butta fuori dalla coda l’elemento;

       fine –fintantoche

       Butta fuori dalla coda un carattere;

       Fintantoche il carattere presente nella testa della coda è diversa da ‘ ) ‘

              Allora

                       Setta uscita in Suffisso con ciò che è presente nella testa della coda;

                       Butta fuori dalla coda l’elemento;


Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                                  Pag.7di9
fine –fintantoche

          Butta fuori dalla coda un carattere;

          Butta fuori dalla coda un carattere;

          Fintantoche il carattere presente nella testa della coda è diversa da ‘ “ ‘

                 Allora

                          Setta pos in Suffisso con ciò che è presente nella testa della coda;

                          Butta fuori dalla coda l’elemento;

          fine –fintantoche

fine­se

Restituisci Suffisso;

                                          REALIZZAZIONE

Le realizzazioni effettuate sono le seguenti:

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

   2. Pila realizzata con puntatori.

                                                   TEST

   1. File non esistente




   2. Stringa data in input alla funzione Trasferisci risulta conforme




Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                                                  Pag.8di9
3. Il file non contiene nessuna stringa




   4. Stringa data in input alla funzione Trasferisci risulta non conforme




Altomare Ignazio,Centrone Sergio,Gadaleta Fabio                              Pag.9di9

More Related Content

PDF
Algoritmi E Strutture Dati Code
KEY
Pycrashcourse
PDF
Appunti di analisi funzionale [a.a. 1995 1996][prof. biagio ricceri][santi ca...
PDF
Lezione5 - MIPS & SPIM Unicam
PDF
Functional Programming per tutti
PDF
Lezione 13 (2 aprile 2012)
PPT
Corso c++
PDF
Pillole di C++
Algoritmi E Strutture Dati Code
Pycrashcourse
Appunti di analisi funzionale [a.a. 1995 1996][prof. biagio ricceri][santi ca...
Lezione5 - MIPS & SPIM Unicam
Functional Programming per tutti
Lezione 13 (2 aprile 2012)
Corso c++
Pillole di C++

What's hot (6)

PDF
Spyppolare o non spyppolare
PDF
2006 Py02 base
PDF
2008 python
PDF
2006 Py03 intermedio
PPT
Stringhe java
PDF
Algoritmi E Strutture Dati Alberi N Ari
Spyppolare o non spyppolare
2006 Py02 base
2008 python
2006 Py03 intermedio
Stringhe java
Algoritmi E Strutture Dati Alberi N Ari
Ad

Similar to Algoritmi E Strutture Dati Pile (20)

PDF
Lezione 12 (28 marzo 2012)
PDF
Lezione 12 (28 marzo 2012)
PDF
11 - Programmazione: Tipi di dato strutturati pt. 2
PDF
Esercitazione 4 (19 marzo 2012)
PDF
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
PDF
Python - Primi passi
PPT
07 1 funzioni
PPT
Excel Funzioni per la manipolazione delle stringhe, funzioni condizionali sem...
PDF
Lezione 3 (29 febbraio 2012)
PDF
Py a5 python-text
PDF
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
PDF
Soluzione esame a del 13 giugno 2012
PDF
Lezione 15 (2 aprile 2012)
PPTX
DOC
Linguaggi Di Programmazione Caso Di Studio
PDF
07 - Programmazione: Tipi di base e conversioni
PDF
Soluzione esonero del 4 aprile 2012
PDF
Lezione 16 (2 aprile 2012)
PPSX
Informatica di base
PPT
introduzione all'abero dei suffissi
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
11 - Programmazione: Tipi di dato strutturati pt. 2
Esercitazione 4 (19 marzo 2012)
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
Python - Primi passi
07 1 funzioni
Excel Funzioni per la manipolazione delle stringhe, funzioni condizionali sem...
Lezione 3 (29 febbraio 2012)
Py a5 python-text
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Soluzione esame a del 13 giugno 2012
Lezione 15 (2 aprile 2012)
Linguaggi Di Programmazione Caso Di Studio
07 - Programmazione: Tipi di base e conversioni
Soluzione esonero del 4 aprile 2012
Lezione 16 (2 aprile 2012)
Informatica di base
introduzione all'abero dei suffissi
Ad

More from Alartzero (13)

PDF
Riprogettazione Dellinterfaccia
PDF
Valutazione Dellinterazione
PDF
Analisi Dei Requisiti E Progettazione Dellinterazione
PDF
Programmazione per il web - WebWord
PPTX
Economia Dellinnovazione Caso Di Studio Nintendo
PDF
Programmazione Doc Gest, Analisi
PDF
Programmazione Doc Gest, Codifica
PDF
Virginio Desktop Codifica
PDF
Algoritmi E Strutture Dati Liste
PDF
Virginio Desktop Analisi
DOC
Ingegneria Del Software Schedule, Test
DOC
Ingegneria Del Software Schedule, Progetto
DOC
Ingegneria Del Software Schedule, Analisi
Riprogettazione Dellinterfaccia
Valutazione Dellinterazione
Analisi Dei Requisiti E Progettazione Dellinterazione
Programmazione per il web - WebWord
Economia Dellinnovazione Caso Di Studio Nintendo
Programmazione Doc Gest, Analisi
Programmazione Doc Gest, Codifica
Virginio Desktop Codifica
Algoritmi E Strutture Dati Liste
Virginio Desktop Analisi
Ingegneria Del Software Schedule, Test
Ingegneria Del Software Schedule, Progetto
Ingegneria Del Software Schedule, Analisi

Algoritmi E Strutture Dati Pile

  • 1. ANALISI Pile:  • Suffisso trasferisci(Coda<char>), dove Class Suffisso {private Coda<char> Radice;   Pila<char> Desinenza; Coda<char> Uscita; Coda<char> POS}, che scandendo una coda  di caratteri letta da una delle funzioni acquisisciElementoFile(FILE *F) o  acquisisciElementoTastiera() crea un oggetto Suffisso inserendo ciascun carattere di  OpNum in Radice, ciascun carattere di Suff in Desinenza, ciascun carattere di Fin in Uscita,  e ciascun carattere di Comm in POS Esempio: trasferisci( (>=1)zion(e,i) "s f/sing,f/pl" ) = {Radice: (> = 1); Desinenza: (n o i z); Uscita: (e , i);  POS: (s ' ' f / s i n g , f / p l)} Il problema consiste nella realizzazione della funzione Trasferisci che prende in input una Coda di  caratteri e restituisce in output una struttura Suffisso. La struttura suffisso sarà a sua volta composta da  • Coda che conterrà la parte di stringa chiamata Radice • Pila che conterrà la parte di stringa chiamata Desinenza • Coda che conterrà la parte di stringa chiamata Uscita • Coda che conterrà la parte di stringa chiamata POS Ognuna di queste strutture conterrà una parte della stringa del formato (OpNum)Suff(Fin) "Comm"  e rispettivamente: Radice conterrà OpNum, Desinenza conterrà Suff, Uscita conterrà Fin e infine  POS conterrà Comm.  Nella direttiva del problema non vi sono accenni alle seguenti problematiche:  Per la funzione trasferisci: 1. Non è indicato come comportarsi in caso di Stringa non Conforme. Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.1di9
  • 2. 2. Non è indicato come comportarsi se le parti di Stringa Num, Suff, Fin, o Comm della  stringa passata alla funzione Trasferisci fossero vuote. Questi due casi saranno affrontati nel seguente modo: 1. In caso di Stringa non conforme la funzione Trasferisci non sarà eseguita. 2. In caso di assenza di una delle parti  Num, Suff, Fin, o Comm, le rispettive strutture atte  a contenerle saranno vuote. PROGETTAZIONE Le strutture uttilizzate per la realizzazione della funzione sono la coda, la pila e il suffisso. Specifica sintattica della coda: 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 Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.2di9
  • 3. Specifica semantica della coda 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; 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 Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.3di9
  • 4. 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" Specifica sintattica della pila: TIPI:   Pila Boolean Tipoelem OPERATORI: CREAPILA:                                  ( )  Pila PILAVUOTA:                         (Pila)  Boolean LEGGIPILA:                           (Pila)  Tipoelem FUORIPILA:                           (Pila)  Pila INPILA:                  (Tipoelem, Pila)  Pila Specifica semantica della pila: TIPI: Pila = Insieme delle sequenze P = a1, a2, …, an di elementi di tipo tipoelem gestita con            accesso LIFO; Boolean = Insieme dei valori di verità. OPERATORI: CREAPILA = P  (sequenza vuota) POST: P = L  PILAVUOTA(P) = b Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.4di9
  • 5. POST: b = true SE P = L, b = false ALTRIMENTI LEGGIPILA(P) = a PRE: P = a1, a2, …, an && n >= 1 POST: a = a1  FUORIPILA(P) = P' PRE: P = a1, a2, …, an && n >= 1 POST: P' = a2, a3, …, an SE n >= 1, P’ = L SE n = 1 INPILA(a, P) = P' PRE: P =  a1, a2, …, an && n >= 0 POST: P' = a, a1, a2, …, an Specifica sintattica del suffisso: TIPI: Char Coda Pila Suffisso OPERATORI: SETRADICE                    (Char)  Suffisso SETDESINENZA            (Char)  Suffisso SETUSCITA       (Char)  Suffisso SETPOS       (Char)  Suffisso GETRADICE                  (Coda)  Char GETDESINENZA             (Pila)  Char GETUSCITA                   (Coda)  Char GETPOS                          (Coda)  Char OPERATORI DI SERVIZIO: TRASFERISCI               (Coda)  Suffisso Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.5di9
  • 6. Specifica sintattica del suffisso: TIPI: Char: è una carattere facente parte di una stringa; Pila = Insieme delle sequenze P = a1, a2, …, an di elementi di tipo tipoelem gestita con            accesso LIFO; Coda: insieme delle sequenze Q = a1, a2, …, an di elementi di tipo TIPOELEM; Suffisso: insieme delle strutture formate da RADICE di tipo Coda, DESINENZA di tipo     Pila, USCITA di tipo Coda, POS di tipo Coda OPERATORI: SETRADICE c = Q’ POST: Q’ = Crea una coda prendendo un carattere SETDESINENZA c = P’ POST: Q’ = Crea una pila prendendo un carattere SETUSCITA  c = Q’ POST: Q’ = Crea una coda prendendo un carattere SETPOS c = Q’ POST: Q’ = Crea una coda prendendo un carattere GETRADICE (Q) = c PRE: La coda non deve essere vuota GETDESINENZA (P) = c PRE: La pila non deve essere vuota GETUSCITA (Q) = c PRE: La coda non deve essere vuota GETPOS (Q) = c PRE: La coda non deve essere vuota Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.6di9
  • 7. OPERATORI DI SERVIZIO TRASFERISCI (Q) = SUFFISSO PRE: Q = La coda deve essere diversa dalla stringa nulla POST: SUFFISSO ALGORITMO RISOLUTIVO TRASFERISCI Crea un Suffisso; Se la coda non è vuota Butta fuori dalla coda un carattere; Fintantoche il carattere presente nella testa della coda è diversa da ‘ ) ‘ Allora Setta radice in Suffisso con ciò che è presente nella testa della coda; Butta fuori dalla coda l’elemento; fine –fintantoche Butta fuori dalla coda un carattere; Fintantoche il carattere presente nella testa della coda è diversa da ‘ ( ‘ Allora Setta desinenza in Suffisso con ciò che è presente nella testa della coda; Butta fuori dalla coda l’elemento; fine –fintantoche Butta fuori dalla coda un carattere; Fintantoche il carattere presente nella testa della coda è diversa da ‘ ) ‘ Allora Setta uscita in Suffisso con ciò che è presente nella testa della coda; Butta fuori dalla coda l’elemento; Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.7di9
  • 8. fine –fintantoche Butta fuori dalla coda un carattere; Butta fuori dalla coda un carattere; Fintantoche il carattere presente nella testa della coda è diversa da ‘ “ ‘ Allora Setta pos in Suffisso con ciò che è presente nella testa della coda; Butta fuori dalla coda l’elemento; fine –fintantoche fine­se Restituisci Suffisso; REALIZZAZIONE Le realizzazioni effettuate sono le seguenti: 1. Pila realizzata con vettore (il limite massimo è impostato a 1024 elementi). 2. Pila realizzata con puntatori. TEST 1. File non esistente 2. Stringa data in input alla funzione Trasferisci risulta conforme Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.8di9
  • 9. 3. Il file non contiene nessuna stringa 4. Stringa data in input alla funzione Trasferisci risulta non conforme Altomare Ignazio,Centrone Sergio,Gadaleta Fabio Pag.9di9