Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

4. diel - Premenné, komentáre a čítanie vstupu

V minulej lekcii, Úvod do Arduina, inštalácia Arduino IDE a Tinkercad , sme sa nainštalovali a sprevádzkovali vyvojové prostredia pre Arduino.

V tejto kapitole sa budeme zaoberať premennými. Povieme si, na čo sa dajú využiť, aké typy premenných existujú a tiež prečo sú pre nás dôležité do ďalších lekcií. Povieme si niečo o komentároch a čítaní dát na vstupoch Arduina.

Premenné

Než sa vôbec pustíme do konkrétnych dátových typov, mali by sme si povedať, čo to vôbec taká premenná je. Premenná je pomenované miesto v pamäti počítača, kam si môžeme uložiť rôzne dáta. Názov premenných si vytvára programátor, ale je potrebné dodržiavať určité pravidlá, aby sme docielili to, že kód pre nás bude prehľadný a pekne čitateľný.

Každá takáto premenná musí byť konkrétneho dátového typu, podľa druhu a veľkosti ukladanej informácie. Môže predstavovať číslo, znak alebo dokonca aj text. Počítač potom ľahko spozná s akými hodnotami pracuje a vyhradí preto potrebné miesto v pamäti, pretože každý dátový typ má obmedzenú veľkosť.

Pomenovanie premenných

Ďalšou veľmi dôležitou časťou premenných je ich pomenovanie. Hodnota, ktorú premenná môže nadobudnúť, je iba polovica toho, čo premenná obsahuje.

Existujú pomerne striktné pravidlá na to, aby sa názov premennej dal vôbec považovať za platný, a ešte striktnejšie na to, ako by mal vyzerať v ideálnom prípade.

Názvy premenných z hľadiska zápisu

Základným pravidlom pri tvorbe premenných je, že nepoužívame diakritiku (háčiky a čiarky). V identifikátore premennej by to spôsobilo, že nám systém vyhodí chybu po nahratí programu. Čo sa potom týka obsahu danej premennej (text, pole), tam už diakritiku používať môžeme.

Háčiky a čiarky môžeme tiež používať pri písaní komentárov, pretože komentáre slúžia iba nám a prekladač si ich teda nevšíma.

Ďalšou dôležitou vecou je, že názov premennej by nikdy nemal začínať číslom, alebo iným symbolom (napríklad podčiarkovníkom). Posledná vec, ktorej by sme sa mali vyvarovať je kombinovanie viacerých jazykov. Z hľadiska prehľadnosti programu je lepšie používať iba jeden, vami preferovaný jazyk (to sa týka celého programu - komentáre, názvy premenných, ...).

Takto vyzerá rozdiel medzi správne a zle vytvorenou premennou:

✓ Správne

float obvod;
string pozdrav = "Ahoj";

✗ Zle

float průměr;
string zpráva = "Výsledek";

Teraz vieme ako vytvoriť premennú tak, aby sa riadila podľa zavedených praktík, ktoré sme tu spomenuli. Presunieme sa teda k pravidlám pre ideálny tvar zápisu. Je to dôležité z dôvodu orientácie v programe. Najmä pri rozsiahlejších programoch je nutné brať tieto pravidlá do úvahy.

Názvy premenných z hľadiska správneho významu

Pomenovávať premenné z hľadiska správneho významu je pomerne dôležité, pretože chceme dosiahnuť to, aby sme sa v programe orientovali nielen my, ale aj každý, kto by sa na kód pozrel. Názvy teda musia byť intuitívne a správne zastupovať, čo nami definovaná premenná obsahuje. Základné rozdiely zle a dobre pomenovaných premenných môžete vidieť tu:

✓ Správne

string text_displej;
int motor_brana;

✗ Zle

int x;
string text2;

Môžete posúdiť sami, ktorá verzia je lepšie pochopiteľná, keby ste sa k tomuto kódu vrátili za pár rokov.

Názvy viacslovných premenných

Hoci nejde o terminálnu chybu, ktorá by znemožnila funkčnosť programu, kvôli dôraznosti na prehľadnosť programu je toto pravidlo tiež pomerne dôležité.

Držíme sa jedného typu definovania premenných. Môžeme použiť štýl "ťavy" - každé nové slovo v premennej začína veľkým písmenom (motorBrana), alebo štýlu "hada" - s použitím podčiarkovníka medzi jednotlivými slovami v názve premennej (motor_brana).

