Emrah Porgalı
emrah@csharpturk.net

Ekranda Yazı Yazdırmak

19 Şubat 2007

Program yazmanın iki boyutundan bahsedebiliriz, bunlar ise programcı açısından program ve kullanıcı açısından programdır. Program geliştiriciler olarak başlangıçta her iki kişi de biziz. Rolümüz programcıdan kullanıcıya değişince ya da kullanıcıdan programcıya değişince, bakış açımız da değişecektir. Mesela, programımızın verdiği çıktı, kullanıcı açısından girdidir. Kullanıcının programa girdiği veriler program açısından girdi, kullanıcı açısından çıktıdır.

Burada bahsedilen girdi ve çıktı kavramları üzerinde durmak istiyorum. Programın dış dünyaya verdiği bilgiler, gösterdiği tepkiler çıktı olarak tanımlanırken, dış dünyadan aldığı bilgiler ise girdi olarak tanımlanır. Bir bilgisayar programı da aldığı girdileri yorumlar, saklar, bu bilgilere dayanarak dış dünyaya bir takım sonuçlar gönderir. Bu modele I/O modeli denir.

I/O Modelleri

Windows ortamında çalışan bir program kullanıcıdan girdileri klavye, mouse, buton ya da kaydırma çubukları gibi çeşitli kontroller yardımı ile alır. Bir Windows programı çıktıyı kullanıcıya yazı veya grafik olarak gösterir. Bir fırını çalıştıran program ise farklı bir kullanıcı I/O modeline sahiptir. Burada girdiler fırınını ön panelindeki butonlarla yapılır. Çıktılar ise fırının açılması, fırının kapanması, tepsinin döndürülmesi, ışığın yakılması şeklinde olacaktır. C ve C# gibi dillerde kullanıcı girdi ve çıktısı için özel bir model yoktur. Bu bir eksiklik gibi görünüyor fakat değil. Bunu şöyle söylemek daha doğru olacaktır: C#, kullanıcıyı herhangi bir girdi ve çıktı modelini kullanmaya zorlamaz. Siz yazdığınız programın nerede kullanılacağına göre girdi ve çıktı modelinizi kendiniz seçersiniz.

Bu bölümde konsol ekranı yardımıyla kullanıcıya çıktı verebilen bir program yazmaya çalışacağız. Bunu yapmadan önce bazı kavramları açıklamakta yarar var. Ekranda yazı göstermeye yarayan System.Console.WriteLine() ve System.Console.Write komutlarıdır. Bu komutlar neden üç parçadan oluşuyor? Bu parçaların adları nelerdir?

System bir isimuzayıdır. İsimuzayları C#’a C++ dilinden miras kalmıştır. İsimuzayları birbiri ile alakalı yöntemleri bir paket içinde toplamaya yarayan bir paketleme sistemidir. Bir isimuzayının içindeki bir yöntemin adı diğer bir isimuzayı içinde de bulunabilir. Bu da isimuzayının bir diğer işlevidir.

System isimuzayı; kullanıcı ile iletişim kurmaya yarayan I/O modeli olan Console, matematiksel işlemlerin bir araya toplandığı Math gibi temel sınıfları içinde barındırır. Burada sınıf terimi geçti. Bir önceki bölümde de anlattığımız gibi, C# programının temel birimi sınıftır. Bunu daha doğrusu şöyle söylemek lazım: Nesne yönelimli dillerin temel birimi sınıftır. Sınıfların özellikleri ve yöntemleri vardır. Bir arabayı örnek alalım. Rengi, modeli fiyatı gibi özellikleri vardır. Hareket etmek, korna çalmak, durmak gibi yöntemleri vardır. Daha sonra bu temel araba sınıfından bir takım farklı özellik ve yöntemlere sahip olan otobüs, kamyon, minibüs gibi sınıflar türetiriz. Bu sınıfların örnekleri olan nesneler ise araba sınıfının niteliklerini taşırlar. Türetilmiş sınıftan oluşturulan nesne de türetilmiş sınıfın özelliklerini ve temel sınıfın özelliklerini taşır.

Yöntemler ise sınıfın dış dünya ile etkileşimini sağlayan eylemleridir. Mesela Console sınıfının WriteLine yöntemi ekranda bir satır yazı gösterir. Write yöntemi ise ekranda yazı gösterir ama alt satıra geçmez işini bitirince.

WriteLine yöntemini kullanan bir program bu yönteme bir argüman yollar:

1System.Console.WriteLine(ToplamMeyve);

Bazı programcılar parantez ile argümanı ayırmak için argümanın sağına ve soluna boşluk koymayı tercih ederler.

1System.Console.WriteLine( Toplam );

WriteLine yöntemine bir değişkeni argüman olarak geçebildiğimiz gibi, bir sayısal ifadeyi de geçebiliriz.

1System.Console.WriteLine( Elma + Armut );

Yukarıdaki iki satırı incelersek ilkinde bir işlemin sonucunu tutan değişkenin değerini yazdırıyoruz. İkincisinde ise işlemin kendisini direkt parantezlerin içine yazıyoruz. Sonucu hesaplayıp ekrana yazıyor.

Eğer amacımız sadece 2 ve 3 sayılarının toplamını ekrana yazdırmak ise

1System.Console.WriteLine( 2+3 );

yazabiliriz.

using Direktifi

Eğer programda birden fazla System.Console.WriteLine yöntem çağrısı yapıyorsak System isimuzayınu using direktifini sınıf tanımı yapmadan önce programımızın başına ekleriz. using direktifi ile tanımladığımız herhangi bir isimuzayına dahil sınıfların yöntemlerini çağırırken artık isimuzayı ismini yazmadan sadece sınf.yöntem() şeklinde yöntemi yazarız. Bu bize zaman kazandırır. using direktifine direktif denmesinin sebebi programın çalışma zamanında hiçbir işlevinin olmamasındandır.

1Console.WriteLine(Toplam);

Şimdi artık çalışan ve ekrana yazı yazan bir program yazalım.

1using System;
2class BirProgram
3{
4  static void Main()
5  {
6    int Elma, Armut, Toplam;
7 
8    Elma = 2;
9    Armut = 3;
10    Toplam = Elma + Armut;
11    Console.WriteLine ( Toplam );
12  }
13}

Yorum Yaz

 
Ad  
Eposta     E-posta isteğe bağlıdır.
Yorum  
  Gönder       Temizle

Bu Makale İçin Yazılan Yorumlar

baturhan
09.08.2010
c# kitabından daha iyi :D
özcan
21.07.2010
teşekkürler
Tolga Kurt
22.06.2010
Ben de, bu namespace dedikleri ne ola ki diye merak içindeydim, kesin uzun bir konudur diye hiç bakasım gelmemişti. Oysa ansızın öğrendim, teşekkür ederim :)
TAHA
19.06.2010
teşekkür ederim bilgilerinizi paylaştığınız için
nazan
31.05.2010
hmm çok iyi bir anlatımdı teşekkürler size bana çok faydası oldu saolun
yakup
23.02.2010
çok teşekkürler gerçekten çok faydalı...
Volkan
05.01.2010
Emeğinize sağlık, çok teşekkürler.
Mustafa
19.12.2009
Çok teşekkürler. İlk çalıştırdığımda hata verdi. Bakıyorum bakıyorum hatayı bulamıyorum. Meğerse WriteLine ın L sini küçük yazmışım :)
Orkun
20.07.2009
Ellerinize Saglik Butun YaziLariniz icin
MERT TÜMER
15.07.2009
merahaba sizden bi ricam olcak acaba web tabanına uyarlanmış rapor örnekleriniz varmı ben çok araştırdım bi türlü bulamadım bi proje için bana öncülük edicek lazım olcak onun için istiyorum.
özgür
24.03.2009
çok teşekkürler
dudu
21.01.2009
C# öğrenmeye ilk sizin dökümanlarınızı okuyarak başladım.Yardımcı oldunuz çok sağolun. Allah razı olsun.
by_karataş
29.12.2008
bilgi paylaşımınız için çok teşekkürler..
Görkem
12.12.2008
harika anlatımlar emeğinize sağlık ...
uğur
22.11.2008
paylaşım için çok teşşekürler
pınar
30.10.2008
paylaşım için çok saolun.
serkan
24.09.2008
saolasın ... eline sağlık..
semih
07.09.2008
Çok güzel anlatımınız için teşekkürler.