LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Ruby IV.

Vítám Vás u dalšího dílu Ruby. Dnes se dozvíte, jak se vytvářejí metody a ukážeme si jejich využití.

12.2.2012 21:00 | Jakub Lares | Články autora | přečteno 3564×

Metody

Co to vůbec metoda je? Metoda je v podstatě zabalený kus kódu do jednoho celku (metody), kterou když zavoláme, tak se kód obsažený v metodě spustí. Někdo může znát metody pod pojmem funkce. K čemu vůbec metody jsou? Metody se používají, když máme v programu opakující se činnost. Například budeme chtít opakovaně generovat nějaký složitější text. Proto si uděláme metodu, na toto vypisování. Pokud si to někdo nedokáže představit, ukážeme si to později na příkladu. Máme 3 základní problémy, které se v programech objevují, pokud někdo neumí používat metody. Neúměrná velikost zdrojového kódu. S tím souvisí nepřehlednost, a pokud chceme něco v programu poupravit, tak to musíme udělat na více místech.

Definování metod

Metody se vytváří pomocí příkazu def jméno_metody, poté blok příkazů a ukončení bloku pomocí příkazu end.

def pozdrav
puts "ahoj"  
end

Nadefinovali jsme si metodu Pozdrav, která nám vypíše „ahoj“, pokud tento kus kódu spustíme, nic se nestane. Pro spuštění metody, ji totiž musíme zavolat. Existují také programy, které se skládají pouze z metod a nic jiného nedělají, takovýmto programům říkáme knihovny.

Volání metod

Metody voláme velice jednoduše, napíšeme pouze jejich jméno.



def pozdrav
puts "ahoj"  
end
puts "Prvni volani"
pozdrav
puts "Muzu si ji zavolat kolikrat chci"
pozdrav
pozdrav

Výstup

Prvni volani
ahoj
Muzu si ji zavolat kolikrat chci
ahoj
ahoj

Nesmíme zapomenout na to, že metodu musíme nejdříve nadefinovat a poté ji můžeme zavolat.

Předávání parametrů

Většinou se metodám předávají data (parametry), která zpracovávají. Abychom mohli metodě předat parametr, musíme si nadefinovat proměnné, do které se data uloží. Nadefinování metody bude vypadat takto: Def jméno_metody (parametr1, parametr2, parametr3) a zase zakončení slovíčkem end.



def pozdrav (jmeno)
puts "Ahoj, ty jsi #{jmeno}?"
end
pozdrav("Jakub")
a = "Martin"
pozdrav(a) #Muzeme predavat i promenne

výstup

Ahoj, ty jsi Jakub?
Ahoj, ty jsi Martin?

Jak vidíme na příkladu, metoda se volá úplně stejně, ale do závorek napíšeme parametr, který předáváme. Pokud je parametrů víc, akorát je oddělíme čárkou

Návratová hodnota

Spolu s parametry využívají metody také návratové hodnoty. Například máme metodu, která něco počítá, a potřebujeme z ní dostat výsledek ven z metody. K tomu slouží příkaz return.

def scitani (a,b,c)
vysledek = a
vysledek = vysledek + b
vysledek += c #Je to to samé jako vyseled = vysledek + c
return vysledek
end

vypocet = scitani(1,2,3)
puts vypocet

výstup

6

Na příkladu vidíme nadefinování metody se 3 parametry. Poté kus kódu, který nám parametry zpracovává a poté vrácení zpracovaného výsledku. Poté si zavoláme metodu s parametry a to co se nám vrátí pomocí return, se uloží do proměnné výpočet. Když slovíčko return zapomenete, Ruby si s tím i přesto poradí a automaticky vrátí poslední použitou proměnou, do které se něco ukládá. Takže pokud s příkladu smažeme return výsledek i přesto nám to vrátí, to co v tomto případě chceme. Nedoporučuji se na toto spoléhat a vždy příkaz return používat.

Lokální proměnné

