/*----------------------------------*/
/* 自動販売機の簡易コード
*/
/* 状態遷移図からコードを生成
*/
/*
2016/09/23 TK
*/
/*----------------------------------*/
#define GOODS_PRICE
120
/* 商品の価格 */
void vending_machine( void )
{
/* フラグ */
int input_coin_flag=0;
int push_button_flag=0;
int change_flag=0
/* 現在の入金額 */
int remain_coin=0;
while(1)
{
/* お金が入るのを待つ,ボタンが押されるのを待つ */
input_coin_flag = wait_input_coin( void );
push_button_flag = wait_push_button( void );
/* お金が入れられた→ランプ点灯 */
if( input_coin_flag == 1 ) {
remain_coin = input_coin_amount( void );
light_lamp( void );
input_coin_flag = 0;
}
/* ボタンが押された→商品を出す */
if( push_button_flag == 1 ) {
output_goods( void );
remain_coin = remain_coin - GOODS_PRICE;
push_button_flag = 2;
/* 残金が商品値段以上あり */
if( remain_coin >= GOODS_PRICE ) {
inpu_coin_flag = 1;
push_button_flag = 0;
}
}
/* おつりを出す */
if( push_button_flag == 2 ) {
output_coin( void );
remain_coin = 0;
chang_flag = 1;
}
/* おつりを出した後:各フラグを初期化する */
if( chang_flag == 1 ) {
chang_flag = 0;
remain_coin = 0;
input_coin_flag = 0;
push_button_flag = 0;
}
} /* while(1) */
}
© Copyright 2026 Paperzz