previous next Up Title Contents Index

Ohjelma C-kielellä


Alla on esitetty ratkaisu ja siihen liittyvä testiympäristö. Ohjelman käyttäjä simuloi antureita eli antaa ohjelmalle ohjeita lämmityksen ja ilmastoinnin suhteen get_message()-funktiossa. devices()-funktio simuloi laitteiden ohjaamista tulostamalla ruudulle laitteiden tilan eli status-muuttujan arvon.

    #include <stdio.h>
    #define ILMASTOINTI 1
    #define LAMMITYS 2
    #define POIS 0
    #define PAALLE 1
    struct message{
        int toiminta;
        int laite;
    };
    int get_message(struct message *);
    void devices(void);
    char status; /* järjestelmän tila; globaali muuttuja */
    void main(void)
    {
        struct message msg;
        printf ("\nStatus=%d",status);
        while (get_message(&msg))
        {
            if (msg.laite==ILMASTOINTI)
            {
                if (msg.toiminta==PAALLE)
                {
                    status |= ILMASTOINTI;
                }
                else
                {
                    status &= ~ILMASTOINTI;
                }
            }
            else if (msg.laite==LAMMITYS)
            {
                if (msg.toiminta==PAALLE)
                {
                    status |= LAMMITYS;
                } 
                else
                {
                    status &= ~LAMMITYS;
                }
            }
            devices();
        } /* end while */
    }
    int get_message(struct message *m)
    {
        printf ("\nAnna toiminta: päälle=1, pois=0");
        scanf ("%d",&(m->toiminta));
        printf ("\nAnna laite: ilmastointi=1, lämmitys=2");
        scanf ("%d",&(m->laite));
        return m->laite;
    }
    void devices(void)
    {
        printf ("\nstatus=%d",status);
    } 

previous next Up Title Contents Index