17
1 GENERATORSKI MODULI

bajke za decu i tako to

Embed Size (px)

DESCRIPTION

Iz Wikipedije, slobodne enciklopedijeTaiji dijagram, simbol taoizmaTaoizam je naziv za filozofska i religijska učenja koja se temelje na metafizičkom tumačenju kineskog znaka Tao. Taoisti Tao tumače kao princip kontinuiteta u vječno mijenjajućem Univerzumu. Taoizam je ostavio neizbrisiv trag na razne oblasti kineske kulture, a poslije se proširio i po drugim oblastima istočne Azije.Jedan od utemeljitelja taoizma je i Lao Tse, koji je živio u 6. vijeku pne. Lao Ce je poučavao da ljudi treba da žive u harmoniji sa prirodom. On je naglašavao važnost jednostavnog života i održanje ravnoteže sa prirodom, pri čemu se nije slagao sa Konfučijevim uvjerenjem da su u jednom društvu najvažniji snažna porodica i država. On nije vjerovao u zakone i poučavao je da je najbolji način života ne preduzimati nikakve snažne, protivprirodne akcije. Temeljno djelo taoizma je Tao Te Chinga, koja se često prevodi kao Knjiga Puta i Vrline.Središnji pojam taoizma je Tao (ili Dao). Tao je nepromjenjiv, prije je svih stvari. Od njega potiču nebo i zemlja, kao dva pola. Muški princip Jang (duh, dobro, ljubav, svjetlo) i ženski princip Jin (tvar, zlo, mržnja, tmina), koji zajedno održavaju sklad svijeta u neprestanom mijenjanju. Taoisti Tao tumače kao princip kontinuiteta u vječno mijenjajućem univerzumu.Taoizam kao religija se pojavljuje dosta kasnije, u 2. vijeku ne. Taoizam je jedna od velikih religioznih tradicija nastalih u Kini. Za razliku od velikih zapadnjačkih religija, taoizam nema jednog Boga ni proroka osnivača. Jedno od glavnih vjerovanja taoizma je da svaka osoba treba da slijedi sopstveni Tao ili Put. Univerzalan, a ipak veoma lične prirode, taoizam je imao značajnog utjecaja na duhovni život mnogih kultura, kako u Aziji, tako i širom svijeta.Važno je međutim napomenuti da taoizam nije jasno izdiferencirana religija, baš kao ni konfucijanstvo i kineski budizam, već svi zajedno čine jednu cjelinu - kinesku narodnu religiju koja se je godinama razvijala i prihvaćala razna učenja. Podjela Kineza na taoiste, budiste i konfičijaniste je jedna velika zabluda na Zapadu, a u stvari su ovo samo tradicije koje zajedno čine jednu cjelinu. Istina je da se Kinezi izjašnjavaju kao pripadnici jedne od ovih religija, ali to je samo zato što time žele istaknuti da su više privrženi tom vjerovanju nego ostalima. Mnogi deklarirani taoisti ili konfucijanci idu često u budističke hramove i obrnuto.

Citation preview

Page 1: bajke za decu i tako to

1

GENERATORSKI MODULI

Page 2: bajke za decu i tako to

2

Generatorski modul za generisanje strukture podataka

genericpackage PODACI isPOD1: TIP1;POD2: TIP2;end PODACI; Ovako definisani generatorski modul može se iskoristiti

u drugom modulu na sličan način kao i strukturni tipovi podataka. Na primer:

package TEKUCI_PODACI is new PODACI; Pristup podacima:

TEKUCI_PODACI.POD1

Page 3: bajke za decu i tako to

3

GENERATORSKI MODULI SA PARAMETRIMA

Parametri generatorskih modula mogu da budu: tipovi, procedure i funkcije ili uobičajeni parametri (promenljive na primer).

Primer korišćenja:procedure IZMENA(A,B: in out T) isPOM: T := A;beginA := B;B := POM;end IZMENA;

Page 4: bajke za decu i tako to

4

Generatorski modul za generisanje procedure

generictype TIP is private;procedure IZMENA (A,B: in out TIP) isPOM: TIP := A;beginA := B;B := POM;end IZMENA;

Page 5: bajke za decu i tako to

5

Generatorski modul za generisanje procedure

Ovako definisani modul postoji smo kao model potprograma koji se stvarnogeneriše u fazi kompilacije programa. Generisanje posebnih procedura, primeraka datog modula (instanci), postiže se pomoću new, sličnokao kod izvedenih tipova podataka.declare

procedure IZMENA_BOJA is new IZMENA(TIP => BOJA);procedure IZMENA_INT is new IZMENA(TIP => INTEGER);M,N: INTEGER;BOJA1,BOJA2: BOJA;begin....IZMENA_BOJA(BOJA1,BOJA2);IZMENA_INT(M,N);....end;

Page 6: bajke za decu i tako to

6

