INFORMATIKA Z kladn pojmy objektov orientovanho programov n
; TOM PIB { V CLAV VRBK Z padoesk univerzita v Plzni
C lem tohoto lnku je pivst tene k pochopen elementrn ch zklad objektov orientovanho programovn . K tomu, abychom sprvn pochopili a nauili se efektivn vyu vat objektov orientovan programovn , je nutnost osvojit si sprvn styl mylen . Ka d z ns vn m a sm l o okoln m svt trochu jinak. Matematik m e okol vn mat jako abstraktn numerick struktury, umlec jej vid jako svt barev a tvar. Jist si te polo te otzku, pro by ns mlo zaj mat, jak kdo vn m svt. Prv toto vn mn je pro programtora zsadn , proto e on mus vytvoit po taov program napodobuj c reln svt. Z toho vypl v i hlavn mylenka objektov orientovanho programovn (OOP) a tou je co nejv rn ji a nejjednodueji popsat sv t skuten. Asi se shodneme na tom, e vtina z ns vn m okoln svt jako vci. Hrnek, do kterho jste si rno udlali aj, je vc, idle, na kter sed te, je vc i auto, po kterm tou te, je vc. V po taov terminologii bychom pojem vc nenali. Mus me hledat pod pojmem Objekt. To znamen, e hrnek je objekt, idle je objekt, auto je objekt, dokonce i zapomenut pen enka v aut je objekt. Objektem je zde nejen vc, ale nap. tak lovk, 488
Matematika - fyzika - informatika 19 2009/2010
m sto, pojem nebo teba udlost. Tento rozd l nm dv uritou zkladn pedstavu. V b nm ivot vn mme svt jako vci , v terminologii OOP vn mme svt jako objekty . teni, kte jsou ji seznmeni s procedurln m programovn m, si jist budou klst otzku, jak je hlavn mylenka tvorby programu pi objektovm programovn , respektive v em je OOP tak pevratn? Hlavn pednost objektov orientovanho programu je, e se stv nzornj m, srozumitelnj m a lze ho lpe spravovat. Pokud je toti poteba nco vylepit, zpravidla se to t k jen nkolika objekt a zbytek programu lze nechat v pvodn m stavu. To urit pisp v k vt efektivit nvrhu a tvorby programu. Ped nstupem objektov orientovanho p stupu se programy skldaly z globln ch dat a z globln ch funkc , kter s tmito daty pracuj . Hovo me o procedurln m stylu programovn . Procedurln styl m adu nev hod plynouc ch prv z globln ho p stupu k datm. V voj takov ch program byl vak ze zatku velmi rychl , ale v uritm okam iku se takov program stv velmi t ce spravovateln m. Pokud je poteba takov program upravit, je nutn zashnout na mnoha m stech.
Objekt a instance
Nejlpe ve pochop me, kdy si uk eme nzorn p klad z p rody { zv e. Pou ijeme k tomu objekt Zvire. Zv e m eme popsat pomoc jeho atribut (popisuj vlastnosti objektu Zvire) a jeho metod (popisuj chovn objektu Zvire). Ka d zv e pat k njakmu druhu a m jistou hmotnost a v ku. Zvire m samozejm mnohem v ce atribut, kter by ho charakterizovaly, ale urit se shodneme, e minimln ti v e uveden atributy charakterizuj vechna zv ata. Metoda je innost, kterou je schopen objekt vykonat. To znamen, e u naeho zv ete by to mohlo b t j st, bhat, spt. Urit u mnoh z vs napadlo, e se dosud bav me sp e v abstraktn (teoretick) rovin ne v rovin reln (konkrtn ). Abstraktn objekt si m ete pedstavit jako zjednoduen popis relnho objektu (tj. bez podrobnost ). Kdy to pevedeme na n p klad, tak u abstraktn ho objektu Zvire se sice m eme setkat s atributy Druh, Hmotnost a Vyska, ale tyto atributy stle nedenuj konkrtn hodnoty. Usuzujete sprvn, abstraktn objekt slou jen jako jaksi ablona pro skuten objekt. Skuten zv e m vechny atributy a metody denovan v abstraktn m objektu Zve, nav c je charakterizovan podrobnostmi, kter skuten zv e bl e specikuj . Abstraktn zv e je tedy modelem Matematika - fyzika - informatika 19 2009/2010
489
skutenho zv ete. Jak bylo ji d ve uvedeno, abstraktn zv e je denovno atributy Druh, Hmotnost a Vyska (neobsahuje vak jejich konkrtn hodnoty). Skuten zv e je pak charakterizovno hodnotami piazen mi k tmto atributm, nap klad: Druh = Pes, Hmotnost = 15 kg a Vyska = = 50 cm.
Tda (class)
Ve vtin objektov orientovan ch programovac ch jazyc ch je nutn pedt m, ne se vytvo objekt, deklarovat t du. Tda je ablona, pomoc n se tvo (skuten) objekty (instance dan t dy) a denuje, jak budou nov objekty vypadat a pracovat. Pou ijeme-li opt pedchoz p klad, m eme ci, e Pes je instanc t dy Zvire. Ka d objekt z t e t dy m stejnou strukturu atribut a chovn , kter jsou denovny v tto t d. Je-li vytvoen objekt s nzvem o ze t dy T, ekneme, e o je instanc T . Na t dy a objekty se tak m eme d vat takto: T da je to, co navrhujeme a programujeme. Objekt je to, co se z dan t dy vytv za bhu aplikace. Prozat m jsme se sp e bavili jen o atributech, objektech a t dch, ale jet jsme se nezm nili o metodch. Ti z vs, kte u proli njak m kurzem procedurln ho programovn , si mohou pojem metoda pedstavit jako procedury a funkce. Pro ty, kte dn m podobn m kurzem neproli, m e poslou it pedstava, e metoda je innost, kterou m objekt provst. Tato innost je popsna pomoc skupiny p kaz, kter se nachzej v tle metody. Zrove u jsme si uvedli, e innosti, kter by objekt Zvire mohl vykonvat, jsou j st, bhat a spt metody Jist, Behat a Spat jsou veobecn (univerzln ) a bude je obsahovat ka d Zvire. Tyto veobecn (univerzln ) metody budou uvedeny bez parametru a to, kter Zvire m j t spt, ur me t m, od kter instance zv ete metodu Spat zavolme. Konkrtn podoba a podrobnj popis toho, jak metodu vytvoit, je popsn dle v textu.
Denovn tdy
Podoba denice t dy (obr. 1) zvis na programovac m jazyku. Z dvodu toho, e jedn m z nejroz enj ch programovac ch jazyk pro OOP je Java, budou uvdny p klady kdu v jazyce Java. ten mus ovem dle pro sebe rozliovat to podstatn, v em spo vaj zklady OOP, od toho, co je jen ilustrativn , tj. zpsob zpisu prvk OOP v jazyce Java. 490
Matematika - fyzika - informatika 19 2009/2010
; Obr. 1
Uveden denice t dy m ti sti: kl ov slovo class nzev t dy tlo t dy
Deklarace atributu tdy
Z uvedenho p kladu jsou zejm zkladn sti deklarace atributu t dy: datov typ nzev datov polo ky (atributu)
; Obr. 2
Jak denovat metodu
Jak ji bylo uvedeno, metody popisuj chovn objektu. Metodu si m eme pedstavit jako skupinu p kaz provdj c ch uritou innost, kter je denovna nsleduj c mi polo kami: N vratovTyp jmnoMetody (parametry ) { // tlo metody }
Matematika - fyzika - informatika 19 2009/2010
491
N vratovTyp
mus b t nkter datov typ (nap. int, oat, boolean,
: : : ). Nvrat z metody a p padn pedn nvratov hodnoty zpsob
p kaz return. Je-li nvratov m typem void, metoda nevrac hodnotu. P kaz return provede nvrat z metody a vrac zen programu zpt za p kaz, kter metodu vyvolal. Zpis p kazu return je return vraz
Tento p kaz vrac hodnotu v razu v raz , kter mus b t shodnho typu, jako je nvratov typ metody 5]. P kaz return bychom vyu ili nap klad v p pad, e pi denovn metody Behat, chceme, aby nm metoda po #spnm pebhnut Zvirete z bodu A do bodu B vrtila hodnotu true (logick 1), v opanm p pad (nedojde k pebhnut zv ete) hodnotu false (logick 0). Pozici bod A a B zjist me pomoc seznamu parametr. Dle v metod denujeme lokln promnnou s nzvem stav, kter je logickho datovho typu. V takovm p pad by zdrojov kd vypadal njak takto: boolean Behat (int bod_A_x,int bod_A_y, int bod_B_x, int bod_B_y) { boolean stav //zdrojov k d vykon vaj c pesun Zvirete z bodu A do bodu B, podle zadanych souradnic return stav }
mus b t platn identiktor (Identiktory v Jav mohou m t neomezenou dlku. Mal a velk p smena se pova uj za rozd ln znaky, co znamen, e nap. identiktory chobot a Chobot jsou navzjem rzn. Ka d identiktor mus za nat p smenem nebo podtr tkem. Zbyl st v ceznakovho identiktoru m e nav c obsahovat slice 0 : : : 9 a znak $ ) 5]. parametry { asto se setkte s t m, e metody k tomu, aby provedly po adovanou innost, potebuj dal data. Tmto potebn m datm se k seznam parametr. Parametr je deklarovn stanoven m svho datovho typu a nzvu (identiktoru). Velice se to podob deklarovn atribut jen s t m rozd lem, e deklarace je v kulat ch zvorkch a zobrazuje se vpravo od nzvu metody. Jet mal poznmka: deklarace parametr mus b t oddleny rkami. P klad:
jmnoMetody
492
Matematika - fyzika - informatika 19 2009/2010
void
metoda ( int x, int y ) { // tlo metody
}
tlo metody je vymezeno poten a koncovou slo enou zvorkou { vechny p kazy uvnit tchto zvorek se naz vaj blok kdu 1].
Jak to cel spustit
D ve ne se zaneme zab vat nle itostmi, kter mus program obsahovat pro to, abychom ho mohli spustit, si mus me ci, jak je vbec funkce objekt. Jak u jsme si uvedli v e, tak objekty v sob zahrnuj nejen data, ale i metody, kter nad uveden mi daty pracuj . Data i metody jsou navzjem svzny takov m zpsobem, e objekt m eme pedat z jedn sti programu do jin a ob sti mohou pistupovat nejen k datov m atributm, ale p stupn jsou i operace, kter vykonvaj metody. Tak e nap klad objekt typu etzec (string) poskytuje nejen prostor pro ulo en znak etzce, ale poskytuje i metody pro provdn operac nad ulo en m etzcem { vyhledvn , zmnu mal ch p smen na velk, uren dlky etzce a podobn. Hlavn vyu it objekt je pi tvorb vt ch program, kter se skldaj z nkolika objekt jeden se star o v stup na obrazovku a zpracovv pokyny od u ivatele, dal provd v poty, jet jin pos l data po s ti atd. Ka d tento objekt je naprogramovn do znan m ry samostatn nejen proto, aby se v nm autor po plroce sm vyznal, ale zejmna proto, e se ji hotov a funkn objekty daj pou t i v dal ch programech. Te kdy jsme si nast nili funkci objekt a v me jak denovat t du a jej atributy a metody, mus me um stit t du do programu. Pro lep pehlednost si um st me nai t du Zvire mimo hlavn st programu. Hlavn program, pesnji eeno metoda, kter je vyvolna po sputn programu jako prvn , se mus jmenovat main a mus b t v programu v dy uvedena. Tato metoda mus b t zapouzdena , tj. mus b t uvnit v njak t d (viz dle). Na jmn t dy nm zat m nezle , ale mus se tato t da bezpodm nen jmenovat jako soubor, ve kterm je ulo ena, vetn dodr en stejn ch mal ch a velk ch p smen v nzvu 2]. Nejlpe celou situaci opt pochop me z p kladu: public class MujPrvniProgram { public static void main(String argumenty ]) {
Matematika - fyzika - informatika 19 2009/2010
493
Zvire zviratko = new Zvire() boolean vysledek vysledek = false vysledek = zviratko.Behat(0,0,15,15) if (vysledek) System.out.println("Zvire uspesne prebehlo.") else System.out.println("Zvire bohuzel neprebehlo, zkontrolujte zadane body.") } } class Zvire { string druh int hmotnost int vyska boolean Behat (int bod_A_x, int bod_A_y, int bod_B_x, int bod_B_y) { boolean stav //zdrojov k d vykon vaj c pesun Zvirete z bodu A do bodu B, podle zadanych souradnic return stav } }
Pod vejme se, jak to funguje. Prvn st zdrojovho kdu denuje hlavn t du MujPrvniProgram. Zb vaj c st obsahuje denici t dy Zvire. Pjdeme dek po dku a postupn si uk eme, co jsme vlastn vytvoili. Hned v prvn m dku vs mo n zaraz slov ko public { toto slov ko oznauje veejnou t du, m eme si to pedstavit jako, e k n m p stup ka d . Po denici hlavn t dy MujPrvniProgram nsleduje denice hlavn sti programu { metoda main. Pro metodu main() plat urit pravidla: Mus b t uvedena ve t d, kter je oznaena jako public. Mus m t pesn tuto podobu: public static void main (String ] args) { tlo metody main }
494
Matematika - fyzika - informatika 19 2009/2010
Nespluje-li main() zm nn po adavky, program nebude mo n pelo it. Dal m p kazem vytv me objekt (instanci) t dy Zvire s nzvem zviratko. Nsleduje deklarace promnn s nzvem vysledek, kter je datovho typu boolean. Pot do promnn vysledek piad me hodnotu false. V dal m dku volme metodu Behat() a pedvme j tyi parametry. Tato metoda se nachz v t d Zvire a slou k pebhnut zv ete z bodu A do bodu B a vrt nvratovou hodnotu datovho typu boolean pomoc p kazu return. Vimnte si, e v p kazu volaj c m metodu Behat() dojde ke dvma vcem. Nejd ve je volna metoda Behat(). Po dokonen innosti metody Behat() je hodnota vrcen touto metodou ulo ena do promnn vysledek pomoc opertoru piazen . Promnn vysledek je pot pou ita v podm nnm p kazu if. Na obrazovce je nsledn zobrazena zprva, kterou program vybral na zklad logick hodnoty promnn vysledek.
Ddi nost
Jedn m ze zkladn ch kamen OOP je bezpochyby ddinost. Asi ka d si u podle nzvu dok e udlat pedstavu co to ddinost je. A skuten pojem ddinost v OOP se velmi podob reln ddinosti v b nm ivot, tud tomu kdy dd me urit vlastnosti (predispozice) od naich rodi. Jej u itenost si uk eme hned v nsleduj c m p kladu. Pedstavte si, e nebudeme denovat objekt Zvire. M sto toho jeho atributy a metody um st me do vech objekt pedstavuj c ch jednotliv zv ata. Vytvo me tedy nap klad objekt psa, koky, velryby, elvy a kon. Neboli atributy a metody se opakuj ptkrt { jednou pro ka d z pti objekt. Ale piel za Vmi zoolog s prosbou, e by poteboval evidovat jet u ka dho zv ete jeho dlku. Pro ns to tedy znamen, e potebujeme pidat atribut dlka. Proto e jsme si na zatku nevytvoili objekt Zvire, kter by zasteoval nmi vytvoen objekty, tak nm nezb v nic jinho ne pracn vlo it atribut dlka do ka dho z pti objekt. A nyn se uk e s la ddinosti, proto e pem liv programtor by si nejd ve vytvoil jeden objekt, do kterho by seskupil atributy a metody, kter jsou pro vechny objekty spolen (shoduj se u vt ho potu objekt). Konkrtn v naem p pad by si vytvoil objekt Zvire, v kterm by byly vechny spolen atributy a metody. Ostatn ch pt objekt zdd objekt Zvire spolu s jeho atributy a metodami. A nyn by u realizace Matematika - fyzika - informatika 19 2009/2010
495
dosti zoologa nebyl takov problm, proto e pidn atributu dlka se provede v jedinm objektu { Zvire. Zb vaj c objekty automaticky obdr
atribut dlka zddn z objektu Zvire. Jet si uk eme nzornou pomcku pro rozpoznn aplikace ddinosti. Vztah generalizace-specializace, kter je kl ov pro volbu u it ddinosti, m eme asto rozpoznat pomoc vztahu je . V naem p klad si m eme ci Pes je Zvire . To znamen, e ka d Pes je tak Zvire, je tedy zvltn m p padem zv ete. Zvire je tedy generalizac , Pes specializac . Pokud si m eme ci T2 je T1, pak v mnoha p padech plat , e T2 je specializac T1 a T1 generalizac T2. Ve vztahu ddinosti to znamen,
e t da T1 je nad zenou t dou t dy T2 6]. Je dle it si uvdomit, e vztah je nen symetrick , to znamen, e neplat obrcen. Nelze ci, e Zvire je Pes, nebo( ka d Zvire nen Psem. Z tohoto tvrzen je zejm, e zkladn t da je chud ne odvozen { odvozen t da obsahuje vechny leny zkladn (viz vztah je), ale obrcen to neplat . D ky tomuto vztahu si m eme v programu vytvoit teba pole zv at a do nj umis(ovat st dav psy, koky, kon, velryby, : : :
Zapouzden
Dal velkou v hodou, kterou nm OOP poskytuje je zapouzden . Co je vlastn na tom zapouzden tak ohromuj c ho? Zjednoduen se d ci, e zapouzden nm zajist , aby s atributy nebo metodami, kter se nachzej v objektu, nm nemanipuloval jin objekt, kter k tomu nem prvo. Neboli slovy Rudolfa Pecinovskho: Nikdo nesm m t anci zjistit, jak to dlm, e um m to, co um m 3]. Tuto schopnost ocen me pedev m v p pad slo itj ch program, abychom ani omylem nemohli ovlivnit chod nkter jin sti. Zapouzden si m eme pedstavit tak, e mme vechny souvisej c atributy a metody pod jednou stechou . Akoliv je to pravda, skuten m dvodem pou vn zapouzden je prevence vzniku chyb. Pokroilej ten, kter m zkuenosti s procedurln m programovn m pi porovnn obou zpsob programovn zjist , e v procedurln m programovn neexistuje dostaten ochrana proti nesprvnmu pou it atribut a procedur. Pokud si ale pod atributy pedstav me jakkoliv datov polo ky, pak v procedurln m programovn jejich ochrana ped neoprvnnou manipulac zvenku existuje { tou je lokln deklarace. Promnn a procedury deklarovan lokln v njak procedue slou jen tto procedue a nejsou zvenku nijak p stupn. Jedn se ovem o jinou #rove ochrany ne u t d 496
Matematika - fyzika - informatika 19 2009/2010
v OOP. To v OOP e prv zapouzden , kter umo uje programtorovi um stit atributy a metody do t dy a nsledn stanovit pravidla, kter budou slou it ke kontrole p stupu 1].
Polymorsmus
Kdybyste se pod vali do slovn ku ciz ch slov a vyhledali si pojem polymorsmus, nali byste jako v znam slova: mnohotvrnost, rznorodost. Te si pravdpodobn budete kat co to m spolenho s OOP. Prv polymorsmus je vlastnost OOP, kter programtorovi velice usnaduje prci. Vra(me se zpt k naemu p kladu se zv aty. Pedstavte si, e v na aplikaci MujPrvniProgram budeme m t krom hlavn t dy jet dv dal t dy: t du Zvire a t du Clovek. V obou t dch budeme m t deklarovny urit atributy, kter budou jednotliv objekty popisovat. Dle tyto t dy budou obsahovat metodu Zobrazit(), kter by mla zobrazit informace o objektech t dy Zvire a o objektech t dy Clovek. Pozornj tene jist napadne, v dy( se ob metody v obou t dch jmenuj stejn! Maj sice podobn chovn (#koly), ale ob budou odlin provedeny. A zde prv nastupuje polymorsmus. Pedstavte si, e by pro metodu Zobrazit() byl v ka d t d pou it jin nzev, nap klad ZobrazitZvire() a ZobrazitCloveka(). Programtor, kter by chtl tyto t dy pou t, by si musel zapamatovat nzvy vech metod ka dho z objekt. To m e b t obt n zvlt v p pad, kdy t da obsahuje velk mno stv metod. Programtoi se problmm s metodami a nzvy metod vyh baj prostednictv m polymorsmu. Denuj v ka d t d metodu se stejn m nzvem, kter m podobn chovn . D ky tomu si mus zapamatovat pouze jeden nzev, kter je s t mto chovn m spojen. Pokud je to pro vs stle moc zamotan tak se pojme pod vat na p klad polymorsmu z relnho ivota. Asi ka d v , co to je dlkov ovlada, jak se ovld a k emu slou . Jist budete souhlasit s tvrzen m, e dva dlkov ovladae, kter vypadaj #pln stejn mohou ovldat rozd ln za zen (nap. televizi a DVD pehrva). Polymorsmus v tomto p pad zahrnuje dv polo ky se stejn m nzvem (dlkov ovlada), provdj c stejn #kol (ovldn neho ), kter se ovem vnitn odliuj . Polymorsmus neslou jenom pro usnadnn ivota programtora-sklerotika, ale ve spojen s ddinost hlavn k tomu, abychom mohli proj t v cyklu nmi vytvoen pole rzn ch zv at, ka dmu zavolali jeho metodu Matematika - fyzika - informatika 19 2009/2010
497
/Zarvi()/ a na tento pokyn by pes zatkal, koka zamoukala, atd. { tedy ka d by udlal to, co je jemu vlastn , co mu ukld jeho metoda.
Co ci zvrem
Existuje velk mno stv programovac ch jazyk umo uj c ch objektov orientovan programovn , nap. Smalltalk, Java, C#, C++, Object Pascal, Visual Basic. NET, Lisp, PHP, Python, Ruby. Z tch nejpou vanj ch je poteba uvst pedev m Javu, C#, C++ a PHP 4]. Samozejm nikdo neoekv, e po peten tohoto lnku budete znt objektov orientovan programovn . Ale zkladn a nezbytn krok k tomu, abyste mohli za t tvoit svoje vlastn objektov orientovan programy, je pochopit zkladn principy a mylenky OOP. K tomu vm ml tento lnek dopomoci. Literatura 1] Keogh, J. { Giannini, M.: OOP bez pedchoz ch znalost . Brno : Computer Press, 2006. 2] Herout, P.: Uebnice jazyka Java. esk Budjovice, Kopp, 2001. 3] Pecinovsk, R.: Mysl me objektov v jazyku Java 5.0. Grada, Praha 2004. 4] Objektov orientovan programov n online]. 2008 , 22. 11. 2008. Dostupn z WWW:
. 5] Studentsk informan server Dion online]. 4. 2. 2001. Dostupn z WWW: . 6] Programov n se zamen m na. NET a jazyk C# online]. 27. 7. 2006. Dostupn z WWW: .
498
Matematika - fyzika - informatika 19 2009/2010
GeoGebra { vce ne dynamick geometrie LUK HONZK { MIROSLAV TICH Fakulta pedagogick Z U v Plzni, Stedn kola aplikovan kybernetiky Hradec Kr lov
(Dokonen)
Pklad 2 { Nalezen bodu na parabole spl ujcho danou podmnku
Zadn: Najdte bod paraboly y = 02x2 nejbli danmu bodu M = = 3 ;2]. Tento p klad se m eit kombinac geometrick ch a algebraick ch prostedk. een a) Parabola je dna pedpisem f: y=0,2x2. Vytvo me funkci v(x) reprezentuj c vzdlenost bodu M od bodu x f (x)] tto paraboly. Extrm (minimum) tto funkce je u hledan vzdlenost. Extrm tto funkce chceme hledat pomoc derivace. Problm je, e GeoGebra um hledat extrmy jen u polynom. Derivaci lze vak snadno sestrojit jako funkci, #lohu pevst na hledn prse ku grafu tto funkce a osy x, t m z skme nulov bod derivace, nsledn hledan extrm. Cel een je vidt na obrzku 5a.
;; ; ; Obr. 5a een pomoc derivace
Matematika - fyzika - informatika 19 2009/2010
499
een b) Chceme #lohu eit obecnji, nejen pro jednu kvadratickou funkci, ale pro libovolnou funkci f : y = ax2 s parametrem a. Parametr budeme mnit posuvn kem, p slun se budou dle jeho hodnoty mnit grafy v geometrickm okn i hodnoty v algebraickm okn. Pedchoz een mus me upravit. Hledan m bodem T paraboly bude prochzet normla jdouc i bodem M . Rovnice normly je n(x) = ; f (1x0 ) (x ; x0 )+ f (x0 ). Bod M na normle le , bude v tto rovnici gurovat takto: M = x n(x)]. Neznm je x0 , tj. x-ov souadnice hledanho bodu T na parabole. Tuto rovnici lze eit gracky hledn m prse ku dvou kivek reprezentuj c ch levou a pravou stranu rovnice normly. Lev strana tto rovnice je rovna n(x), tedy y-ov souadnici bodu M , na obrzku 5b je popsna ls. Kivku ps reprezentuj c pravou stranu rovnice sestroj me dle rovnice normly s t m, e se jedn o funkci promnn x0 , x je v tomto pedpisu x-ov souadnice bodu M . Prse k B graf ls a ps pak u uruje x-ovou souadnici hledanho bodu T na parabole. Ten je v konstrukci uren algebraicky pomoc sv ch souadnic: T x(B ), f (x(B ))]. Pak lze konstruovat (a samozejm mit) hledanou minimln vzdlenost. 0
;; ; Obr. 5b seka MT uruje hledanou minim ln vzd lenost
V tto #loze je pkn vidt kombinace pou it algebraick ch a geometrick ch prostedk programu.
Pklad 3 { Konstrukce mnoiny bod dan vlastnosti
Zadn: Je dna kru nice a p mka. Urete mno inu sted vech kru nic, kter se vn dot kaj kru nice dan a dan p mka je jejich tenou.
500
Matematika - fyzika - informatika 19 2009/2010
een konstrukn: Bez #jmy na obecnosti zadn #lohy m eme volit kru nici k o rovnici x2 + (y ; 2)2 = 1, danou tenou bude osa x. Vol me libovoln bod T na dan kru nici k. Sted p slun hledan kru nice pro tento bod dotyku le na polop mce ST . Bod T zrove uruje i spolenou tenu kru nice dan a hledan. Sted hledan kru nice pak le
na ose #hlu tvoenm touto tenou a tenou danou. Takto dostaneme jeden sted, jednu kru nici vyhovuj c zadn . /lohu dokon me a p slunou hledanou mno inu sted vech kru nic vyhovuj c ch zadn sestroj me pomoc nstroje Mno ina bod , kter je podobn stejnmu nstroji Cabri Geometry (obr. 6). st algebraick : Z skali jsme hledanou mno inu bod, chyb nm ale jej analytick vyjden . Na z skanou mno inu um st me libovoln ch 5 bod, zkuebn jimi prolo me ku eloseku. Ta evidentn pokr v celou z skanou mno inu bod, jedn se o parabolu. Problm nastv s analytick m vyjden m tto paraboly. Pi zmn um stn nkterho z ptice bod uruj c ch parabolu se mn v okn algebry rovnice tto paraboly. GeoGebra toti nezjednoduuje v raz { rovnici z skan paraboly. Potebujeme ukzat, e se jedn o stle stejnou parabolu. To m eme vyeit pomoc algebraick ch mo nost programu, ur me parametr a ohnisko z skan paraboly. Pou ijeme postupn p kazy w = parametr e], F = ohnisko e], V = vrchol e], kde e je nmi prolo en ku eloseka. Tyto hodnoty ji
nezvisej na poloze bod parabolu uruj c ch. Pak u snadno zap eme rovnici paraboly v kanonickm tvaru: (x ; x(V ))2 = 2 w(y ; y(V )).
;; ; ; Obr. 6 Parabola jako mnoina bod
Matematika - fyzika - informatika 19 2009/2010
501
Konstrukci m eme provst i jinak s pou it m prostedk, kter nemme pi klasickm r sovn . Sestroj me bod T a polop mku ST jako v pedchoz m een a pak mno inu vech bod v rovin stejn vzdlen ch od bodu T i od dan teny { osy x. Touto mno inou je parabola, kterou snadno sestroj me jedin m p kazem { Parabola T, OsaX]. Prse k tto paraboly a polop mky ST je hledan sted kru nice.
;; ; Obr. 7 Druh een p kladu 3
V tto #loze, v n je een jak geometrick, tak i sten algebraick s vyu it m analytick geometrie, byly ukzny mo nosti programu pi prce s ku elosekami.
Pklad 4 { Rozbor kueloseky
Zadn: Jsou dny body A = 5 4], B = 0 3], C = ;3 2], D = 0 ;1] a E = 12 ;3], kter uruj ku eloseku. Zjistte, o jakou ku eloseku se jedn, a naleznte jej sted, vrcholy, osy, ohniska a p padn asymptoty nebo d c p mku. Dle urete teny z bodu R = ;6 ;2] i dotykov body. een: Nejprve zobraz me zadan body (pomoc p kazu A = (5, 4) nebo m eme udlat to, e bod um st me libovoln kamkoliv na nkresnu a pot v algebraickm okn postupn pep eme jeho souadnice na po adovan hodnoty) a nsledn jimi p kazem c = Kuzelosecka A, B, C, D, E] prolo me ku eloseku (obr. 8). V tto chv li je ji splnn prvn #kol ze zadn , nebo( po najet kurzorem na vytvoenou ku eloseku se zobraz informace o typu ku eloseky a jej rovnici. V dal m kroku mme zjistit v znamn body a objekty svzan s ku elosekou. V prosted programu na ve dotazovan existuj p kazy: sted (pokud existuje) zjist me zadn m p kazu Stred c], vrcholy p kazem Vrchol c], hlavn a vedlej
502
Matematika - fyzika - informatika 19 2009/2010
osu p kazy HlavniOsa c] a VedlejsiOsa c], atd. Stejn jednodue nalezneme i teny z bodu R pomoc p kazu Tecna R, c] a dotykov body jako prse ky ku eloseky a ten ch p mek. Pokud po adovan objekt pro zobrazenou ku eloseku neexistuje, je uveden v algebraickm okn jako nedenovan nebo se ani v grackm ani v algebraickm okn nezobraz vbec. Ovem pi zmn polohy nkterho z bod a pechodu ku eloseky v jinou ku eloseku, kter ji m dan objekt denovan (nap klad asymptoty u hyperboly), se tento objev .
; ; ;
Obr. 8 Informace o typu kueloseky se zobraz po najet kurzorem na jej rovnici
Pklad 5 { Apollniova loha
Zadn: Sestrojte kru nici prochzej c dan mi dvma body M1 , M2 , dot kaj c se dan p mky t. Tento p klad je sp e zaj mavost ukazuj c neklasick een klasick #lohy. een: Jedn se o Apollniovu #lohu bbp . Tato #loha je obvykle eena v prvn m ron ku stedn koly pomoc mocnosti bodu ke kru nici a Euklidov ch vt. Apart programu GeoGebra dv mo nost rychlej ho een , i kdy pou itelnho a po probrn ku eloseek (ne nutn analytick ch vlastnost , ale sta syntetick ch vlastnost nap. v deskriptivn geometrii). Hledme sted kru nice spluj c podm nky, e je stejn vzdlen od danho bodu M1 a od teny t. Le proto na parabole tmito objekty uren. Bod M1 bude jej m ohniskem, p mka t bude dic p mkou sestrojovan paraboly. Jej rovnici a graf z skme p kazem Parabola M 1, t] Matematika - fyzika - informatika 19 2009/2010
503
(obr. 9). Druhou parabolu ur me obdobn pomoc bodu M2 a teny t. Prse kem obou parabol je sted (stedy) hledan kru nice, kterou nsledn sestroj me. Hledan stedy kru nic budou pochopiteln le et i na ose #seky M1 M2 , ale tu jsme pi naem een nepou ili.
;; ; Obr. 9 Apoll!niova "loha #bbp$
Pklad 6 { Optimalizan loha
Nakonec si uka me, e prosted programu GeoGebra lze #spn vyu t tak k een #loh, kter mezi ostatn zdnliv nezapadaj . Kup kladu pro jednoduch optimalizan slovn #lohy. Zadn: Mlko z mlkrensk ch zvod ve mstech A a B se voz tak do mst R, S a T. Denn se m e z A dodat 250 pepravek s mlkem a z B 350 pepravek. Je teba dodat denn 150 pepravek do R, 240 pepravek do S a 210 pepravek do T. Naleznte zpsob rozvozu, pi kterm budou nklady na ka dodenn pepravu mlka nejni . Nklady na dopravu jedn pepravky z mlkrensk ch zvod do m sta prodeje jsou v tabulce 1. cena v eurech
A B
R
S
4 5
3 6
T 5 4
Tab. 1
0een : V zsad zde jde o nalezen extrmu (minima) jist funkce, kter popisuje nklady na rozvoz pepravek. Pro pehlednost zaveme tabulku 504
Matematika - fyzika - informatika 19 2009/2010
2 s #daji o potu pepravek dovezen ch z jednotliv ch podnik do jednotliv ch c lov ch mst (poet pepravek pevezen ch z A do R ozna me neznmou x, z A do S neznmou y, ostatn hodnoty dopo tme podle #daj ze zadn ): p ipraven p epravky
A B
R
S
T
x 150 ; x
y 240 ; y
250 ; x ; y 10 ; (250 ; x ; y) = x + y ; 40
Tab. 2
Je zejm, e funkce, jej extrm chceme znt, bude dna pedpisem
f (x y) = 4x + 3y + 5(250 ; x ; y) + 5(150 ; x) + 6(240 ; y) + 4(x + y ; 40)
a budeme-li znt mno stv pepravek dovezen z A do R a do S (tedy hodnoty x a y), dok eme vypo tat i celkov nklady. Dle pak plat ,
e tento extrm hledme v urit omezen oblasti, kter je ohraniena podm nkami vychzej c mi z druh tabulky: 0 x 150, 0 y 240, x + y 250 a x + y 40. Na m #kolem je tedy nalzt minimum funkce dvou pirozen ch promnn ch (pedpokldme, e x a y mohou nab vat pouze pirozen ch hodnot) na omezenm denin m oboru. To b v ponkud obt n a zdlouhav, m eme se tomu vak vyhnout, realizujeme-li grack een . Pokud roznsob me zvorky na prav stran pedpisu funkce f (x y) a p slun neznm seteme, dostaneme rovnici p mky, v naem p pad f (x y) = ;2x ; 4y + 3280, piem neznm x a y pedstavuj souadnice jistho bodu a hodnota f (x y) je urit zat m neznm posunut tto p mky, kter chceme m t co nejmen . Prostednictv m p kazovho dku zadme vechny omezuj c podm nky (program bohu el nezvld zadvn a zobrazovn polorovin, mus me se tedy spokojit pouze s hranin mi p mkami, kter zap eme p kazy x = 0, x = 150, x + y = = 250, atd.), sestroj me jejich prnik a dostaneme mnoho#heln k, kter zv razn me p kazem Mnohouhelnik B, C, D, E, F, G] (body B C : : : G jsou po ad prse ky v e zadan ch omezuj c ch p mek). Onen bod s hledan mi souadnicemi x a y se m e nachzet pouze v tto oblasti a je jasn, e extrmy funkce f (x y) se budou nachzet v nkterm z vrchol mnoho#heln ku, kter maj natst celo seln souadnice. Kdyby tomu tak nebylo, zpsobilo by to men komplikace pi interpretaci v sledku. Matematika - fyzika - informatika 19 2009/2010
505
;; ; Obr. 10 sten gra(ck een slovn "lohy
Zbytek prce je ji velmi snadn . Nejprve zavedeme p mku h: -2xjej rovnice vychz z pedpisu f (x y), libovoln bod A, j m
vedeme rovnob ku s p mkou h (p kaz i = primka A, h]), a zavedeme t vzorec pro v poet nklad, v nm ale nahrad me promnn x a y souadnicemi bodu A (p kaz cena = -2x(A)-4y(A)+3280). Pohybujeme-li s bodem A, vid me, e se v algebraick sti pepisuje #daj cena. Nyn ji zb v jen zjistit, ve kterm vrcholu mnoho#heln ku je tato hodnota nejmen a kter souadnice bodu A tedy budou odpov dat hledan m neznm m x a y. Poty pepravek na ostatn ch trasch pak dopo tme podle druh tabulky, piem vak mus me dvat pozor pi zji(ovn tchto hodnot, nebo( pracujeme s poty pepravek, neboli cel mi sly, zat mco GeoGebra uruje souadnice bod s pesnost a na 15 desetinn ch m st. Je tedy nutn sprvn zaokrouhlovat. Pro #plnost jet vypime zjitn v sledky p kladu do tabulky 3. 4y+3280=0,
p ipraven p epravky
A B
R
S
T
10 140
240 0
0 210
Tab. 3
Pklady na internetu
Vechny p klady, kter jsme zde pedstavili, si teni mohou sthnout na adrese 506
Matematika - fyzika - informatika 19 2009/2010
http://www.geogebra.org/en/upload/index.php?direction0&order& v sekci Czech nebo prostudovat v podob dynamick ch pracovn ch list na Cabri portlu Jihoesk univerzity na adrese http://www.pf.jcu.cz/cabri/temata/geogebra1/index.htm
Zvr
V tomto lnku jsme se sna ili ukzat mo nosti pou it programu GeoGebra na podporu v uky matematiky, kter jsou d ky jeho algebraickmu oknu bohat ne mo nosti kterhokoli z nm znm ch program dynamick geometrie. Jeho velk s la je krom klasick planimetrie i v analytick geometrii, v prci s ku elosekami, s funkcemi, jak jsme pedvedli v esti uveden ch een ch p kladech. Pro ist geometrick programy tedy pedstavuje zdatnho konkurenta. Nechceme vak v dnm p pad odm tat jin programy dynamick geometrie pou van ve kole, pouze k nim nab z me vhodnou alternativu. Program je velmi dobe vyu iteln pi v uce matematiky na stedn kole, jak ovil ve vech ron c ch druh z autor pi v uce matematiky na S2AK (specializovan na aplikovanou kybernetiku). 3ci, kdy vidli pedveden programu GeoGebra pi hodin, sami po adovali bli informace o tomto programu, nainstalovali si ho a dnes tento program u b n (nejen) pi hodinch matematiky a pi p prav na tyto hodiny s oblibou pou vaj . Literatura byla uvedena za 1. st l nku.
Informace k semini Matematika, fyzika a podpora jejich v uky (viz 1. str. oblky)
Semin navazuje na dlouholetou tradici semin o (loso(ckch ot zk ch matematiky a fyziky. astn k m nab z zaj mav pedn ky, ale i zamylen nad vukou a motivac k ke studiu matematiky a fyziky. Vbr pipravovanch pedn ek: J. Podolsk: Stacion rn vesm r versus velk tesk, J. Langer: *ter a speci ln teorie relativity, P. Cejnar: Vypoutn kvantovho dina, J. im a: Vuka mocnin a logaritm na S+, D. Hrub: Jak jsem se sezn mil s komplexn mi sly, D. Marti ek: Otazn ky stedokolsk informatiky Semin se bude konat v aule Gymn zia Velk Mezi . Ubytov n je zajitno v Domov ml dee Stedn koly emesel a slueb Velk Mezi . Vlo n astnci platit nebudou, uhrad si jen ubytov n (piblin 200 K za noc) a dopravu. Pro "astn ky bude vyd na pedsemin rn broura s podrobnm programem. Jako semin rn materi l se pipravuje: Sborn k ze XIV. semin e o (loso(ckch ot zk ch matematiky a fyziky.
Matematika - fyzika - informatika 19 2009/2010
507