© 2013 All rights reserved.
0

Seriál Ruby on Rails 3: Základy syntaxe I

Základy syntaxe v ruby. Psaní komentářů v kódu, pravidla pro psaní proměnných, deklarace a inicializace proměnných…

Syntaxe neboli pravidla pro zápis a formátování, jazyka nám popisuje základní pravidla, která je nutná dodržovat pro psaní kódu. Syntaxe nám přesně definuje způsob zápisu konstant, definic metod a proměnných, používání operátorů apod. Vlastně bychom mohli říct, že veškerý text, který kód obsahuje, se řídí určitou syntaxí, která je přesně stanovena ve specifikaci jazyka.

Všechny programovací jazyky mají svou vlastní syntaxi, která bývá často dost podobná. Stejně tak syntaxe Ruby je podobná například se syntaxí, kterou používá Python nebo Perl, ze kterých koncept Ruby vzešel.

 

Podívejte se na jednoduchý program:

 

  1. def maximum(numbers)
  2.     #nastaveni vychozi hodnoty
  3.     max = 0
  4.     #postupne projde pole cisel
  5.     numbers.each {
  6.         | number |
  7.         #pokud je max hodnota mensi nez hodnota z pole
  8.         if max < number.to_i
  9.             #nastavime novou hodnotu
  10.             max = number
  11.         end
  12.     }
  13.     #vraci hodnotu
  14.     return max
  15. end
  16. numbers = [11, 2, 4, 2]
  17. puts maximum(numbers)

V tomto programu, který najde v poli čísel to největší a vrátí jej, si můžete prohlídnout jak syntaxe v Ruby vůbec vypadá. I v tak jednoduchém programu existuje celá řada syntaktických pravidel, které je nutné dodržet, jako například:

  • oddělování jednotlivých syntaktických konstrukcí
  • pojmenování proměnných
  • pojmenování funkcí
  • a mnohé další

Nyní máte snad představu o tom, co to syntaxe vůbec je, a můžeme se podívat podrobněji na některé konkrétní definice.

Komentáře v Ruby

Komentáře kódu jsou části kódu, které se neprovádí a interpret jazyka je při kompilaci nebo překladu jazyka přeskakuje a nebere je vůbec v potaz, proto množství komentářů nemá pro výslednou rychlost programu nebo pro jeho překlad vůbec žádný vliv.

Stejně jako je důležitý kód programu, jsou důležité i komentáře v kódu obsažené. Hlavním významem komentářů je potřeba orientováni se v kódu. Většina programátorů se bohužel při psaní komentováním kódu nezabývá a nezdržuje, což je špatně.

Jak už jsem napsal, komentáře slouží především k lepší orientaci v kódu. Ani sebelepší programátor není schopný zorientovat se v jakémkoli kódu a tento kód pochopit. A pokud si myslíte, že vlastní kód komentovat nemusíte, že se v něm přece vždy vyznáte, tak to taky není pravda a uvidíte, že časem vám nebude jasné, proč jste jednotlivé bloky napsali právě tak jak napsali.

Samozřejmě není dobré komentovat úplně všechno, nadmíra komentářů vede naopak ke zpřehlednění kódu a jeho čitelnost zhoršuje, proto je i při psaní komentářů třeba přemýšlet a psát je tak, aby bylo vždy jasné, jak daný program pracuje, a proč byla zvolena právě tato metoda postupu, i když mohl program pracovat například jinak.

V samotném Ruby existují dva způsoby jak psát komentáře:

  • jednořádkové komentáře
  • víceřádkové komentáře

Jednořádkové komentáře

Jednořádkové komentáře se používají nejčastěji. Slouží k základnímu komentování programu a uvozují většinou řádek, nebo blok kódu, který je pod nimi, nebo vedle nich.

 

Tyto komentáře se v kódu vyznačují znakem # a setkali jsme se s nimi už v ukázce syntaxe jazyka:

  1. #jednoradkovy komentar
  2. puts “ahoj”
  3. puts “svete” #dalsi jednoradkovy komentar

Jak vidíte, takový komentář může být v programu na jakémkoli místě, a pokračuje až do konce řádku. Interpret jazyka tento kód nezpracuje, a část od počátku komentáře až do konce řádku při překladu vynechává. V řádku komentáře po začátku komentáře už program pokračovat nemůže a jeho další zpracování musí být přesunuto na další řádek.

Víceřádkové komentáře

Kromě jednořádkových komentářů existuje v Ruby i možnost psaní víceřádkových komentářů. Tyto komentáře mohou obsahovat podrobnější informace o daném problému, které by nebylo vhodné psát více jednořádkových komentářů.

