9 Ocak 2014 Perşembe

Kontrol Deyimleri

                                                 KONTROL DEYİMLERİ
Program içerisinde bir işin olumlu veya olumsuz sonucuna göre yapılması gereken işlemler olabilir. Bu aşamada devreye kontrol deyimleri girer.
Kontrol deyimleri iki çeşittir:
If Else Deyimi
Switch-Case Deyimi

IF – ELSE DEYİMİ

If deyimi bir programın akışını kontrol etmek için kullanılır. If-Else deyiminde bir koşul belirtilir ve koşulun sonucu true ya da false değer alır.

Kullanımı

if (koşul)
{
    //koşul doğruysa yapılacaklar
}
else
{
    //koşul yanlışsa yapılacaklar
}

İf- Else Deyimi Akış Diyagramı


Bu koşul ifadesi true (Doğru) yada false (Yanlış) olmak üzere bir değer üretmektedir.
Şayet koşulumuz doğruysa (true) programımızın akışı mavi renkle gösterilen doğruysa kısmından devam edecek ve kırmızıyla gösterilen yanlışsa kısmına uğramayacaktır. Eğer koşulumuz yanlışsa (false) bu sefer programımız yanlışsa kısmından kırmızıyla belirtilen yoldan devam edecektir.





Not 1:
Eğer programımızın akışında sadece koşulun doğru olmasına bağlı işlem yapılması isteniyor, koşulun yanlış olduğu durumlarda işlem yapılması istenmiyorsa Else bloğu program içerisinde hiç kullanılmaz.
Kullanımı:

if(koşul)
{
Koşul doğruysa yapılacak işlemler;
}

Not 2:
Eğer If veya Else’den sonra sadece bir komut yazılacak ise küme parantezleri ({}) kullanılmayabilir.

Kullanımı:

if(koşul)
//Koşul doğruysa yapılacak işlemler;
else
//Koşul yanlışsa yapılacak işlemler;

Örnek:

if (not > 45)
    Console.Write("Dersi geçtiniz.");
else
    Console.Write("Dersten kaldınız.");


Not 3: 
Bazı programlama dilleri büyük/küçük harf duyarlı bir dil olduğu için “Ersoy”, “ersoy” veya “ERSOY” cevaplarından yalnızca “Ersoy” cevabını kabul edecektir.


If koşul deyimlerde zaman zaman birden fazla koşula bağlı bir takım işlemler yapmamız gerekebilir.

VE ( && ) Bağlacı

Kullanımı:
if((koşul1) && (koşul2))
{
//koşul1 ve koşul2 doğruysa yapılacak işlemler;
}
else
{
//koşullardan en az birisi veya her ikisi de yanlış ise yapılacak işlemler;
}
VEYA ( || ) Bağlacı

Kullanımı:

if((koşul1) || (koşul2))
{
\\koşul1 veya koşul2’den en az birisi veya her ikisi de doğruysa yapılacak işlemler;
}
else
{
//koşullardan her ikisi de yanlış ise yapılacak işlemler;
}

Örnek:

Klavyeden girilen sayının hem 3’e hem de 5’e kalansız bölünüp bölünemediğini ekrana yazan programı yazınız.

Console.Write("Bir sayı giriniz:");

int sayi = Convert.ToInt32(Console.ReadLine());

if((sayi % 3 == 0) && (sayi % 5 ==0))

Console.WriteLine("{0} sayısı hem 3'e hem de 5'e kalansız bölünebilir",sayi);

else

Console.WriteLine("{0} sayısı hem 3'e hem de 5'e kalansız bölünemez", sayi);

İÇ-İÇE IF İFADESİ

Birden fazla koşula ihtiyaç duyulan durumlarda iç-içe If ifadeleri kullanılır.

Kullanımı:

if(koşul1)
{
//koşul1 doğruysa yapılacak işlemler;
}
else if(koşul2)
{
//koşul1 yanlışsa ve koşul2 doğruysa yapılacak işlemler;
}
else
{
//her iki koşul da yanlışsa yapılacak işlemler;
}

İç-içe If ifadelerinin bir başka kullanımı da şu şekildedir.

Kullanımı:

if(koşul1)
{
       if(koşul2)
            {
                   // koşul2 doğruysa yapılacak işlemler;
             }
        else
             {
                   // koşul2 yanlışsa yapılacak işlemler;
             }
}
else
{
//koşul1 yanlışsa yapılacak işlemler;

}

İç-içe If Deyiminin Akış Diyagramı


















Switch-Case Deyimi

             Switch-Case deyimi de If-Else deyimleri gibi karar kontrol mekanizmalarında kullanılmaktadır. Switch-Case deyimi genellikle karmaşık if-else bloklarının yerine, daha okunabilir oldukları için tercih edilmektedir. Switch-Case ile yapabileceğimiz karşılaştırmaları if-else ile de yapabiliriz.

            Switch-Case yapısı şu şekilde çalışır; bir deyimin değeri, sabitlerden oluşan bir listede peş peşe test edilir. Deyimin değeri sabitlerden birisiyle eşleşince, bu eşleşmeyle ilgili işlemler gerçekleştirilir.

Kullanımı:

switch(ifade)
{
case sabit1:
//Yapılacak işlemler;
break;
case sabit2:
//Yapılacak işlemler;
break;
default:
//Yapılacak işlemler;
break;
}

-Önce switch parantezleri içerisindeki ifade hesaplanır.

-Programın akışı, hesaplanan ifade ile aynı case sabitinin bulunduğu satıra gelir.

-Eğer hesaplanan ifade, mevcut case sabitlerinden herhangi birisi ile

eşleşmiyorsa default default anahtar sözcüğünün bulunduğu yere gelir ve program
buradan devam eder.

Örnek: 

Ürün ismi verildiğinde fiyatını gösteren uygulama.

Console.Write("Almak istediğiniz ürünün adı: ");
string urunAdi = Console.ReadLine();
 
switch (urunAdi)
{
    case "bardak":
        Console.WriteLine("Bardak: 4 TL");
        break;
 
    case "şemsiye":
        Console.WriteLine("Şemsiye: 12 TL");
        break;
 
    case "kalem":
        Console.WriteLine("Kalem: 2 TL");
        break;
 
    case "silgi":
        Console.WriteLine("Bardak: 10 TL");
        break;
 
    default:
        Console.Write("Böyle bir ürün bulunamadı!");
        break;
}

