Serwisy partnerskie:
Close icon
Serwisy partnerskie

Sprytne porady i sztuczki cyklu Ekscytacje Maxa dotyczące kodowania (10)

Article Image
W tym odcinku cyklu Ekscytacje Maxa zastosowaliśmy kilka nowych pojęć w postaci typedef (definicje typów), enum (typy wyliczeniowe) i struct (struktury). Przyjrzyjmy się im nieco bardziej szczegółowo.

Typy wyliczeniowe (enum)

Jeśli chcemy zaimplementować automat skończony, będziemy potrzebować jakiegoś sposobu na przechowywanie jego bieżącego stanu. Jednym ze sposobów na to byłoby zidentyfikowanie zestawu stanów i powiązanie ich z liczbami za pomocą zestawu instrukcji #define:

#define NONE 0
#define DRIP_WAITING 1
#define DRIP_RISING 2
#define DRIP_SUSTAINING 3
#define DRIP_FALLING 4

Później możemy zadeklarować zmienną o nazwie currentState typu int (integer), po czym możemy wykonać przypisania takie jak:

currentState = NONE;

I możemy wykonać testy takie jak:

if (currentState == NONE)
{
// reszta kodu
}

Ta technika jest w porządku i nie jest trudno dodać więcej stanów. Jeśli jednak jesteś podobny do mnie, możesz chcieć spędzić więcej czasu na reorganizacji podejścia i zmianie liczb powiązanych z różnymi stanami, ponieważ lubisz, kiedy wszystko jest „tak jak trzeba”.

Słowo kluczowe enum pozwala nam utworzyć typ zdefiniowany przez użytkownika, składający się z zestawu nazwanych stałych zwanych enumeratorami:

enum PixelState
{
NONE,
DRIP_WAITING,
DRIP_RISING,
DRIP_SUSTAINING,
DRIP_FALLING
};

Zwróć uwagę, że po ostatnim wyliczeniu nie jest wymagany przecinek, ale po ‘}’ (czyli zamykającym nawiasie klamrowym) wymagany jest średnik. Domyślnie wyliczeniom przypisywane są przez kompilator wartości całkowite zaczynające się od 0. Oznacza to, że w powyższym przykładzie NONE otrzyma wartość 0, DRIP_WAITING otrzyma wartość 1 itd. Możliwe jest również przypisanie własnych wartości. Możliwe jest nawet przypisanie wielu enumeratorom tej samej wartości, ale wykracza to poza zakres naszej dyskusji.

Po zdefiniowaniu wyliczenia możemy zadeklarować jedną lub więcej zmiennych tego typu:

Aby przeczytać ten artykuł kup e-wydanie
Kup teraz
Firma:
Tematyka materiału: PROGRAMOWANIE ARDUINO, C/C++
AUTOR
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
Oceń najnowsze wydanie EdW
Wypełnij ankietę i odbierz prezent
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"