2 Datové typy

Ahoj Jakube. Dneska bych ti rád vysvětlil datové typy. Cože co? Datové typy, přeci. Data, informace – jak říkalo Číslo 5. Už víš, že Ruby pracuje s nějakými proměnnými – tedy, že do proměnných ukládáme nějaká data. Ta data ale mají různé typy – máme tu čísla, řetězce, pole… A ještě dva speciální typy, a to symboly a konstanty.

V každém programu, který potom budeš psát, musíš přesně vědět, jaký datový typ ma daná proměnná. Ruby rozeznává tyto datové typy:

Fixnum – Číslo (celá čísla)

Celá čísla – integer (čti “intýdžr”) jsou taková, která neobsahují desetinnou čárku. Třeba -55, 0, 1, 2, 20, 35, 346976. Taková čísla – proměnné – můžeme sčítat, odečítat, prostě provádět s nimi matematické operace.

a teď zkusíme nějakou operaci

Teď se podívej, jak vypadá dělení – 10/3 by mělo být 3 a nějaký zbytek.

Float – Číslo (reálná čísla)

Float – čti “flout”. Druhým typem čísel jsou reálná čísla – s desetinnou čárkou. Vypadají úplně stejně, akorát se zapisují včetně desetinné čárky, tedy, pardon – tečky.

a ještě si zkusíme to dělení, jako v případě Integer čísla.

Vidíš ten rozdíl? A to všechno jen kvůli jedné tečce navíc. Proto si dej ve svých programech vždy pozor, jak definuješ čísla a operace s nimi.

String – Řetězec

String (čti “string”) je asi nejjednodušší datový typ. To, že používáš string, řekneš v Ruby jednoduše. Stačí ho uzavřít do “uvozovek”.

Dej ovšem pozor, pokud chceš získat data – jako vstup od uživatele – a ty následně používat pro nějaké matematické operace. Vzpomeň si na dnešní den, kdy ti pořád nechodil tvůj program – a nakonec byla chyba právě v tutom. Proto u řetězců používáme několik metod na jejich převod – například na čísla.

A budeme-li teď chtít proměnnou “vstup” vydělit nějakým číslem, stane se následující:

Použijeme tedy metodu pro převod na číslo – buď na celé číslo, a to “to_i” nebo na reálné – “to_f”

Stejně tak čísla můžeme převést zpět na řetězec, přes metodu “to_s”

Array – Pole

Pole (čti “e:rej”). Co je to pole? Zkus si pole představit jako vláček s vagónky. Vagónky můžeš přidávat i odebírat, můžeš zjišťovat jejich počet, vybírat osobní a nákladní… Pole fungují úplně stejně. Poli je jedno, jaké vagónky – objekty – obsahuje. Můžeš za sebe řadit čísla, řetězce, i další pole. Pole poznáš podle toho, že je uzavřené do hranatých závorek – “[]”

Zjistíš, kolik má pole prvků (vagónků)?

a jak přidat další prvek do pole?

Hash – Asociativní pole

Hash (čti “heš”) je speciální typ pole. Tady každý prvek pole má i svůj klíč, podle kterého se dá opět najít. Představ si to jako schránky na dopisy, kde klíčem bude jméno osoby, a obsahem třeba počet dopisů. Hash se označuje složenými závorkami – “{}”

A teď použijeme klíč – zeptáme se, kolik dopisů má kuba ve schránce

Jak vidíš, funguje to. Klíč k asociativnímu poli – Hashi – se zapisuje do hranatých závorek, jako pole. Počet prvků zjistíš stejně jako u Pole

Symboly

Právě jsme si ukázali příklad s Hashem. Jako klíč do Hashe se dá použít i celé číslo (integer). Tak k čemu vlastně ty symboly? Symboly hlavně šetří paměť počítače. Představ si, že bys psal nějaký program, co bude fungovat jako adresář. Každý záznam bude jako Hash, a bude obsahovat jméno, příjmení a telefonní číslo. Abys mohl u každé položky definovat klíč, použiješ na to symbol. Symbol je vlastně řetězec, který ale není v uvozovkách, ale jen má na začátku dvojtečku. Také by neměl obsahovat mezeru a nějaké paznaky :)

A teď náš příklad s adresářem

Právě jsme nadefinovali jeden záznam. A jak se teď dostat na jméno?

Pozorný čtenář jistě namítne – když napíšu “jmeno” => “kuba”, je to přeci to samé! Ano i ne. Použijeme-li totiž jako klíč k poli řetězec, Ruby toto “jmeno” uloží do paměti pokaždé jako nový objekt typu String, a tím si zabere další a další místo v paměti. U pár záznamů je to asi jedno, ale při stovkách, nebo tisících záznamů to již bude citelná ztráta paměti – a tím i rychlosti celého programu.

Symboly se také používají u metod, ale to si vysvětlíme až u metod samotných, beztak mám pocit, že máš plnou hlavu toho, co ses teď dozvěděl. Tak ještě poslední a končíme.

Konstanty

Pamatuješ, jak jsme spolu psali program na Sportku? Měli jsme tam dvě proměnné, kde jsme řekli, z kolika míčků se losuje a kolik se jich celkem vytáhne z osudí. Na to se přesně hodí konstanty. Konstanty jsou speciální druh. Jak je jednou nastavíš – tzn. přiřadíš jménu nějakou hodnotu, nejde to (bez chybové hlášky) už změnit. Vlastně – kontanty by se ani měnit neměly, prot to jsou konstanty :) Ukážu ti příklad z té Sportky.

Konstanty poznáš snadno. Jejich jmén je totiž zapsané velkými písmeny, nebo aspoň první písmeno je velké. Pokud se někde v kódu pokusíš změnit hodnotu konstanty, Ruby ti vynadá, ale hodnotu změní.

Příště si probereme jednotlivé datové typy trošku detailněji. A půjdeme trošku hlouběji, ať to není jen takhle suchá teorie :)

Leave a Reply

Your email address will not be published. Required fields are marked *

9 × = 72