Switch-Case Yapısı İle İlgili Önemli Kurallar:

- Case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundadırlar. Bu
ifadeler içerisinde değişken bulunamaz.
- Case ifadeleri herhangi bir tam sayı sabiti, karakter veya string sabiti olabilir.
- Default durumunu istediğimiz yere yazabiliriz. Aynı şekilde case ifadelerini de
istediğimiz sırada yazabiliriz.

                                          DÖNGÜ DEYİMLERİ 

Döngüler bir program içerisinde belirli işlerin defalarca yapılmasını sağlayan komut
bloklarıdır. Sonsuz döngüler yapılabildiği gibi belirli kriterler sağlanana kadar devam eden
döngüler de yapılabilir.

For Döngüsü

Belirlenen başlangıç değerinden itibaren belirtilen koşul sağlanana kadar içine yazıldığı kod parçasını ardı ardına çalıştıran bir döngü çeşididir.

Kullanımı:

for(başlangıç;koşul;artım)
{
//yapılacak işler;
}

Başlangıç, döngü kontrol değişkeni olarak da ifade edilebilir. Döngü içerisinde bir
sayaç görevini görür.

Koşul, döngünün ne kadar çalışacağını denetleyen mekanizmadır. Koşul
sağlanıyorken döngü çalışmaya devam eder. Koşul sağlanmadığında ise döngü durur. Koşulda genellikle başlangıç değerinin durumu denetlenir.

Artım, başlangıç değerinin döngünün her adımda artma ya da azaltma miktarını
belirler. Eğer başlangıç değeri hiç değişmez ise sonsuz döngü oluşur.

Akış diyagramlarıyla for döngüsünün gösterimi de şu şekildedir.
















Örnek:

1’den 10’a kadar olan sayıları ekrana yazdıran uygulama.

byte i;
for(i=1;i<=10;i++)
{
Console.WriteLine(i);
}

Çıktısı








While Döngüsü 

While döngüsü bir koşul sağlanıyorken dönmeye devam eder. Koşul yanlış ( false ) sonucunu verdiği zaman ise sonlandırılır.

Kullanımı:

while(koşul)
{
//yapılacak işler;
}
Örnek:

0’dan 20’ye kadar olan çift sayıları ekrana yazdırın uygulama.                                                    
int i=0;
while (i <= 20)
{
Console.WriteLine(i);
i = i + 2; 
}

Çıktısı








Do…While Döngüsü 

For ve while döngülerinde döngü bloklarının koşul sağlanmadığı takdirde hiç çalıştırılmama ihtimali vardır. Ancak döngünün en az bir kere çalıştırılması istenilen durumlarda do-while döngüleri kullanılırlar. 

Kullanımı:

Do
{
//yapılacak işler;
}
while(koşul); 

Örnek:

1’den 20’ye kadar olan tek sayıları ekrana yazdıran uygulama.

int i=1;
do{
Console.WriteLine(i);
i = i + 2;
} while (i < 20); 

Çıktısı

 





Foreach Döngüsü 

Foreach, dizi (Array) ve koleksiyon ( collection ) tabanlı nesnelerin elemanları üzerinden ilerleyen bir döngüdür.

Kullanımı:

foreach(tip değişken in koleksiyon)
{
//yapılacak işler;

Tip: buradaki tip koleksiyonun veri tipi ile aynı veya uyumlu olmak zorundadır.

Değişken: foreach döngüsü içerisinde koleksiyonda bulunan sıradaki elemanı temsil eder.

Koleksiyon: ArrayList ya da dizi gibi aynı tip verileri barındıran koleksiyon. 

DİZİLER

Değişkenleri öğrenirken gördük ki her değişkene sadece bir değer atayabiliriz. Bazı durumlarda aynı tipteki değişkenleri bir arada tutma ihtiyacı duyabiliriz. C# bize aynı tipteki değişkenleri tek bir adla saklayabileceğimiz dizileri (Array) sunmaktadır.

Dizi (array), ortak isimle anılan aynı tipteki veriler topluluğudur. 

Dizi Oluşturma

Bir dizi, boş parantezler ve bir değişken ismi tarafından takip edilen dizi içindeki elemanların tipini tanımlayarak bildirilir;

Tanımlanması:

1.Yol:

tip[] dizi-ismi=new tip[eleman-sayısı]

2.Yol:

tip[] dizi -ismi;
dizi ismi=new tip[10]; 

3.Yol:

tip[] dizi ismi ={değerler};

Diziye Değer Girme 

Bir dizi tanımlandıktan sonra sıra o diziye değer girmeye gelir. Bir diziye değer girişleri tanımlama esnasında yapılabildiği gibi, programın akışı esnasında da gerçekleştirilebilir.

Dizi tanımlandıktan sonra, dizinin her bir elemanı için indeks değerleriyle elemana erişerek değer ataması şu şekildedir;

int[] notlar=new int[3];
notlar[0]=65;
notlar[1]=76;
notlar[2]=85; 

Diziyi Yazdırma 

Dizinin indeks numaraları vasıtasıyla erişip diziyi ekrana yazdırma işlemi yapabiliriz.
Erişilen değerlerinin ekrana yazdırılması işlemi şu şekilde gerçekleştirilir; 

int[] plakalar=new int[10];
plakalar[2] = 43;
plakalar[5] = 16;
plakalar[6] = 66;
plakalar[9] = 6;

Aşağıdaki işlemler yukarıda tanımlanmış olan diziye göre gerçekleştirilmektedir. 

Console.WriteLine(plakalar[2]);
Console.WriteLine(plakalar[3]);
Console.WriteLine(plakalar[4]);
Console.WriteLine(plakalar[5]);

Yukarıdaki kod parçası çalıştırıldığında ekrana

43
0
0
16

değerleri yazılır.

Bazı Dizi Özellikleri ve Metotları

Diziler, .NET Framework içinde tanımlı Array sınıfı temsil eder. Tüm diziler Array sınıfında tanımlı özellikleri ve metotları kullanırlar. Bu metotlardan ve özelliklerden en sık kullanılanları şunlardır;

1-Length
2-Clear
3-Reverse 

Length
Dizinin saklayabileceği toplam eleman sayısını veren ve int türünde bir değer veren özelliktir.

Kullanımı:

dizi-adi.Length; 

Clear(dizi,baslangic,adet)
Parametre olarak verilen dizinin, belirtilen indeks aralığındaki tüm değerlerini temizler. Temizleme işleminde atanan değer, dizi elemanlarının tiplerine göre değişir.

 Kullanımı:
Array.Clear(diziAdi,baslangicIndeksi,Adet); 

Reverse(Dizi)
Parametre olarak verilen dizinin eleman sırasını tersine çevirir. Dizinin tüm elemanlarının veya belirli indeks aralığındaki elemanlarının sırası tersine çevrilebilir.

 Kullanımı:
Array.Reverse(diziAdi); 

Sort(Dizi)
Parametre olarak verilen dizinin elemanlarını küçükten büyüğe sıralar. Eğer dizi numerik ise rakamların büyüklüğüne göre, yazı tiplerinde ise baş harflerine göre sıralanır. Reverse’ün tersidir.

Kullanımı:
Array.Sort(diziAdi); 

IndexOf(Dizi,arananDeger) 
İlk parametrede verilen dizide, ikinci parametrede verilen değeri arar. Aranan değer dizide bulunursa bulunan elemanın indeks değeri, bulunamazsa -1 döndürür.

 Kullanımı:
Array.IndexOf(diziAdi,arananDeger); 

Dinamik Diziler 
ArrayList yapısının, bu dinamik boyut dışında bizlere sunduğu bir diğer avantaj da bir dizi içerisinde saklanacak olan verilerin tür sınırlamasını ortadan kaldırmasıdır.

Tanımlanması:
ArrayList diziAdi=new ArrayList();

Capacity Özelliği:
ArrayList’in kapasitesini int türünde veren özelliktir.

Kullanımı:
int kapasite=liste.Capacity;

Count Özelliği:
ArrayList içerisinde bulunana eleman sayısını int türünde veren özelliktir.

 Kullanımı:
int elemanSayisi=liste.Count; 

Add Metodu:
Bir nesneyi ArrayList'in sonuna eklemeye yarar.

Kullanımı:
 ArrayList liste=new ArrayList();
liste.Add(123); //int türünde değer ekleme

Insert Metodu:
Parametre olarak belirtilen indeks değerine yine parametre olarak verilen nesneyi ekler.

Kullanımı:
liste.Insert(5,123); //5 nolu indekse 123 değerini ekler.

Remove Metodu:
Belirtilen nesne ArrayList içerisinde varsa siler.

Kullanımı:
liste.Remove(nesne); 

RemoveAt Metodu:
Parametre olarak verilen indeks konumundaki elemanı siler.

Kullanımı:
liste.RemoveAt(indeks); //indeks olarak verilen konumda bulunan elemanı siler. 

Sort Metodu:
ArrayList içerisindeki elemanları küçükten büyüğe sıralar.

Kullanımı:
liste.Sort();

Basit kodlar

                                         BASİT KODLAR
Değişkenler

Programlama dilinde verilerin depolanma alanlarını temsil eder. Tanımlanan her değişkene bellek bölgesinden bir alan ayrılır. Bu bellek bölgesine okuma ve yazma işlemleri ise değişken ismi üzerinden sağlanır. Genel olarak değişkenler;

<veri tipi><değişken adı>;
Şekinde tanımlanır.

Örneğin; int i;

İnt (sayı) veri tipinde bir değişken tanımlanmıştır. Böylelikle bellek bölgesinde bir veri saklamak ve ileride kullanmak üzere 4 byte’lık bir alan açmış bulunuyoruz.

Örneğin; 
İnt i;// i adında bellekte 4 byte’lık bir bölge aç;
İ=10;//i adının temsil ettiği bellek bölgesine 5 değerini yaz;

Bir değişkene değer atama işlemi tanımlarken yapılabilir.
Bir değişkene değer atama işlemi yukardaki örnekte olduğu gibi program içindeherhangi bir satırda yapılabilir.
 Bir veri tipi altında birden fazla isimle farklı değişkenler tanımlanabilir.

Değişkenleri İsimlendirme Kuralları 

1-Değişkenlerin isimleri alfabede bulunan karakterlerle veya _(alt çizgi) ile başlamalıdır. Ama ilk harf hariç diğer karakterler sayı olabilir.
2-Bazı programlama dilleri büyük ve küçük harf duyarlıdır. Yani Sayi, sayi ve SAYI hepsi ayrı değişken olarak algılanır.
3-Değişken isimleri birden fazla kelime olduğu zaman; kelimelerin arasına boşluk konmaz. Bu tür değişkenleri ya kelimeleri birleştirerek veya kelimeler arasına _(alt çizgi) karakteri koyaarak isimlendiririz.
4-Değişkenlerin isimleri !, ?, {, ] gibi karakterler içeremez.
5-Programlama dili için tanımlanmış anahtar kelimelerini de değişken isimleri olarak kullanamayız.



Veri Tipleri

.NET’ de iki çeşit veri tipi vardır.
1-Değer Tipleri (Value Type)
2-Referans Tipleri (Reference Type)

Değişkenler bellekte bulunan verilerdir. Bir değişkeni kullandığımız zaman o değişkenin bellekte bulunduğu yerdeki bilgiyi kullanırız. Değer tipleri belleğin “stack” bölgesinde saklanır ve veriyi diretk olarak bellek bölgesinden alırken referans tipleri bellekte “heap” alanında saklanır.
Toplam 15 veri tipi vardır bunlardan 13’ü değer tipindedir, 2’si ise referans tipindedir.

Değer Tipleri


















Referans tipleri





Sabitler

Program boyunca sabit kalacak veriler için kullanılan tanımlamalardır. Bir sabit tanımlamak için const anahtar kelimesini kullanırız.

 Sabitler tanımlanırken ilk değer ataması yapılmak zorundadır.

 Program boyunca sabit değeri değiştirilemez.

Örnek:

double pi=3.1415345;
Pi=2*pi;// Burada pi değerini değiştirildiği için hata mesajı alınır.

ATAMA İŞLEMİ

= operatörü: Genel atama işlemlerinde kullanılır. Eşitliğin sağındaki değer eşitliğin solundaki değişkene atanır.
Örnek:  int x,y=5; //5 değerini y değişkenine atamak için = operatörü kullanılmıştır.

+= operatörü: Eşitliğin sağındaki değerle eşitliğin solundaki değişken değerini toplayıp tekrar eşitliğin solundaki değişkene atar.

Örnek:

İnt x=0,y=0;
 x+=5;// x’e 5 ekle ve x’e eşitle
 Y+=7;//y’ye 7 ekle ve y’ye eşitle

2.yol

 x=x+5;
 y=y+7;

Not: 
Bir bir artırma işlemi için x+=1 (veya x=x+1) yerine x++ işlemi kullanılabilir.
++ değişkenden sonra kullanılırsa önce atama işlemi yapılır sonra artırma yapılır.


-= operatörü: Eşitliğin sağındaki değeri eşitliğin solundaki değişken değerinden
eksilterek tekrar eşitliğin solundaki değişkene atar.

Örnek:

int x=50, y=50;
x -= 5;//x'den 5'i çıkar ve x'e eşitle 
y -= 7;//y'den 7 yi çıkar ve y'ye eşitle

2.yol
 x = x – 5;
 y = y – 7;

Not: 

Bir bir azaltma işlemi için x-=1 (veya x=x-1) yerine x-- işlemi kullanılabilir.
-- değişkenden sonra kullanılırsa önce atama işlemi yapılır, sonra azaltma yapılır.

*= operatörü: Eşitliğin sağındaki değerle eşitliğin solundaki değişken değeri çarpılıp
tekrar eşitliğin solundaki değişkene atar.

Örnek:

int x=2, y= 3;

x *= 2;//x ile 2'i çarp ve x'e eşitle 
y *= 2;//y ile 2 yi çarp ve y'ye eşitle 

2.yol
x = x * 2;
y = y * 2

/= operatörü: Eşitliğin solundaki değişken değerini eşitliğin sağındaki değere bölerek
tekrar eşitliğin solundaki değişkene atar.

Örnek:

int x = 4, y = 10;

x /= 2;//x'i 2'ye böl ve x'e eşitle 
y /= 2;//y'yi 2'ye böl ve y'ye eşitle 

2.yol

x = x / 2
y = y / 2

Çıkış İşlemleri

Bir Metin İfadesini Ekrana Yazdırma
Bir metin ifadesini ekrana yazdırmak için iki metot kullanılır.

1.Metot Console.Write(): Yazdırma işleminden sonra imleç yazdırılan ifadenin yanında bekler.

Örnek:

static void Main(string[] args)
{
Console.Write("Merhaba Dünya");
Console.ReadKey();// Klavyeden bir tuşa basılana kadar bekler

}

Çıktısı


İmleç yazının sonunda beklemektedir. Bir başka metin yazdırmaya çalıştığımız zaman imlecin bulunduğu yerden devam eder.

2.Metot Console.WriteLine(): Yazdırma işleminden sonra imleç yazdırılan ifadenin alt satırında bekler.
Örnek:

static void Main(string[] args)
{
Console.WriteLine("Merhaba Dünya");
Console.ReadKey();
}
Çıktısı

Çıkış parametreleri

\n: Bir alt satıra geçmek için kullanılır.
\r: Paragraf başı yapmak için kullanılır. 

Formatlı Çıkış İşlemleri

Tam sayı tipinde tanımlanmış değişkenler üzerinde uygulanabilecek format biçimleri aşağıdaki tablola belirtilmiştir.
Formatlı yazımda kullanılan parametrelerin açıklaması:
C: Sayıyı para birimi şeklinde gösterir.
D: Tek kullanıldığında bir anlam ifade etmez. Yanına sayı yazılarak kullanılır.
Formatı alınacak sayının basamak değeri yanında yazılan sayıdan küçükse arta kalan değer
kadar yanına sıfır eklenir.
E: Sayıyı 10 üzeri şeklinde gösterir.
F: Sayıların virgülden sonraki basamak sayısı ayarlamada kullanılır.
N: Sayıyı binlik basamaklara ayırarak yazar.
X: Sayıyı hexdecimal(16' lık sayı sistemi) olarak yazar.

Tarih Formatlama



Özel tarih formatlama

,

GİRİŞ İŞLEMLERİ

Klavyeden Değişkene Değer Atama

Console.Read():
Console sınıfının Read() metodu kullanıcının klavyeden giriş yapmasını sağlar tek karakter okur ve geriye tam sayı tipinde değer döndürür.

Console.ReadLine():

Console sınıfının ReadLine() motodu kullanıcının klavyeden bir değer girmesini sağlar ve bu değeri metin (string) bir ifade olarak geri döndürür.

Açıklama Satırları 
Açıklama satırları programcıya kod içinde tanımlama metinleri yazma imkanı sağlar. Bu sayede kod parçacıklarının ne iş yaptıkların anlatılmış olur.

static void Main(string[] args)
{
//Bu Satır ekrana Merhaba Dünya Yazar.
Console.Write("Merhaba Dünya");
}
// karakterlerinden sonra gelen ve satırın sonuna kadar olan sözcükler yorum satırlarıdır ve programlama dili derleyicisi tarafından görünmez. Aynı zamanda birden fazla satıra yorum eklemek istiyorsak /* */ karakterleri arasına yorum yazarız. 

OPERATÖRLER

Programlama dillerinde tanımlanmış sabit ve değişkenler üzerinde işlemler yapmamızı sağlayan karakter ya da karakter topluluklarına operatör denir

Örneğin;

int sayi = 2 + 3;
Yukardaki örnekte + ve = karakterleri birer operatördür. + karakteri 2 ve 3 sabitlerini toplama yapıyor ve = karakeri ise toplanan değeri tanımlanan değişkene atama işlemini gerçekleştiriyor.

Aritmetiksel Operatörler 

Aritmetik işlemler yaparken kullandığımız operatörlerdir. 

Dört İşlem

Örnek:

using System;
namespace Operatorler
{
class DortIslem
{
static void Main(string[] args)
{
int x = 10;
int y = 5;
Console.WriteLine("x + y = {0}", x + y);
Console.WriteLine("x - y = {0}", x - y);
Console.WriteLine("x * y = {0}", x * y);
Console.WriteLine("x / y = {0}", x / y);
Console.ReadKey();
}
}
}

Çıktısı
 

Mod Alma

Bir sayının başka bir sayıya bölümünden kalan sonucu alma işlemine mod alma denir.Bu işlemi yapmak için % karakteri kullanılır.

Örnek:

using System;
namespace Operatorler
{
class ModAlma
{
static void Main(string[] args)
{
int x, y;
Console.Write("1. Değeri Giriniz :");
x = Convert.ToInt16(Console.ReadLine());
Console.Write("2. Değeri Giriniz :");
y = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("{0} % {1} = {2}", x, y, x % y);
Console.ReadKey();
}
}

Çıktısı

İlişkisel Operatörler

İlişkisel operatöler iki değerin karşılaştırılması işlemi için kullanılır. Programımızda koşul ifadelerinde kullanılarak programın akşını değiştirmemizi sağlar. 

 


== Operatörü: Aynı türdeki iki değerin birbirine eşitliğinin kontrolü için kullanılan operatördür.

!= Operatörü: Aynı türdeki iki değerin birbirine eşit olmadığının(eşit değil) kontrolü için kullanılan operatördür.

> Operatörü: Bir değerin aynı türdeki başka bir değerden büyüklüğünün kontrolünün yapıldığı operatördür. Bu operatör string işlemlere uygulanmaz. 

< Operatörü: Bir değerin aynı türdeki başka bir değerden küçüklüğünün kontrolünün yapıldığı operatördür. Bu operatör string işlemlere uygulanmaz. 

>= Operatörü: Bir değerin aynı türdeki başka bir değerden büyük veya eşitliği kontrolünün yapıldığı operatördür. Bu operatör string işlemlere uygulanmaz.

<= Operatörü: Bir değerin aynı türdeki başka bir değerden küçük veya eşitliği kontrolünün yapıldığı operatördür. Bu operatör string işlemlere uygulanmaz.


Mantıksal Operatörler

Mantıksal operatörler birden fazla şartın olduğu durumlarda kullanılır. Birden çok boolen değeri tek bir boolen değere indirmek için kullanılır.
&& Operatörü: ‘Ve’ anlamındadır. Sorgulanan tüm şartlar doğru(true) olduğu zaman doğru(true), şartlardan birinin yanlış(false) olması durumunda yanlış(false) değerini döndürür. 
|| Operatörü: ‘Veya’ anlamındadır. Sorgulanan şartlardan birinin doğru(true) olması durumunda doğru(true), şartların hepsinin yanlış(false) olması durumunda yanlış(false) değerini döndürür.

! Operatörü: ‘Değil’ anlamındadır. ! işareti değeri tersine çevirir.

İşlem Önceliği

İşlem öncelik sırası aşağıdaki tabloda en yüksekten en düşüğe doğru sıralanmıştır.












Kodlamaya Hazırlık

KODLAMA ÖNCESİ HAZIRLIK


Bilgisayarın Çalışma Mantığı
Bilgisayar, kullanıcıdan aldığı verilerle mantıksal ve aritmetiksel işleri yapan yaptığı işlemlerin sonucunu saklayabilen elektronik bir makinedir. Harfler ve rakamlar bilgisayarda kodlar şeklinde ifade edildikten sonra kullanılır. Bilgisayarda kodlar elektrik olarak voltajın olup olmaması ile ifade edilir. Voltaj var, lamba yanıyorsa 1; voltaj yok, lamba yanmıyorsa 0 kodlarını alır.
İki durumlu olan bu kodlamaya “ikilik sistem” denir. Bilgisayara tuşlardan verilen her bilgi 1 ve 0 kodlarına çevrilir.
Her 0 ve 1 bit olarak; sekiz bitlik grup ise byte olarak ifade edilir. Bilgisayar işlemlerini ikilik sayı sistemi ile yapar.

Makine Dili 
Mikroişlemci ya da mikrodenetleyici gibi komut işleme yeteneğine sahip entegrelerin işleyebilecekleri komutlardan ve buna uygun söz diziminden oluşur. Bu dil sadece 0 ve 1 ikililerinin anlamlı kombinasyonlarından meydana gelir.







Sayı Sistemleri

Bilgisayar ortamında dört çeşit sayı sistemi vardır;
1-İkilik sayı sistemi (Binary)
2-Sekizlik sayı sistemi (Oktal)
3-Onluk sayı sistemi (Desimal)
4-Onaltılık sayı sistemi (Heksadesimal)




Sekizlik sayı sistemi (Oktal)
Bu sayı sisteminde sadece 0,1,2,3,4,5,6,7 rakamları kullanılır.
ÖRNEK: (25)8 , (376)8 , (27510)8


Onluk sayı sistemi (Desimal)
Bu sayı sisteminde 0,1,2,3,4,5,6,7,8,9 sayılarını kapsar. Sayı tabanı 10’ dur.
ÖRNEK: (10)10 , (9999)10 , (820918)10


Onaltılık sayı sistemi (Heksadesimal)
Bu sayı sisteminde 16 tane rakam bulunmaktadır.1,2,3,4,5,6,7,8,9,A,B,C,D,E,F rakamlarından oluşur. Sayı sisteminin tabanı 16’ dır. 16’ lık sayı sisteminde her bir harf bir rakamı temsil eder.Bunlar;
A = 10, B=11, C=12, D=13, E=14, F=15 ‘tir

ÖRNEK: (1029)16 , (AFDC)16, (290A3DC)16

İkili sayı sistemi (Binary)
İkili sayı sistemi 2 tabanını kullanır. 0 ve 1 olmak üzere iki rakamı vardır.
ÖRNEK: (001010)2 , (111011)2 , (10)2




YAZILIM

Yazılım, elektronik aygıtların belirli bir işi yapmasını sağlayan programların tümüne verilen isimdir.
Yazılım Çeşitleri
1-Sistem Yazılımları (System Software)
Bilgisayarı yöneten, denetleyen, kontrol eden yazılımlardır.

Örnek: Linux, Pardus, Windows vb.

2-Uygulama Yazılımları (Application Software)
Belli bir alana ve uygulamaya ilişkin olarak kullanıcılar için geliştirilmiş yazılımlardır.

Örnek: Kelime işlemci programları, web hazırlama araçları, programlama araçları vb.

PROGRAMLAMA ARAÇLARI 

Programlama Dili

Bir programlama dili, insanların bilgisayara çeşitli işlemler yaptırmasına imkan veren her türlü sembol, karakter ve kurallar grubudur. Programlama dilleri, bilgisayara neyi, ne zaman, nasıl yapacağını belirten deyim ve komutlar içerir.


Programlama Dilleri Çeşitleri
Bir programlama dili ya insan ya da makine anlayışına yakındır. İnsan anlayışına daha yakın programlara dillerine yüksek seviyeli programlama dilleri, makineye yakın olanlara ise düşük seviyeli programla dilleri denir.



Çok yüksek seviyeli diller ya da görsel diller
-Access, Foxpro, Paradox,Xbase, Visual Basic, Oracle Forms

Yüksek seviyeli diller (Bunlara algoritmik diller de denir.)
-Fortran, Pascal, Basic, Cobol

Orta seviyeli diller
-C, C++(C Plus) , C#(C Sharp) Orta seviyeli diller daha az kayıpla makine diline çevrilebildiğinden daha hızlı çalışır.

Alçak seviyeli programlama dilleri
Sembolik makine dili (Assembler).

Makine dili
En aşağı seviyeli programlama dilidir (Saf makine dili tamamen 1 ve 0’lardan oluşuyor.) .

ALGORİTMA VE AKIŞ DİYAGRAMI
Algoritma, verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli adımların hiçbir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı ile ifadesidir.
Akış Diyagramı
Herhangi bir problem için oluşturulan algoritmanın, görsel olarak simge ya da sembollerle ifade edilmiş şekline “akış diyagramı” denir.


PROGRAMLAMA YAZILIMLARI
Programlama yazılımlarının görevi yazmış olduğumuz kodları belirle kurallar çerçevesinde bilgisayarın anlayacağı dile çevirmektir. Her programlama yazılımı bütün dilleri derleyemeyeceğinden yazacağımız kodlara uygun bir yazılım seçmemiz gerekmektedir. Günümüzde kullanılan çok çeşitli programlama yazılımları mevcuttur.
IDE
Tümleşik geliştirme ortamı (Integrated development environment), bilgisayar programcılarının hızlı ve rahat bir şekilde yazılım geliştirebilmesini amaçlayan, araçların tamamını içinde barındıran bir yazılım türüdür.
Programlama Yazılımının Arayüzü
Visual Studio, çok gelişmiş özelliklere ve yardımcı araçlara sahip bir dosya editörüdür.NET platformu üzerinden geliştirilen proje dosyaları dışında metin dosyaları, sql, rtf uzantılı dosyalar da düzenlenebilir.


Çalışma sayfaları (Tab pages)
Visual Studio ortamında dosyalar, birer çalışma sayfası olarak açılır. Bu dosyalar sekmeler halinde sıralanır. Sayfalar arasında CTRL-TAB kısayolu ile geçiş yapılabilir.

Araç Çubukları (Toolbars) 
Visual Studio, menü komutları için görsel kısayolları araç çubukları ile sunar. Benzer işlemler için kullanılan komutlar bir araç çubuğunda gruplanır.

Panaller
Paneller, Visual Studio içindeki pencerelerdir. Çalışma ortamında bir çok panel bulunmasıyla beraber ‘Solution Explorer, Toolbox, Database Browser, Properties, Find Result, Eror List’ gibi sıkça kullandığımız paneller vardır. 



Başlangıç Sayfası (Start Page)
Başlangıç sayfası projelere erişmeyi ve yeni projeler oluşturmayı kısayoldan sağladığı gibi ürün bültenlerini, yaklaşan konferansları ve en son gelişme makalelerini okuma olanağıda tanır.

Command section(Komut Bölümü)
Yeni proje ve bilgisayarda kayıtlı olan projerleri açmak için kullanılan bölümdür.

Recent projects(Son Projeler)
Son projeler listesi için bağlantılar görüntülenir. Bir link tıklandığında ile ilgili proje açılır.




DERLEYİCİ

Programcılıkta, bir programlama dilinde yazılmış olan kaynak kodunu başka bir dile(genellikle makine koduna) çeviren yazılımlara derleyici denir.
.NET uyumlu programlama dili oluştururken belirli standartlara uyulması gerekir. Bu standartlar CLS ( Common Type System ) ise veri tipleri, nesneler, arayüzler ve programlama dillerine ait özellikleri tanımlar.



CSC: (C #Compiler) C# kodlarını *.cs derleyen exe dosyasıdır. (csc.exe) Visual Studio içinden cs kodlarını derleme emrini verildiğinde csc.exe dosyası ile derleme yapılmaktadır.
Csc .exe ile Visual Studio’ nun kurulu olmadığı bir bilgisayarda da *.cs kodlarını derleyebiliriz.
Örnek: Notepad,Notepad++
Csc.exe ‘ nin bulunduğu dizini PATH adresi olarak ayarlarız.


Not; Eğer PATH değişkeni Environment Veritables ( Ortam Değişkenleri) bölümünde zaten var ise yeni eklemeden, PATH değişkenine tıklayarak sonuna virgül ile csc.exe’ nin adresini ekleyebiliriz.
Başlat’tan komut satırına giderek (cmd);
Csc.exe yazıp hata olup olmadığı kontrol edeilir.


Daha sonra deneme olarak Notepad’i açıp şu kodları yazalım;
using System;
public class Busra {
public static void Main()
{
Console.WriteLine("Hello,World");

}
}

Komut satırına gelip “ cd..” komutu ile adresi sildikten sonra “cd” komutu ile Notepad uygulamamızın bulunduğu adresi yazarız.

Son olarak  csc.exe ile yaptığımız uygulamayı derleriz.
Örnek: csc.exe HelloWorld
Derleme işlemi bittikten sonra uygulamamızın bulunduğu klasörde exe dosyası oluşacaktır.


C# Dersleyicisi Komut Satırı Sözdizimi İçin Kurallar
Şapka karakteri (^), bir çıkış karakteri veya sınırlayıcı olarak tanınmaz.
Karakter, programdaki argv dizisine aktarılmadan önce işletim sisteminde komut satırı çözümleyici tarafından işlenir.
Çift tırnak işareti ("dize") içinde bulunan dize, içindeki beyaz boşluğa bakılmaksızın tek bir bağımsız değişken olarak yorumlanır. 
Tırnak içindeki bir dizi, bağımsız bir değişkene katıştırılabilir.
Önünde ters eğik çizgi olan çift tırnak işareti (\ "), değişmez bir çift tırnak işareti karakteri ('') olarak yorumlanır.
Ters eğik çizgiler, bir çift tırnak işaretinden önce gelmedikçe genel anlamıyla yorumlanır.
Çift sayıda ters eğik çizgileri bir çift tırnak işareti izlediyse, her ters eğik çizi çift için bir ters eğik çizgi argv dizine yerleştirilir ve çift tırnak işareti dize sınırlayıcı olarak yorumlanır.
Tek sayıda ters eğik çizgileri bir çift tırnak işareti izlediyse, her ters eğik çizi çift için bir ters eğik çizgi argv dizine yerleştirilir ve çift tırnak işareti kalan ters eğik çizgi tarafından "atlatılır". Bu düz çift tırnak işaretinin ('') argv öğesi içinde eklenmesine neden olur.








8 Ocak 2014 Çarşamba

AĞ KURULUMU


                                       AĞ KURULUMU 

                                               
Veri Ağları
Birden fazla bilgisayarın birbirine bağlı olduğu donanım ve yazılımların da paylaşılmasına izin veren bilgisayar ağları, veri haberleşmesini veri ağları üzerinden yapmaktadır.
Sistem bilgisayara uyarlandığında her bilgisayarın bir numarasının bulunduğu, çeşitli kablolama teknolojileri ve ağ elemanlarıyla istenilenin yapıldığı görülür.
Ağ üzerinde bulunan bilgisayarlara “host” denir.



Bilgisayarlar bağımsız makineler olmasına karşın dumb terminal olarak da kullanılabilir ve bu yolla host/dumb terminal ortamının bir parçası gibi işleyebilirler. Bu durumda host bilgisayara seri arabirim ile bağlanırlar.
Bir LAN’da, dosya sunucusu, disk depolama yada yazıcılar gibi kaynakların paylaşılmasını mümkün kılar.



                                                  Ağ Topolojileri 

                                                                 1-Bus Topolojisi
Bus topolojisinde tüm iş istasyonlarının üzerinde olduğu bir hat mevcuttur. Bütün istasyonlar hattaki tüm mesajları inceler ve kendine ait mesajları alır. Hattaki bilgi akışı çift yönlüdür.



2-Yıldız Topolojisi
Bu topolojide ağdaki iletişimin gerçekleşmesi için merkezi birim bulunur ve bütün istasyonlar bu merkezi birime bağlanır. 
Bir istasyondan diğerine gönderilen bilgi önce bu merkez birime gelir, buradan hedefe yönlendirilir. Ağ trafiğini düzenleme yeteneğine sahip bu merkezi birim, hub ve anahtar (switch) olarak adlandırılır.

3-Ağaç Topolojisi 
Ağaç topolojisinin diğer adı hiyerarşik topolojidir. Ağacın merkezinde sorumluluğu en fazla olan bilgisayar bulunur. Dallanma başladıkça sorumluluğu daha az olan10 bilgisayarlara ulaşılır. Bu topoloji çok büyük ağların ana omurgalarını oluşturmakta kullanılır.

4-Halka (ring) topolojisi 
Bu topolojide her istasyon bir halkanın elemanıdır ve halkada oluşan bilgi bütün istasyonlara ulaşır. Her istasyon halkada oluşan bilgiyi ve hedef adresi alır. Hedef adres kendi adresi ise kabul eder. Aksi halde gelen bilgi işlem dışı kalır. 




  Ağ Çeşitleri

1-Yerel Alan Ağları
Yerel alan ağları (LAN - Local Area Network) adından da anlaşılabileceği gibi bir
yerleşke veya bir kurum içerisinde oluşturulan, dışa kapalı ağlardır.

2-Geniş Alan Ağları
Birbirlerine çok uzak yerel ağların bir araya gelerek oluşturduğu geniş ağlardır. (WAN
– Wide Area Network ) Ağlar arası bağlantı fiber optik bir kablo ile olabileceği gibi uydular üzerinden de sağlanabilir.

3-Metropol - Alan Ağları (MAN)
Metropolitan ağlar (MAN – Metropolitan Area Network ) yerel alan ağlarından biraz
daha büyük ağlardır.

4-Depolama – Alan Ağları ( San )
Sunucular, saklama ortamı olarak üzerlerine düşen görevi yapmasına karşılık,
kapasiteleri sınırlıdır ve aynı bilgiye birçok kişi erişmeye çalıştığında darboğaz oluşabilir.

4-Özel Sanal Ağlar (VPN)
Sanal ve özel ağlar (VPN - Virtual Private Network), yerel internet servis sağlayıcı ve
kurumsal yerel ağlar arasında güvenli bir tünel üzerinden veri iletimi gerçekleştirerek çalıştırır.

Ağ Cihazları

Ağ Kartı ( NIC- Network Interface Kart )

Bilgisayarları ve diğer cihazları ağa bağlamada kullanılan kartlardır. Ağ kartı NIC
(Network Interface Card) olarak da adlandırılır.
Veriler bilgisayarda ikilik sistemde işlenirler. Ağ kartları bu verileri elektrik, ışık veya
radyo sinyalleri ile diğer bilgisayarlara iletir. Ağ kartları hız ve bağlantı yolları bakımından
da farklılık gösterir.

Bir ağ tasarımı yaparken ağın hızı, maliyeti ve kablolama şekline göre bir seçim
yapılmalıdır. Bu seçimler şunlar olabilir. 





Her bir ağ kartının kendine özgü, dünyada başka bir kartta olmayan 48 – bitlik fiziksel adresi vardır. Yani MAC adresi olarak adlandırılır. MAC adresi (Media Access Control –Ortama erişim) 2 adet 24 bitlik adresten oluşur. İlk 24 bit IEEE (Institute of Electrica and Electronics Engineers) isimli kurum tarafından üretici firmaya verilen kısımdır. İkinci 24 bit ise, üretici firmanın her ürettiği karta verdiği adres kısmıdır.



                                                                   (PCI Ethernet Kartı)

Ethernet kartı seçimi


Ethernet kartlarında kullanılacak kablolama tipine göre BNC, RJ45 ve AUI konnektörleri olabilir. Bazı Ethernet kartlarında birden fazla konnektör yuvası bulunabilir.
Piyasada artık şu anda en çok UTP kablo ve RJ - 45 birleşimi kullanılmaktadır. BNC kablolama artık yerini UTP kablolamaya bırakmaktadır. 



Hub 
Ağ elemanlarını birbirine bağlayan çok portlu bir bağdaştırıcıdır. En basit ağ elemanıdır. Hub kendisine gelen bilgiyi gitmesi gerektiği yere değil, portlarına bağlı bütün bilgisayarlara yollar. Bilgisayar gelen bilgiyi analiz ederek kendisine gelmişse kabul eder. Hublar, 4, 8, 12, 16, 24 portlu olarak üretilirler.


                                                             

Pasif (Passive) Hub 
Hubın portlarına gelen sinyal herhangi bir kuvvetlendirmeye tabi tutulmadan direk gönderilir.
Aktif (Active) Hub
Yönlendirici benzeri çalışırlar, gelen sinyal güçlendirilerek gönderilir. Bu hublar bazen multiport repeater olarak da adlandırılırlar. 

Anahtar Cihazı( Switch)

Anahtar (switch) akıllı bir hub cihazıdır. Hubın yaptığı görevin aynısını yapar, ancak ağı yormaz. Aynı anda birden fazla iletim yapma imkanı sağlar. Böylece aynı anda bir bilgisayar yazıcıyı kullanırken diğer ikisi kendi aralarında dosya transferi yapabilirler. İstasyonların aynı anda, aynı kabloyu kullanma isteklerinden dolayı çakışma (collision) meydana gelebilir.

Anahtar, portlarına bağlanan bilgisayarları MAC adreslerine bakarak tanır. Anahtarlama işlemini gerçekleştirmek için MAC adreslerini yapısında bulunan tabloda tutar. Bu tabloda MAC adresinin hangi porta bağlı olduğu bilgisi bulunur. Kendisine ulaşan veri paketlerinin MAC adreslerini inceler ve her bir porta dağıtmak yerine, sadece hedef MAC adresine sahip olan bilgisayarın bağlı olduğu porta bırakır.


Yönlendirici ( Router ) 
 OSI başvuru modelinin ilk üç katmanına sahip aktif ağ cihazlarıdır. Temel olarak yönlendirme görevi yapar. LAN ve WAN arasında bağlantı kurmak amacıyla kullanılır.

Geçit Yolu
OSI başvuru modelinin 7 katmanının işlevlerini de içinde barındırır. Geçit yoluna gelen veri paketleri en üst katman olan uygulama katmanına kadar çıkar ve yeniden ilk katman olan fiziksel katmana iner.
Güvenlik Duvarı (Firewall)
İnternet bağlantısı, bilgi işlem açısından bazı sorunları beraberinde getirmektedir.


Modem Cihazı  

Modemler bilgisayardaki verileri yani digital sinyali, analog sinyale çevirerek kablo üzerinden iletilmesini sağlayan cihazlardır. Bağlantı için ya bütün bilgisayarlar arasına kablo çekilecek ya da mevcut telefon hatları kullanılacaktır.




           Modem Çeşitleri1- Dial Up Modemler
2- Dahili (Internal) Modemler
3- Harici (external) Modemler
                    4- ADSL (Asymetric Digital Subscriber Line–Asimetrik Sayısal Abone Hattı)  

Bağlantı Şekillerine Göre ADSL Modemler 
1- Ethernet modemler
2- USB modemler
3- PCI modemler
4- Kablosuz modemler

Erişim Sunucu (Access Server)
Her çeşit bilgiyi düzenleyebilen, ilişkisel bir veri tabanı yönetim sistemidir. Bir veri tabanı sisteminin, veri saklama ve yönetme özelliği sağlayan arka ucu olarak hizmet eder.
Ortam Dönüştürücü (Transciever)
Ortam dönüştürücüler, farklı fiziksel ara yüze sahip uçların birbirine bağlanması için kullanılır.
İnternet Erişim Paylaştırıcısı
İnternet Erişim Paylaştırıcılar yerel ağa bağlı bilgisayarların tek bir internet bağlantısıyla internete erişimlerini sağlarlar.

Intranet / Extranet (İç Ağ / Dış Ağ) 
 İç ağ (Intranet/Extranet), TCP/IP protokol kümesi ve web teknolojisine dayanan kurum içi özel iletişim ağıdır.
Dış ağ (Extranet), kurumların iç ağlarını oluştururken, uzakta bulunan şube veya ofislerini internet gibi herkese açık bir iletişim ortamı üzerinden bağlamalarıyla oluşan özel ağdır.

AĞ OLUŞTURMA MODELLERİ
Veri Haberleşmede Katman Kullanımı
Haberleşme ağları karmaşık bir yapıya sahiptir. Ortamın fiziksel olarak oluşturulması,bu ortam üzerinde veri aktarımı için gerekli kodlamanın yapılması, paketlerin oluşturulması, gibi pek çok karmaşık işlemin yapılması gerekir. Bunların hepsi haberleşme donanımı üzerinde çalışan haberleşme yazılım programları ile gerçekleşir. 
 OSI Modeli 
OSI başvuru modeli ISO tarafından tanımlanmış ve ağ uygulamasında kullanılan örnek bir modeldir; her ne kadar pratikte birebir uygulanmasa da, diğer tüm mimariler OSI başvuru modeli baz alınarak açıklanır.
Bir uç sistemde, örneğin internete bağlı PC’de OSI’nin tanımladığı tüm katmanlara ait işlevlere gereksinim duyulurken, ağ cihazları genel olarak ilk bir kaç katmana ait işlevlere sahiptir.


OSI 7 katmandan oluşur.
1- Uygulama Katmanı (Application Layer)
2- Sunuş Katmanı (Presentation Layer)
3- Oturum katmanı (Session Layer)
4- Ulaşım Katmanı (Transport Layer)
5- Ağ Katmanı (Network Layer)
6- Veri Bağı Katmanı (Data Link Layer)
7- Fiziksel Katman (Physical Layer)  





                AĞ KURULUMU YAPMAK

1-Masaüstünde sağ alt kısımda bulunan küçük simgelerden Ağ 
ikonuna gelerek Sağ Click>Ağ ve Paylaşım Merkezini Aç ‘a 
tıklıyoruz. 


2-Aktif ağ bağdaştırıcısına Sağ Click> Özellikler kısmına tıklıyoruz.


3-Bağlantılar sekmesinde var olan ağ bağdaştırıcısına tıklayarak,karşımıza gelen ekranda Özellikler’ e tıklamamız gerekiyor.





       4-Ethernet özelliklerinde “internet protokolü sürüm 4” üzerine gelip sağ alttan özelliklere giriyoruz.





 5-IP Adresi bilgisayarın ağ üzerinde bulunmasına ve digger bilgisayarlar ile iletişim kurmasına olanak sağlar.