Proměnné které používáme v metodách, jsou takzvané lokální proměnné a nemůžeme je tedy použít nikde jinde v kódu, pouze v metodě, to je taky jeden z důvodů proč se používá příkaz return.

def testovani
tester = "Ahoj"  
end
testovani
puts tester

výstup

Neznama promenna tester

Kdyby se tedy jmenovali proměnná v metodě a mimo ní stejně, nemají na sebe vůbec žádný vliv

tester = "Cau"
def testovani
tester = "Ahoj"  
end
testovani
puts tester  

výstup

Cau

A ještě jedna věc kterou bychom si měli pamatovat. Pokud pošleme nějaká data jako parametr do metody a potom ty data měníme, mimo metodu zůstanou nezměněna. Parametr se chová jako nová proměnná. Pro lepší pochopení příklad.

def test(a)
a = "ahoj"  
end
b = "cau"
test(b)
puts b

výstup

cau

Příklad

Nyní si ukážeme příklad, na které je vidět použití metod a proč jsme se je vlastně učili. Program je v podstatě zkouška, jak umí kdo počítat. Ukazuje příklady a ptá se na výsledky. Pokud odpovíme dobře, přičte se nám bod. Musíme tedy ptaní se několikrát opakovat.

puts "Dobry den, vitejte v testu z matematiky."

points = 0

puts "Kolik je 1+1?"
answer = gets.strip
if answer.to_i == 2
  puts "Spravne!"
  points = points + 1
else
  puts "Chyba! Spravna odpoved je 2."
end

puts "Kolik je 3+4?"
answer = gets.strip
if answer.to_i == 7
  puts "Spravne!"
  points = points + 1
else
  puts "Chyba! Spravna odpoved je 7."
end

puts "Kolik je 7+8?"
answer = gets.strip
if answer.to_i == 15
  puts "Spravne!"
  points = points + 1
else
  puts "Chyba! Spravna odpoved je 15."
end

puts "Kolik je 1+3?"
answer = gets.strip
if answer.to_i == 4
  puts "Spravne!"
  points = points + 1
else
  puts "Chyba! Spravna odpoved je 4."
end

puts "Diky za ucast v testu. Vase skore: #{points}b"

výstup

Dobry den, vitejte v testu z matematiky.
Kolik je 1+1?
3
Chyba! Spravna odpoved je 2.
Kolik je 3+4?
7
Spravne!
Kolik je 7+8?
15
Spravne!
Kolik je 1+3?
4
Spravne!
Diky za ucast v testu. Vase skore: 3b

Vidíme, že se nám část kódu opakuje, konkrétně kladení dotazu a kontrolování výsledku. Nyní následuje příklad, elegantnějším řešením pomocí metod.

def ask(a,b)
  puts "Kolik je #{a} + #{b}?"
  result = a + b
  answer = gets.strip
  if answer.to_i == result
    puts "Spravne!"
    return true
  else
    puts "Chyba! Spravna odpoved je #{result}."
    return false
  end
end

puts "Dobry den, vitejte v testu z matematiky."

points = 0

points = points + 1 if ask(1,1)
points = points + 1 if ask(3,4)
points = points + 1 if ask(7,8)
points = points + 1 if ask(1,3)

puts "Diky za ucast v testu. Vase skore: #{points}b"

výstup

Je totožný jako u předchozího příkladu.

Jak vidíme funkce programu je naprosto totožná, ale kód je o polovinu kratší a mnohem přehlednější. A lehce si můžeme předělat tento program na násobení oproti předchozímu příkladu, kde by jsme museli přepisovat na mnoha místech.

Závěr

Dneska jsme si tedy ukázali, jak se používají metody a k čemu slouží. Příště si už ukážeme objektově orientované programování v Ruby. Nadefinujeme si vlastní třídy, řekneme si jak se chovají proměnně ve třídách a mnoho dalšího.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

1.8.2017 7:32 / Cassidy
structural consultants

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

26.7.2017 21:12 / Jaromir Obr
Podminka

15.6.2017 9:34 / Ondřej Havlas
php,

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze