Macchina a stati finiti con puntatori a funzione in C

di il
6 risposte

Macchina a stati finiti con puntatori a funzione in C

Ciao a tutti!
Nel mio processo di apprendimento e di sviluppo sw, linguaggio C, mi sto imbattendo in diversi progetti con macchine a stati che utilizzano puntatori a funzioni. Studiando e cercando online viene proposta questa soluzione in luogo di una macchina a stati gestita "solo" da switch case (chiaramente dipende dalla complessita' del progetto). Ho trovato diversi link per approfondire, tipo

http://en.wikipedia.org/wiki/Event-driven_finite-state_machine

o questo

http://www.iasfbo.inaf.it/Services/Local/Beta/bs019598/0198/b198arp1.htm

ma vorrei capire definitivamente in qualche modo la logica che c'e' dietro, ci sono vicino ma dovrei assodare quanto recepito. Quello che vi chiedo e se avete qualche riferimento online sul quale approfondire o qualche documentazione aggiuntiva particolarmente chiara ... o se qualcuno ha qualche esempio sottomano da condividere. Grazie a tutti per l'attenzione!

6 Risposte

  • Re: Macchina a stati finiti con puntatori a funzione in C

    I due link che hai postato vanno a braccetto con la seguente domanda:

    ho fame, posso usare il cambio per salire le scale?

    Una cosa sono gli automi a stati finiti
    Una cosa sono i puntatori a funzione.

    Il secondo link, in particolare, LASCIALO PERDERE e' evidente fin dai primi paragrafi, che e' stato scritto da uno NON DEL MESTIERE, tra l'altro, confermato dalle ultime righe:
    Stefano Casini, ingegnere, è articolista di BETA dal 1995 e svolge un lavoro che non ha nulla a che fare con la programmazione
    Ed e' pure un ingegnere! Ma scusa, tu ti faresti curare da un fruttivendolo?


    Quindi, ricominciamo:

    1) non ti e' chiaro che cosa e' e come funziona un automa a stati finiti OPPURE
    2) non ti e' chiaro che cosa e' e come funziona un puntatore a funzione?
  • Re: Macchina a stati finiti con puntatori a funzione in C

    Ciao Migliorabile, grazie per aver risposto!
    Dunque, i due link erano d'esempio (ne avrei potuti prendere altri) solo per toccare i due argomenti citati perche', come ho scritto, sto documentandomi e cercando d'approfondire. Ho ben chiaro che la macchina a stati ed i puntatori a funzione siano due cose distinte, ho idea di come funzionino e a cosa servono... quello che sto cercando e se ci fosse e qualcuno conoscesse un esempio di automa a stati finiti in cui gli stati vengono gestiti con puntatori a funzione, spero la definizione non sia troppo grossalana e dia un'idea di cio' che intendo.
    Grazie!
  • Re: Macchina a stati finiti con puntatori a funzione in C

    Dubito: hanno usi TOTALMENTE diversi.

    Comunque se vuoi un esempio eclatante di automa a stati finiti: le espressioni regolari

    Ripeto: non ti servono esempi che mettono assieme le due filosofie.

    Se proprio li vuoi avere, li puoi creare da te.

    Posti il codice e il forum ti puo' dire se chai fatto una scemenza o concettualmente e' corretto.
  • Re: Macchina a stati finiti con puntatori a funzione in C

    Grazie mille per la risposta e il supporto; ho capito l'antifona che mi proponi, vedro' il da farsi!
    Cmq, se posso permettermi, i tuoi dubbi sull'uso delle due cose assieme non sono ben riposti, possono coesistere eccome, anzi, sono brutalmente usati nei sistemi embedded. Solo come esempio, su stackoverflow puoi trovare questo

    http://stackoverflow.com/questions/13864089/state-machines-with-function-pointers-how-to-set-the-function-pointers

    Ah.... W gli Ingegneri!!!!
  • Re: Macchina a stati finiti con puntatori a funzione in C

    BomberUS ha scritto:


    Cmq, se posso permettermi, i tuoi dubbi sull'uso delle due cose assieme non sono ben riposti, possono coesistere eccome, anzi, sono brutalmente usati nei sistemi embedded. Solo come esempio, su stackoverflow puoi trovare questo

    http://stackoverflow.com/questions/13864089/state-machines-with-function-pointers-how-to-set-the-function-pointers)
    Uno switch con valori 0,1,2,3,4 ecc, viene ottimizzato piu' o meno nello stesso modo direttamente dal compilatore.

    Comunque, e' un classico Command design pattern
  • Re: Macchina a stati finiti con puntatori a funzione in C

    Grazie mille per il contributo, apprezzo molto il tentativo anche se ero piu' interessato alla logica d'implementazione che al comportamento del compilatore.
    Chiarito un po' meglio e precisamente l'argomento, se qualcuno vuole condividere qualcosa sarebbe una gran cosa, grazie in anticipo!
Devi accedere o registrarti per scrivere nel forum
6 risposte