Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    18

    Fsm

    Ciao ragazzi,
    qualcuno può fornirmi indicazioni su come creare un programmino java che sfrutti una macchina a stati? Purtroppo non ho trovato alcuna guida , se avete qualche link o qualche libro, anche cartaceo, dove posso trovare indicazioni ve ne sarei grato...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Fsm

    Originariamente inviato da slyv
    qualcuno può fornirmi indicazioni su come creare un programmino java che sfrutti una macchina a stati?
    Beh, detto in maniera abbastanza semplice (e senza entrare nei formalismi perché non ne sarei capace), una macchina a stati è un sistema in cui ci sono un certo numero di stati e in cui ci sono delle regole specifiche che in base allo stato attuale e al dato in "input" da gestire dicono quale è il prossimo stato a cui passare.

    Esempio banale: ho una stringa:
    codice:
    "ciao   prova  macchina     stati"
    voglio stampare solo le lettere iniziali di ogni parola. Si può pensare di avere 2 stati 0 e 1, dove 0 indica lo stato relativo allo spazio e 1 indica lo stato relativo a un non-spazio.

    Se sono in stato 0 e trovo uno spazio, resto nello stato 0 mentre se trovo un non-spazio passo a stato 1.
    Se sono in stato 1 e trovo uno spazio, ritorno allo stato 0 mentre se trovo ancora un non-spazio resto nello stato 1.

    Ok, tradotto in codice Java:

    codice:
    class ProvaMacchinaStati
    {
        public static void main (String[] args)
        {
            String str = "ciao   prova  macchina     stati";
            int stato = 0;
    
            for (int i = 0; i < str.length (); i++)
            {
                char ch = str.charAt (i);
    
                switch (stato)
                {
                    case 0:
                        if (!Character.isSpaceChar (ch))
                        {
                            System.out.println ("Iniziale: " + ch);
                            stato = 1;
                        }
                        break;
                    case 1:
                        if (Character.isSpaceChar (ch))
                            stato = 0;
                        break;
                }
            }
        }
    }
    Output:
    codice:
    Iniziale: c
    Iniziale: p
    Iniziale: m
    Iniziale: s
    È un esempio banale/stupido ma pur sempre di una macchina a stati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    18
    mi hai dato un'ottima idea... adesso ci lavoro un po', magari se ho bisogno ancora di informazioni ti spiego meglio quello che dovrei implementare.
    Thanks

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.