# Documentation

## Model a Vending Machine Using Mealy Semantics

The following chart uses Mealy semantics to model a vending machine.

### Open the Model

To open the model of a Mealy vending machine, click sf_mealy_vending_machinesf_mealy_vending_machine or type `sf_mealy_vending_machine` at the MATLAB® command prompt.

### Logic of the Mealy Vending Machine

In this example, the vending machine requires 15 cents to release a can of soda. The purchaser can insert a nickel or a dime, one at a time, to purchase the soda. The chart behaves like a Mealy machine because its output `soda` depends on both the input `coin` and current state, as follows:

When initial state got_0 is active.  No coin has been received or no coins are left.

• If a nickel is received (`coin` == 1), output `soda` remains 0, but state `got_nickel` becomes active.

• If a dime is received (`coin` == 2), output `soda` remains 0, but state `got_dime` becomes active.

• If input `coin` is not a dime or a nickel, state `got_0` stays active and no soda is released (output `soda` = 0).

In active state got_nickel.  A nickel was received.

• If another nickel is received (`coin` == 1), state `got_dime` becomes active, but no can is released (`soda` remains at 0).

• If a dime is received (`coin` == 2), a can is released (`soda` = 1), the coins are banked, and the active state becomes `got_0` because no coins are left.

• If input `coin` is not a dime or a nickel, state `got_nickel` stays active and no can is released (output `soda` = 0).

In active state got_dime.  A dime was received.

• If a nickel is received (`coin` == 1), a can is released (`soda` = 1), the coins are banked, and the active state becomes `got_0` because no coins are left.

• If a dime is received (`coin` == 2), a can is released (`soda` = 1), 15 cents is banked, and the active state becomes `got_nickel` because a nickel (change) is left.

• If input `coin` is not a dime or a nickel, state `got_dime` stays active and no can is released (output `soda` = 0).

### Design Rules in Mealy Vending Machine

This example of a Mealy vending machine illustrates the following Mealy design rules:

• The chart computes outputs in condition actions.

• There are no state actions or transition actions.

• The chart defines chart inputs (`coin`) and outputs (`soda`).

• The value of the input `coin` determines the output — whether or not soda is released.