Makroji

Kaj se bomo v tem poglavju naučili?

Spoznali bomo pomen besede “macro” , nekaj tipičnih primerov njegove uporabe. Spoznali bomo tudi pomen pogojnih makrojev.

Kaj je torej makro?

Makro je v računalniški znanosti v splošnem pravilo ali vzorec, ki definira, kako neko vhodno zaporedje (pogosto zaporedje znakov) preslikamo v izhodno zaporedje (tudi to je pogosto zaporedje znakov) v skladu z neko vnaprej definirano proceduro.

Izraz ima svoj izvor v makro zbirnikih (macro assemblers), pri katerih je bila osnovna zamisel, da bi programerju nudili na voljo zaporedje računskih ukazov kot en sam stavek. Tako naj bi postalo programiranje manj naporno in manj podvrženo napakam.  Programer si je pripravil oziroma uporabil več takšnih makrojev. Njegovi programi so tako navidezno postali krajši in bolj razumljivi. Več o tem v odstavku, ki govori o makrojih za zamenjavo teksta. Poznamo pa tudi drugačne makroje.

 

Makroji za tipkovnico in miško

Makroji za tipkovnico in miško omogočajo, da zaporedja klikov na tipkovnico ali mišjih akcij preslikamo v druga zaporedja, ki bi nam sicer vzela precej časa. Tako lahko avtomatiziramo ponavljajoča se zaporedja tipkanja ali mišjih premikov. Programi, ki tvorijo take makroje, so “makro-snemalci” (macro recorders).

 

Aplikacijski makroji in skripta

Makrojem za tipkovnico ali miško, ki so vgrajeni v dan aplikacijski program, prvimo včasih “aplikacijski makroji”. Pri tvorbi oziroma definiciji takih makrojev pogosto uporabljamo skriptni jezik, ki ima neposreden dostop do lastnosti aplikacije. Tako so v primeru Microsoft Office kot skriptni jezik uporabljali VBA (Visual Basic for Applications). Sčasoma pa se je ta jezik precej razvil in nadomestil makro jezike, ki so bili sprva vključeni v te aplikacije. Ker ima VBA dostop do večine sistemskih klicev Microsoft Windows, je bilo z njim relativno enostavo pisati računalniške viruse. Nekatere aplikacije z makro jeziki zato namenoma izključujejo določene funkcionalnosti, ki bi lahko povzročale take težave.

Makroji za nadomeščanje teksta

Jeziki, kot sta C in zbirni jezik, so imeli preproste makro sisteme, ki so bili implementirani kot preprocesorji prevajalniku oziroma zbirniku. Makroji za preprocesor C so delovali kot preprosto iskanje in zamenjava teksta na nivoju besed. Tipičen primer uporabe makrojev za zamenjavo besedila je tudi sistem TeX, ki ga uporabljamo za pisanje knjig in drugih publikacij.

 

Pogojni makroji

Pri makrojih za nadomeščanje teksta zelo pogosto srečamo tudi pogojne makroje, ki na primer pri zbirnih jezikih omogočajo takoimenovano pogojno zbiranje (conditional assembly). Podobno funkcijo (pogojno prevajanje) najdemo tudi v primeru takoimenovanih direktiv za preprocesor programskega jezika C.  To v bistvu niso pravi makroji, pač pa navodila, ki povedo preprocesorju, ali naj nek segment programske kode (teksta, ki jo predstavlja) vključi v program ali ne. Pogojni makroji (oziroma navodila) imajo imena, podobna naslednjim: if, elseIf, else, and endIf.

Primer uporabe takega makroja:

1. To besedilo bo vključeno, ker je pred makrojem #if.

<!--#if condition="userIsMember"-->

2. To besedilo bo vključeno, če je pogoj izpolnjen, sicer pa ne.

<!--#else-->

3. To obvestilo bo vključeno, če  pogoj ni izpolnjen, sicer pa ne.

<!--#endIf-->

4. To besedilo bo vključeno, ker je za makrojem #endIf.

 

Kaj torej dobimo, če pogoj »userIsmember« ni izpolnjen? Vidimo ga tu:

1. To besedilo bo vključeno, ker je pred makrojem #if.

3. To obvestilo bo vključeno, če  pogoj ni izpolnjen, sicer pa ne.

4. To besedilo bo vključeno, ker je za makrojem #endIf.