Další využití může být na začátku souboru pro popis tohoto souboru, vlastně vytvoření takové hlavičky.

Tyto komentáře začínají příkazem =begin a končí příkazem =end:

  1. =begin
  2. autor: Jiri Zachar
  3. about: program pro ovladani spinace
  4. =end
  5. puts “Start programu.”
  6. =begin
  7. Toto je dlouhy
  8.   viceradkovy
  9. komentar.
  10. =end

Stejně jako u jednořádkového komentáře je i tento komentář interpretem jazyka při překladu vypuštěn, ovšem jeden rozdíl tady přeci jenom je – víceřádkové komentáře musí začínat vždy na začátku řádku a stejně tak na začátku řádku končit.

Podle syntaktických pravidel tedy musí být jak příkaz =begin, tak příkaz =end vždy na začátku řádku, a pokud bychom toto pravidlo nedodrželi, nastane v programu chyba a program nebude fungovat.

Takto špatně umístěný komentář:

  1. maximum([1, 2, 43]) =begin komentar =end

způsobí chybu “syntax error, unexpected ‘=’, expecting $end” a program nebude vůbec zpracován.

Proměnné

Základem programování je práce s proměnnými. Právě tyto proměnné jsou stavebním kamenem jakéhokoli interpretovaného a většiny kompilovaných jazyků. V Ruby tomu není jinak a práce s proměnnými patří k rutinním záležitostem každého programátora.

Pokud bychom chtěli definovat co to proměnná vůbec je, mohli bychom říct, že je to jakési jméno identifikátoru, která uchovává určitou hodnotu. Je to tedy symbolická reprezentace libovolného objektu v programu.

V Ruby není nutné proměnné nějak definovat a předem určovat jejich hodnotu (jako tomu je například v C++, kde před použitím proměnné musí být tato proměnná přesně definována včetně jejího typu) s výjimkou třídní proměnné, která nás prozatím nemusí zajímat.

Proměnná v Ruby vzniká v místě jejího použití a dále existuje až do doby její platnosti v programu.

Pro psaní názvu proměnných existují opět určitá pravidla:

  • název proměnné musí začínat znakem a-z (pouze malá písmena) nebo podtržítkem “_”
  • název proměnné musí obsahovat pouze znaky a-z nebo A-Z, čísla nebo podtržítko.

Pokud bychom tento zápis nedodrželi, skončí program opět syntaktickou chybou, nebo nebude fungovat správně (v případě konstant).

Krom těchto pravidel existuje navíc v Ruby několik rezervovaných slov, které jako názvy proměnných být použity nesmí. Těchto slov je celkem 38:

BEGIN class ensure nil self when
END def false not super while
alias defined for or then yield
and do if redo true
begin else in rescue undef
break elsif module retry unless
case end next return until

Nyní už tedy víme, co to proměnná je a jak ji pojmenovat, můžeme se tedy podívat na to, jak proměnnou použít.

Deklarace a inicializace proměnné

Deklarace a inicializace proměnných možná znáte z jiných programovacích jazyků, jde o proces, kdy vytvoříme novou proměnnou ve zdrojovém kódu (deklarace) a začneme s ní pracovat tím, že do ní přiřadíme nějakou hodnotu (inicializace).

V Ruby je proces deklarace a inicializace jednodušší o to, že deklaraci proměnné vůbec nemusíme provádět. V Ruby proměnná vzniká až při její inicializaci.

V kódu to vypadá tak, že jakmile potřebujeme vytvořit novou hodnotu, prostě ji použijeme a interpret si ji automaticky deklaruje a vytvoří v paměti. S proměnnou můžeme potom dále pracovat.

  1. promenna1 = 3
  2. puts promenna1 #vypise 3

Jak vidíte na ukázce, proměnná vzniká až v případě jejího prvního použití. Nemusí nás zajímat že, tato proměnná nikdy neexistovala a my jsme ji nijak nevytvořili, pouze ji začneme používat.

Stejně tak nás nemusí zajímat datový typ proměnné, ale do jedné proměnné můžeme ukládat různé objekty:

  1. promenna2 = 20
  2. puts promenna2 #vypise 20
  3. promenna2 = “retezec”
  4. puts promenna2 #vypise „retezec“

Závěrem

V příští části se podíváme na vícenásobné přiřazování proměnných, na rozdíly mezi lokálními a globálními proměnnými a na konstanty.

Comments are closed for this page

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836