ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
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í. MetodyCo 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í metodMetody 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í metodMetody 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á hodnotaSpolu 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říkladNyní 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ěrDneska 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.
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |