18.02.2013 Views

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />

celleyerek yapar. getmaxyx() i¸slev olmadı˘gından parametre olarak gösterici aktaramayız, sadece iki tamsayı<br />

de˘gi¸sken verebiliriz.<br />

6.4. addstr() sınıfı i¸slevler<br />

addstr() bir karakter dizisini ver<strong>ile</strong>n pencereye yazdırmak için kullanılır. Bu i¸slev her bir karakter için addch()<br />

i¸slevini ça˘gırmaya benzer. Bu tüm çıktı i¸slevleri için geçerlidir. Bu a<strong>ile</strong>den mvaddstr(), mvwaddstr()<br />

ve waddstr() gibi, curses’in isimlendirme kurallarına uyan (örn. mvaddstr(), move() ve daha sonra<br />

addstr() ça˘grılmasıyla aynıdır) i¸slevler de vardır. Bu a<strong>ile</strong>nin bir ba¸ska i¸slevi ise ek olarak n tam sayı parametresini<br />

alan addnstr() i¸slevidir. Bu i¸slev ekrana en fazla n karakter yazdırır. E˘ger n negatif ise tüm dizge<br />

yazdırılır.<br />

6.5. Dikkat edilmesi gereken nokta<br />

Tüm bu i¸slevler parametre olarak önce y daha sonra da x koordinatını almaktadır. Yeni ba¸slayanların yaptı˘gı<br />

en temel hata x, y ¸seklinde parametre göndermektir. E˘ger (y,x) koordinatları üzerinde çok fazla de˘gi¸siklik<br />

yapıyorsanız, ekranı her biriyle ayrı ayrı ilg<strong>ile</strong>nmek için pencerelere bölün. Pencereler Pencereler (sayfa: 22)<br />

bölümünde açıklanmı¸stır.<br />

7. Girdi i¸slevleri<br />

Aslında girdi almadan ekrana yazdırmak sıkıcıdır. Kullanıcıdan girdi almamızı sa˘glayan i¸slevlere bir bakalım. Bu<br />

i¸slevler üç bölüme ayrılabilir;<br />

1. getch() sınıfı: Bir karakter alır<br />

2. scanw() sınıfı: Biçimlenmi¸s girdi alır<br />

3. getstr() sınıfı: Dizge alır<br />

7.1. getch() sınıfı i¸slevler<br />

Bu i¸slevler uçbirimden tek bir karakter okur. Fakat gözönüne alınması gereken bir kaç ince nokta vardır.<br />

Örne˘gin, e˘ger cbreak() i¸slevini kullanmazsanız, curses girdi˘giniz karakterleri art arda de˘gil sadece satırsonu<br />

veya dosyasonu karakteri <strong>ile</strong> kar¸sıla¸sana kadar okuyacaktır. Bundan kaçınmak için cbreak() i¸slevi kullanılmalıdır,<br />

böylece karakterler anında programınızdan eri¸s<strong>ile</strong>bilir olacaktır. Yaygın olarak kullanılan i¸slevlerdan<br />

biri noecho()’dur. ˙Isminden de anla¸sılaca˘gı üzere, bu i¸slev ça˘grıldı˘gında (kullanıldı˘gında) kullanıcının girdi˘gi<br />

karakterler ekranda gösterilmez. cbreak() ve noecho() i¸slevleri tu¸s yönetimi üzerindeki en tipik örneklerdir.<br />

Bu türden i¸slevler Klavye <strong>ile</strong> etk<strong>ile</strong>¸sim (sayfa: 29) bölümünde anlatılmı¸stır.<br />

7.2. scanw() sınıfı i¸slevler<br />

Bu i¸slevler scanf() i¸slevine benzemektedir, ek olarak ekran üzerindeki herhangi bir konumdan veri giri¸sine<br />

olanak sa˘glamaktadırlar.<br />

7.2.1. scanw() ve mvscanw()<br />

Bu i¸slevlerin kullanımı taranacak satırın wgetstr() i¸slevi <strong>ile</strong> sa˘glandı˘gı sscanf() kullanımına benzemektedir.<br />

Ba¸ska deyi¸sle, bu i¸slevler wgetstr() i¸slevini ça˘gırır (a¸sa˘gıda anlatılmı¸stır) ve sonuç satırını taramak için<br />

kullanırlar.<br />

7.2.2. wscanw() ve mvwscanw()<br />

http://belgeler.org Linux Kitaplı˘gı 18 / 90

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!