Stojí určite za zmienku, že vo vývojových prostrediach, ktoré používame, nemožno užiť medzery medzi slovami názvu premennej – systém by nám opäť vyhodil chybu.

Či už si spôsob zapisovania premenných vyberieme akýkoľvek, rozhodne čitateľnosť programu zlepší, keď spôsob bude jednotný a tým pádom prehľadný. Nižšie môžeme vidieť spôsob, akým premenné zapísať správne, rovnako ako zle:

✓ Správne

int senzorVchod;
int motor_brana;

✗ Zle

int senzorvchod;
int motor brana;

Čo sa týka viacslovných premenných, ich použitie je pomerne situačné. Ako sme spomenuli v predchádzajúcom odseku, je určite potrebné vedieť, že medzera sa v programovacom jazyku tvorí podčiarkovníkom. Používanie viacslovných premenných nie je vždy nutné. Pokiaľ máme premennú, ktorá vyjadruje jednoduchú funkciu, nie je nutné ju vyjadrovať viac slovami za každú cenu. Radšej použijeme niečo jednoduché a úderné.

Dátové typy

Najdôležitejšie zo všetkého – a bez čoho náš program nemôže nikdy správne fungovať – je zvolenie správnych dátových typov pre jednotlivé premenné. Napríklad keď vieme, že náš program sa zaoberá iba zapnutím a vypnutím nejakého komponentu, môžeme použiť bool, ktorý nám bude vracať len 0 a 1, čo nám v tejto situácii bohato stačí. Menšia chyba je samozrejme použiť nevhodný dátový typ, ktorý napríklad zaberá viac systémovej pamäte, než úplne nekompatibilný dátový typ, ktorý nebude fungovať.

Používanie správnych a najviac úsporných dátových typov prichádza s časom – čím viac človek programuje, tým lepšie sa v týchto detailoch orientuje.

Konkrétne dátové typy, ktoré je možné používať tu v Arduine môžete vidieť tu:

char (8 bit) Znak, nadobúda hodnotu práve jedného ASCII znaku (-128 až 127)
byte (8 bit) Je schopný uložiť jedno 8 bitové číslo v rozmedzí (0 až 255)
boolean (8 bit) Jednoduchá logika True(1)/False(0)
int (16 bit) Nadobúda hodnoty celého čísla od (-32 768 až 32 767)
unsigned int (16 bit) Podobne ako int, len sa záporné hodnoty "prelejú" do kladných, teda uložia hodnoty (0 až 65 535)
long (32 bit) Uchováva číslo v rozsahu (-2 147 483 648 až 2 147 483 647)
unsigned long (32 bit) Uloží číslo v rozsahu (0 - 4 294 967 295)
float (32 bit) Desatinné číslo (-3.4028235E38 to 3.4028235E38)
double (64 bit) Desatinné číslo s dvojnásobnou presnosťou
word (16 bit) Rovnaké ako unsigned int (0 až 65535)
string Dátový typ, v ktorom môžeme uchovať textový reťazec
Ako premenné deklarovať?

Než premenné začneme používať, musíme ich deklarovať (zverejniť). Pokiaľ do nedeklarovanej premennej rovno pokúsime niečo uložiť, tak nám kompiler vynadá (dá sa to prirovnať k tomu, keď chcete niečo uložiť do trezoru, ale žiadny trezor ste si nekúpili). Možností deklarácie je hneď niekoľko:

// První způsob - konstanty, neměnitelné proměnné
#define hodnota 10

// Druhý způsob - klasické proměnné
int hodnota = 10; // proměnná má nastavený typ int a hodnotu 10
int hodnota; // proměnná typu int bez přiřazené hodnoty

#define je jeden z mnohých zvláštnych príkazov, ktoré sa spracujú ešte pred samotnou kompiláciou programu. Hovorí sa im príkazy preprocesora. Takto definované konštanty nemajú svoj presne daný typ a ich hodnotu nemožno zmeniť.

Pokiaľ premennú deklarujeme, nepriradíme jej hodnotu a potom ju vyvoláme, tak nenastane chyba. Program sa bude tváriť, že je v nej 0 (v prípade int, float, ...). Na druhej strane nie je dobré s tým počítať, pretože v skutočnosti môže byť táto hodnota náhodná. Pokiaľ ide o typ string - tam sa bude nachádzať prázdny reťazec.