Ograničenja tipovaOgraničenja tipovaTakođe se mogu postaviti i određena ograničenja na tipove podataka:

type TIP is (<>); Diskretni tiptype TIP is range <>; Celobrojni tiptype TIP is digits <>; Tip pokretnog zarezatype TIP is delta <>; Tip fiksnog zareza.

Page 7: bajke za decu i tako to

7

Generatorski modul sa ograničenjem tipova podataka

generictype BILO_KOJI is (<>); -- Bilo koji diskretni tip;function SLEDECI(A: BILO_KOJI) return

BILO_KOJI isbegin

if A = BILO_KOJI'LAST thenreturn BILO_KOJI'FIRST;

elsereturn BILO_KOJI'SUCC(A);

end if;end SLEDECI;

Korišćenje:

function SLEDECI_DAN is new SLEDECI(BILO_KOJI => DAN);function SLEDECE_DOBA is new SLEDECI(BILO_KOJI => GOD_DOBA);

Page 8: bajke za decu i tako to

8

Paketi kao generatorski moduliPaketi kao generatorski moduli

generictype BILO_KOJI is (<>);package POMERANJE isfunction SLEDECI (A: BILO_KOJI) return BILO_KOJI;function PRETHODNI(A: BILO_KOJI) return BILO_KOJI;end POMERANJE;package body POMERANJE isfunction SLEDECI .....function PRETHODNI ....-- Ovde bi bile definisane funkcije na način kako-- je to dato u prethodnom primeruend POMERANJE;

Page 9: bajke za decu i tako to

9

Strukturni tipovi u generatorskim Strukturni tipovi u generatorskim modulimamodulimageneric

type ELEMENT is digits <>;type INDEKS is (<>);type VEKTOR is array (INDEKS) of ELEMENT;procedure SUMA (V: VEKTOR) return ELEMENT isS: ELEMENT := V(INDEKS'FIRST);begin

for I in INDEKS rangeINDEKS'SUCC(INDEKS'FIRST)..INDEKS'LAST loopS := S + V(I);

end loop;return S;

end;

Page 10: bajke za decu i tako to

10

Strukturni tipovi u generatorskim Strukturni tipovi u generatorskim modulimamodulima

type PADAVINE is delta 0.1 range 0.0 .. 200.0;type MESECI is (JANUAR, FEBRUAR, MART, APRIL,

MAJ, JUN, JUL, AVGUST, SEPTEMBAR, OKTOBAR, NOVEMBAR, DECEMBAR);

type PADAVINE_MES is array (MESECI) of PADAVINE;

procedure GOD_PADAVINE is new SUMA(VEKTOR => PADAVINE_MES);

ELEMENT => PADAVINE(INDEKS => MESECI)

Page 11: bajke za decu i tako to

11

Funkcije kao argumenti Funkcije kao argumenti generatorskih modulageneratorskih modula

generictype FORMAL is digits;function F(X: FORMAL) return FORMAL;function INTEGRAL(DGR,GGR: FORMAL)

return FORMAL isbegin-- Potprogram kojim se određuje-- integral funkcije F po nekoj od-- numerickih metoda;end INTEGRAL;

Page 12: bajke za decu i tako to

12

Funkcije kao argumenti Funkcije kao argumenti generatorskih modulageneratorskih modula

declarefunction INTEGRAL_SIN is new

INTEGRAL(FORMAL => FLOAT; F=>SIN);PI := 3.14158;beginY := INTEGRAL_SIN(0.0, PI/2.0);end;

Page 13: bajke za decu i tako to

13

C++- Generičke funkcijeC++- Generičke funkcijetemplate <class T>T max (T i, T j){

return i>j ? i : j;}

Kad se pozove sa max(5,8) funkcioniše kao da je funkcija max definisana kao:

int max (int i, int j){

return i>j ? i : j;}

Page 14: bajke za decu i tako to

14

C++- Generičke funkcijeC++- Generičke funkcijeMože se koristiti i eksplicitni zahtev za generisanje funkcije na osnovu šablona:

float max (float, float); Poziv ove funkcije bio bi:

float g = max (i, f);

Page 15: bajke za decu i tako to

15

Šablonske klaseŠablonske klase

template <class T, int k>class Vektor {

T element [k];public:

int duzina;public:

Vektor();T& operator[] (int i);

};

Page 16: bajke za decu i tako to

16

Definicije funkcijaDefinicije funkcijatemplate <class T, int k>Vektor<T, k>::Vektor (){

duzina = k;}template <class T, int k>T& Vektor<T, k>::operator[] (int i) {

return element[i];}

Page 17: bajke za decu i tako to

17

Instanciranje klaseInstanciranje klase

Vektor realnih brojava dužine 12 bio bi definisan na sledeći način:

Vektor<float, 12> vek;

Pristup elementu vektora vek:

vek[3] = 4.2;