PostScript ��lenenler Y���t�: ��lemler ve Matematiksel ��leyiciler
�eviri: Berk Onat
-PostScript Dizilerinin �kinci Metni-
Damlaya damlaya g�l olur
-T�rk Deyimi-.
�zet:
Yazar PostScript dilinin i�lemsel y���n�n� tan�t�yor. Y���n y�netimleri ve matematiksel i�letmenler burada sunulmu�.
Bu metin i�lemsel y���n�n t�m �zelliklerini kaps�yor. Gelecekteki metinler bu konu hakk�nda bilgi vermeye devam edecek.
Giri�
Bu PostScript hakk�ndaki metinler dizisinin ikinci metni. Bu metindeki temel ama� Y���n i�letmenlerini
anlatmak. ��lemsel Y���n PostScript'in en �nemli b�l�m�d�r. T�m bu; g�revler, aritmetiksel ve matematiksel
i�lemler, d�ng�ler ve mant�ksal i�lemler bu belirli haf�za par�as�nda ele al�n�r. Evet! Y���n, PostScript'in
,ondan yapmas�n� istedi�imiz hemen hemen her�eyi �al��t�rmak i�in kulland���, �zel haf�za b�lgesidir. Y���n,
bilgiyi en son girilen veri ilk �nce ��kacak �ekilde saklar. Bunu, bir ucu kapat�lm�� bir boruya benzetebiliriz.
Bu boruya bir�ey koydu�umuzda, boru kendine yer a�mak i�in i�inde bulunan her�eyi kapal� u� taraf�na do�ru
itecektir. Bu nedenle son girilen birim her zaman a��k olan uca yak�n olacakt�r. Y���nda bulunan birimler dizi
, say�sal sabit, anahtar, blok vs... olabilirler.
Y���n Y�netimi
Birimler y���n i�inde d�zenlenmesine kar��n birimleri yeniden d�zenlememize izin veren y���n i�lemleri vard�r.Y�netimler y���ndaki bir veya daha �ok birime uygulan�r. Tan�ma g�re, i�letmenler y���ndaki birimleri y�netirler.
Y�netimin niteli�ine dayanarak birimlerin parametreye(PostScript tan�mlamalar�nda(Terminolojisinde,�zeli�inde) i�lemsellerdir)gereksinimleri olabilir. E�er parametreye veya parametrelere gereksinim duyarlarsa ilk �nce bu parametreler y���na atanmal�d�r.Bundan sonra i�letmen bu i�lemsellere �nem vererek hareket edecektir. Burada yeterince �rnekle birlikte bu i�letmenlerin bir listesini veriyoruz. Daha sonra ayr�nt�lar� ayd�nlatmak i�in �rnekler verilecektir.
pop: Bu i�letmen, i�lemsel y���ndaki en �st �yeyi(son girilen)
yok sayar.
exch: Bu i�letmen, i�lemsel y���n�n en �st iki �yesinin yerlerini
de�i�tirir.
dup: Bu i�letmen, i�lemsel y���n�n en son girilen �yesinin bir kopyas�n� yarat�r ve bunu i�lemsel y���na atar.
Di�er bir deyi�le, en �st �yeyi ikizle�tirir(duplicate).
copy: Bu i�letmenin, i�letmen harekete ge�meden �nce i�lemsel y���na verilmesi gereken
tamsay�lara gereksinimi vard�r. E�er bu tamsay�y� n olarak al�rsak komut(emir)
n copy �eklinde verilecektir. Bu yap�ld���nda n en �st �yeler k�mesi yarat�lacak ve
son girilen �ye gibi i�lemsel y���na yerle�tirilecektir. Di�er bir deyi�le, copy d�zenlenmi�
ikizle�tirme(duplication) i�letmenidir.
index: Bu i�letmenin, i�letmen harekete ge�meden �nce i�lemsel y���na verilmesi gereken
tamsay� i�lemseline gereksinimi vard�r. E�er bu tamsay�y� n olarak d���n�rsek, komut(emir)
n index �eklinde olacakt�r. Bu yap�ld��� zaman; n 'inci en �st �yenin kopyas�(e�i)
yarat�lacak ve en son girilen �ye gibi i�lemsel y���na yerle�tirilecektir. Di�er bir deyi�le, index
dahili bir �ye se�ebilir, yaratabilir ve kopyas�n� i�lemsel y���na yerle�tirebilir.
�yelerin s�ralanmas� 0 ile birlikte en �st �yeden ba�lar.
roll: Bu i�letmenin, i�letmen harekete ge�meden �nce i�lemsel y���na verilmesi gereken
iki tamsay� parametresine gereksinimi vard�r. E�er bu tamsay� parametreleri m
ve n gibi al�n�rsa komut m n index �eklinde verilecektir. Burada, n d�ng� say�s�n�
nitelendirirken, m ne kadar �yenin devinece�ini belirtir. Tek �ye �yle tan�t�l�r ki, en �st
�yenin alt�ndaki m-1 �yeler k�mesi bir �ste ta��n�rken, i�lemsel y���n�n en �st �yesi m'inci
�ye durumuma gelir.Bu tasar� n 1'e e�it oldu�unda ge�erlidir. E�er n 2 olursa
iki ard���k d�ng� meydana gelecektir. Ba�ka bir �ekilde s�ylersek, m 2 roll m 1 roll m 1 roll
ile ayn�d�r. n parametresi eksili de�erleri alabilir. E�er n'e eksili de�er verilirse, n pozitifken
olan hareketi ters �evirecektir.Bu da m n roll m -n roll emrinin(komutunun) do�al hareketini meydana getirecektir.
��lemsel y���n de�i�meden b�rak�lacak, �yelerin s�ralanmas� 0 ile birlikte en �st �yeden ba�layacakt�r.
clear: Bu i�letmen i�lemsel y���n�n t�m �yelerini etkisiz b�rak�r.
count: Bu i�letmen i�lemsel y���n�n �yelerini sayar. Sonu�, i�lemsel y���na yeni bir �ye olarak at�l�r.
E�er bu yeni �yeyi istemiyorsan�z count pstack pop karma emrini(komutunu) verebilirsiniz.
Burada pop, count taraf�ndan yeni yarat�lan �yeleri, say�m sonucu pstack dosya i�letmeninin hareketiyle
g�sterildikten sonra siler.
mark: Bu i�letmen i�lemsel y���n�n i�ine etiketlenmi� (-marktype-) �ye koyar.
Bu �ye i�lemsel y���ndaki �yeler k�mesini alt k�melere b�lmek i�in kullan�labilir.Di�er iki i�letmen,
cleartomark ve counttomark bu �yeyi i�lem s�ras�nda ararlar. E�er bulamazlarsa
hata iletisi verilecektir.
cleartomark: Bu i�letmen en �st �yeden ba�layarak ilk etikete (-marktype-) kadar olan t�m �yeleri siler.
Bu etiket (-marktype-) de birlikte silinir. E�er i�lemsel y���nda hi� bir etiket yoksa bir hata
iletisi verilir.
counttomark: Bu i�letmen en �st �yeden ba�layarak etikete rastlayana kadar �yeleri sayar.
Tamsay� de�eri olan sonu�, i�lemsel y���na son �ye olarak konur. Sonu� ilk kar��la��lan etiket
�yesini i�ermez.E�er i�lemsel y���nda etiket yoksa PostScript yan�lg�ya d��er ve hi�bir �ey yapmaz.
�sterseniz �imdi de biraz Y���n hakk�nda bilgi verelim.
E�er yukar�daki i�letmenleri hareket halinde g�rmek
istiyorsan�z ilk �nce, PostScript �eviricisini etkinle�tirmelisiniz.
�lk metinde de belirtildi�i gibi, Linux d�nyas� serbest bir �evirici olan
ghostscript'i kullan�r. Ghostscript, komut sat�r�nda uygun parametreler
verilerek farkl� yollardan etkinle�tirilebilir. Genel y�ntem, X Windows ortam�nda
gs komutunu kullanmakt�r. Bazen X'deki baz� ayarlama sorunlar� y�z�nden bu i�lemez.
Bu durumda elveri�li �izgisel veribiriminin(console) yarat�lamad��� g�sterilecektir.
Bundan sonra ya bu sorunlar ��z�lmelidir yada ghostscript'in x11 ayg�t�n� kullanmas� sa�lanmal�d�r.
Bu ama�la gs -sDEVICE=x11 girersiniz. Bu yada sadece gs (e�er �al���rsa), oturum
s�ras�nda yarat�lan g�r�nt�ler i�in kullan�lan arkaplan� beyaz bo� bir pencere yarat�r.
Bu k�s�mda g�r�nt�ler bulunmad��� i�in bu pencereye gereksiniminiz yoktur ve bu pencereden kurtulabilirsiniz.
Bunun i�in, ghostscript �eviricisi g�r�nt�s�z olarak gs veya gs -sDEVICE=x11 ile birlikte
komut sat�r�na -dNODISPLAY parametresi girilmesiyle canland�r�labilir. E�er bu yap�l�rsa ilk �nce
telif hakk� ba�l��� g�z�kecek, sonra bunu yeni bir sat�r�n ba��nda ghostscriptin haz�r oldu�unu belirten
GS> yaz�s� izleyecektir. Bu noktada ghostscript, komutlar�n�za haz�rd�r ve i�lemsel y���n bo�tur.
��lemsel y���n�n i�eri�ini g�rmek i�in bir dosya i�letmeni olan pstack'i kullanabilirsiniz.
Bu komut, dosya i�letmeni olarak �a�r�l�r ��nk� i�erik bilgisini �ng�r�s�z(default) ekran olarak
belirlenmi� genel sonu� dosyas�na g�nderir. E�er bu komutu haz�r imlecinde girerseniz hi�bir �ey
g�r�nt�lenmeyecek ve yeni bir sat�r�n ba��nda yeni bir GS> haz�r imleci g�r�nt�lenecektir.
Bu i�lemesel y���n�n bo� oldu�u anlam�na gelir.
��lemsel y���na �ye girmek i�in haz�r imlecinde �yeleri girebilirsiniz. �rnek; e�er 1'i �ye olarak girmek
istiyorsan�z haz�r imlecinde 1 girmeniz yeterlidir. Bundan sonra yeni bir sat�rda yeni haz�r imleci yarat�l�r.
Fakat bu sefer, haz�r imleci GS> de�il GS<1> dir. Haz�r imlecinin bu yeni �ekli i�lemsel y���ndaki �yelerin say�s�n� belirtir.
Bu nedenle, e�er ghostscript oturumunda herhangi bir anda GS<123> bulunuyorsa, i�lemsel y���nda 123 �yenin oldu�unu
anlam�na gelir.
Tek bir atamayla i�lemsel y���na birden fazla �ye girebilirsiniz. Bunun i�in t�m �yeleri s�ras�yla yazmal� fakat bo�luklar ile
ay�rmal�s�n�z. �rnek vermek gerekirse; e�er haz�r durumundaki imlece 1 2 3 4 5 6 girerseniz,
1, 2, 3, 4,5, 6 olan �yelerden her biri girildi�i s�raya g�re i�lemsel y���na
konulacakt�r. E�er bundan sonra pstack komutunu girerseniz son girilen �ye ilk g�sterilecek �ekilde �yelerin dikey bir d�zende g�sterilece�ini g�r�rs�n�z.
Bu iki komut ortam�n�n g�r�nt�s� �u �ekilde verilebilir:
GS>1 2 3 4 5 6
GS<6>pstack
6
5
4
3
2
1
GS<6>
Tek bir atamayla i�lemsel y���na �yeler girmek ve y���n�n i�eri�ini g�rmek de m�mk�nd�r.
Tek yapman�z gereken �yeler verildikten sonra pstack komutunu girmektir:
GS>1 2 3 4 5 6 pstack
6
5
4
3
2
1
GS<6>
�u ana kadar �yeler girmek i�in say�lar� kulland�k. Say�lar tek �ye �e�idi de�ildir, de�i�kenler,
a��klamalar, diziler, kal�plar vs... gibi di�er �e�it �yeleri
de girmek m�mk�nd�r. Sonra bunlar� ayr�nt�l� olarak inceleyece�iz. Yine de �imdi bir�eyler s�ylersek;
e�er sadece �rnek olarak a veya abc dizisi girmeye �al���rsan�z bir hata iletisi
verilecektir. Bunun nedeni PostScript'in bunlar� anlayamamas�d�r. E�er bir de�er veya dizi girmek
istiyorsan�z etraflar�n� () ile sarmal�s�n�z. Burada �zel bir �ye olan ve etiket(marktype) diye
an�lan �ye �e�idinden s�z edece�iz. Bunu g�rmek i�in a�a��daki oturum �rne�ini verebiliriz
:
GS>1 2 3 mark 4 5 6 pstack
6
5
4
-marktype-
3
2
1
GS<7>
�imdi i�lemsel y���n y�netilerinin i�letmenleri i�in birka� �rnek g�rece�iz.
Bu i�letmenlerin nas�l davrand���n� g�steren oturum �rne�ini sizlere sunuyorum ve
bu b�l�m� daha ileri a��klamalar yapmadan sona erdiriyorum.
.
GS>1 2 3 mark 4 5 6 pstack
6
5
4
-marktype-
3
2
1
GS<7>pop pstack
5
4
-marktype
3
2
1
GS<6>exch pstack
4
5
-marktype
3
2
1
GS<6>dup pstack
4
4
5
-marktype-
3
2
1
GS<7>2 copy pstack
4
4
4
4
5
-marktype
3
2
1
GS<9>5 index pstack
-marktype-
4
4
4
4
5
-marktype
3
2
1
GS<10>cleartomark cleartomark pstack
3
2
1
GS<3>3 1 roll pstack
2
1
3
GS<3>count pstack
3
2
1
3
GS<4>mark 7 8 pstack
8
7
-marktype-
3
2
1
3
GS<7>counttomark pstack
2
8
7
-marktype-
3
2
1
3
GS<8>clear pstack
GS>
Matematiksel ��letmenler
Y�netim i�letmenlerinden farkl� olarak aritmetiksel ve matematiksel i�letmenler de vard�r.
Bu i�letmenler a�a��da verilmi�tir. Bu b�l�m i�in �rnek verilmeyecektir. Bundan sonras�
bunlar� yaratabilen ve yukar�daki �rnek oturumlar ile donat�lm�� okuyucuya b�rak�lm��t�r.
.
add: Bu komutun, de�erleri toplama i�letmenine girilecek olan iki say�sal parametreye
gereksinimi vard�r. E�er bu de�erler m ve n �eklinde al�n�rsa komutun m n add
�eklinde olmas� beklenir. Bu durumda ilk �nce m ve n i�lemsel y���na at�l�r.
add i�letmeninin i�lemsel y���n�n en �st iki �yesi �zerindeki i�lemi son k�s�md�r.
Bu, m ve n 'in toplam�na e�it olan de�erde yeni bir �ye yarat�r. ��lem
bittikten sonra m ve n i�lemsel y���nda tutulmaz. Bunun yerine sonu�, i�lemsel
y���n�n en �st �yesine d�n���r.
div: Bu komutun de�erleri b�lme i�lemine girilecek olan iki say�sal parametreye gereksinimi
vard�r. E�er bu de�erlere m ve n denirse komutun m n div �eklinde verilmesi gerekecektir.
Bu i�lemin i�leyi� bi�imi add ile ayn�d�r. B�lme i�lemi aritmetik d�zeyin y�zen bir noktas�ndad�r.
��lem yap�ld�ktan sonra sadece sonu� i�lemsel y���nda yeni bir �ye olarak b�rak�l�r.
m ve n tutulmaz.
idiv: Bu komutun de�erleri tamsay� b�lme i�lemine girilecek iki say�sal parametreye gereksinimi
vard�r. E�er bu de�erler m ve n �eklinde se�ilirse komut m n idiv �eklinde verilir.
B�lme d�zeyi d���nda her�ey div ile ayn�d�r. Bu tamsay� aritmetik b�lme i�lemidir. Parametreler
tamsay� olmasa da �al���r.
mod: Bu komutun iki tamsay� parametresine gereksinimi vard�r. Bu komut birinci parametrenin
kalan�yla ikinci parametreninkini de�erlendirir. E�er herhangi bir parametre tamsay� de�ilse �al��ma
ba�ar�s�z olur. Sonu� i�lemden sonra i�lemsel y���nda tek tutulan de�erdir.
mul: add ve div ile ayn�d�r. �ki say�sal de�ere gereksinimi olan ikilik d�zen
i�letmenidir. Sonu� parametrelerin �arp�m�d�r ve i�lemsel y���nda yeni bir �ye olarak korunur.
sub: add,div ve mul ile ayn�d�r. Tek fark i�lem �e�itidir. �kinci parametrenin de�erini
birincisinden ��kart�r. Parametreler ve sonu� say�sal de�erlerdir ve sonu� i�lem tamamland�ktan
sonra i�lemsel y���nda tutulur.
exp: �kilik d�zende matematiksel i�letmendir. �ki parametreye gereksinimi vard�r.
�lki taban, ikincisi �st�r. Taban�n de�erini, de�eri �st olan kuvvete artt�r�r. Parametreler �stel
i�lem s�n�rlar�nda olmal�d�r. Y�zen bir noktasal say� olan sonu� i�lemsel y���nda yeni bir �ye
olarak tutulur.
.
atan: A��sal de�er i�in ikilik d�zende matematiksel i�letmendir.
A�� 0 ile 360 aras�nda bir de�erde verilir. �ki
parametreye gereksinimi vard�r. �lk parametrenin ikncisine oran�,
hesaplanacak olan a��n�n tanjant�na(tegetine) e�ittir. Parametrelerin
i�areti sonucun bulunaca�� �eyrek �emberi belirler. �lk parametrenin pozitif
de�erleri pozitif y d�zlemine kar��l�k gelir. Oysa, ikinci
parametrenin pozitif de�erleri pozitif x d�zlemini anlatacakt�r.
.
abs: Matematiksel i�letmene ait de�ildir. Sonucu mutlak de�er olan
sadece bir parametreye gereksinimi vard�r. Yukar�dakine benzer �ekilde,
sonu� i�lemsel y���nda yeni bir �ye olarak tutulur.
neg: Sadece teriminin i�aretini de�i�tirir. Aritmetik i�letmene
ait de�ildir.
ceiling: Terime �stten en yak�n olan tamsay� de�erini
hesaplayan bir i�letmendir.
floor: Terime alttan en yak�n olan tamsay� de�erini saptayan
bir i�letmendir.
round: Terime en yak�n olan tamsay� de�erini de�erlendiren
i�letmendir.
truncate: Terimin ondal�k b�l�m�n� silen bir i�letmendir.
sqrt: Terimin kare k�k�n� hesaplayan bir i�letmendir.
cos: Terimin kosin�s�n� hesaplayan i�letmendir. Terimin derece
cinsinden verilmesi beklenir.
sin: Terimin sin�s�n� hesaplayan i�letmendir. Terimin derece
cinsinden verilmesi beklenir.
ln: Terimin do�al logaritmas�n� hesaplayan i�letmendir.
log: Terimin 10 taban�ndaki logaritmas�n� hesaplayan i�letmendir.
Metni bitirmeden �nce bir hat�rlatma daha; yukar�da s�z etmemize ra�men,
kesin bir a��kl�kla komut de�erleri (PostScript tan�mlamas�nda i�lemseller)
baz� tats�z sorunlar yaratabilir. Komut, (yada PostScript tan�mlamas�nda
i�letmen) parametresini i�lemsel y���nda arar. Buldu�unda kullan�r ve
i�lemsel y���ndan siler. Bu nedenle, tedbirle veya hatayla parametrelere
gereksinimi olan komutun, i�lemsel y���na parametre de�erleri olmadan
verilmesi, ya i�lemsel y���ndaki baz� �st �yelerin parametrelerinde
sapmalara yada baz� �st i�lemsel y���n �yelerinin silinmesine sebep olur.
Bu sunumu tamamlamadan �nce PostScript`te ilerlemek isteyen kullan�c�lara
daha karma��k ve geni� programlar yazmalar�n� tavsiye ediyoruz. Bu dizinin
ileriki yaz�lar�nda PostScript dili hakk�nda daha fazla ayr�nt�ya
girilecektir. Sunumumuz hakk�nda t�m sorular�n�z� ve fikirlerinizi bekliyoruz. |