Používanie komentárov

Takou maličkosťou, ktorá je však pre nás mnohokrát veľmi dôležitá, sú komentáre. V programovaní myslíme komentárom text, ktorý je súčasťou programu, ale nepočíta sa do jeho výsledného kompilovaného kódu. Najčastejšie slúži na určité objasnenie syntaxe - programátor si robí v programe komentáre buď, aby sa v programe sám oveľa lepšie vyznal, alebo tiež aby sa v ňom vyznal ktokoľvek iný, kto do programu nahliadne.

Tvorba komentárov je rôzna závisle na jazyku, ale jazyk Arduino a rodina jazykov C celkovo, mám dve možnosti ako komentár vytvoriť. Jedna možnosť je komentár na jeden riadok a druhá verzia je viacriadková. Text komentára by mal stručne vysvetľovať čo syntax u neho napísaná znamená alebo obsahuje.

Jednoriadkový komentár vytvoríme pomocou dvoch lomítok // pred text. To znamená, že až do konca riadka bude text považovaný za komentár a tým pádom nebude súčasťou kompilovaného kódu.

float obvod = 5; //první způsob komentování - používáme komentář pouze pro 1 řádek

Druhým spôsobom, ako komentár pridať, je vložiť pred nami napísaný text lomítko a hviezdičku, za text potom hviezdičku a lomítko (/* ... */). Týmto spôsobom môžeme okomentovať ľubovoľnú časť programu. Výhoda tohto spôsobu je tá, že nie sme závislí na riadkoch, ale oblasť zakomentovania si môžeme zvoliť ľubovoľne.

Keď symbol hviezdičky a lomítka za text nevložíme, zakomentujeme celý kód a tým pádom nebude kompilovaný, tzn. celý kód sa stane jedným veľkým komentárom.

/*
 Fukce provádí něco strašného,
 ale nic nevrátí
*/
void slozitaFunkce() {}

Komentáre sú dôležité kvôli prehľadnosti a intuitívnosti kódu.

Čítanie vstupu od užívateľa

Posledná vec, ktorú si v dnešnej lekcii ukážeme je čítanie vstupu od užívateľa. Náš program sa tak stane viac flexibilný a budeme môcť reagovať na rôzne situácie.

Funkcia Serial.available()

Preto aby sme mohli čítať vstup používateľa nám poslúži funkcia Serial.available(). Ukážeme si jednoduchý kód, na ktorom si vysvetlíme, ako táto funkcia vôbec funguje.

int vek_uzivatele = 0; // Proměnná do které budeme ukládat věk uživatele

void setup()
{
  Serial.begin(9600);
  Serial.println("Zadejte svuj vek: ");
}

void loop()
{
  if (Serial.available() > 0) // Podmínka, která nám čte vložené znaky do sériového monitoru
  {
    vek_uzivatele = Serial.parseInt(); // Převod textu na číslo
    Serial.print("Tvuj vek je: ");
    Serial.print(vek_uzivatele); // Výpis věku uživatele
  }
}

Vo funkcii void loop() program zistí, či dostal nejaký vstup: if (Serial.available() > 0) {.... V kladnom prípade prevedie text na celé číslo: vek_uzivatele = Serial.parseInt(). Nakoniec do monitora vypíše výsledok.

Nie je tu ošetrená možnosť chybného zadania. Užívateľ býva nepredvídateľný a nemožno teda vždy očakávať, že zadá presne to, čo po ňom chceme.

Tým by sme dnešnú lekciu uzavreli.

Nasledujúce lekcie, Podmienky a ich použitie , nám ukáže možnosti vetvenia programu pomocou podmienečných výrazov. Budeme si klásť podmienky.


 

Predchádzajúci článok
Úvod do Arduina, inštalácia Arduino IDE a Tinkercad
Všetky články v sekcii
Arduino - Programovací jazyk
Preskočiť článok
(neodporúčame)
Podmienky a ich použitie
Článok pre vás napísal Dominik Němeček
Avatar
Užívateľské hodnotenie:
3 hlasov
Autor se věnuje programování mikropočítačů Arduino.
Aktivity