C-Programlama - Eemdersnotlari.com Örneklerle E-Kitap C#

March 29, 2017 | Author: EEM Ders Notları | Category: N/A
Share Embed Donate


Short Description

Download C-Programlama - Eemdersnotlari.com Örneklerle E-Kitap C#...

Description

DAHA FAZLA KAYNAK İÇİN www.eemdersnotlari.com

Çağlar GÜL 1

Yeni C# Projesi Açma  ________________________________________________________ 4  C# Consolle Appilication Projesi Açma ___________________________________________ 4  Console.Write Komutu ve Kullanımı _________________________________________________  4  Console.WriteLine Komutu ve Kullanımı  _____________________________________________  5  Console.ReadLine Komutu ve Kullanımı ______________________________________________  7 

TEMEL VERİ TİPLERİ  _________________________________________________________ 8  Değer Tipleri (Value type) _________________________________________________________  9  Referans Tipleri(Reference Type) ___________________________________________________  9 

TÜR DÖNÜŞÜMLERİ ________________________________________________________ 10  Bilinçsiz Tür Dönüşümü __________________________________________________________  10  Bilinçli Tür Dönüşümü ___________________________________________________________  11 

OPERATÖRLER _____________________________________________________________ 13  Matematiksel Operatörler ________________________________________________________  14  + ve – Operatörleri  ____________________________________________________________________ 14  *ve/ Operatörleri ______________________________________________________________________ 15 % Operatörü  _________________________________________________________________________ 15  ++(Arttırma) ve – (Eksiltme) Operatörleri ___________________________________________________ 15 

Karşılaştırma Operatörleri ________________________________________________________  16  as Operatörü _________________________________________________________________________ 17  is Operatörü __________________________________________________________________________ 17  Mantıksal Operatörler ___________________________________________________________  18  Bitsel Operatörler _______________________________________________________________  18  Bitsel Kaydırma Operatörleri _____________________________________________________________ 19  Atama ve İşlemli Atama Operatörleri _______________________________________________  19 

AKIŞ KONTROL MEKANİZMALARI  _____________________________________________ 22  Koşul İfadeleri__________________________________________________________________  22  if else _______________________________________________________________________________ 22  switch _______________________________________________________________________________ 24  Döngü Yapıları  _________________________________________________________________  27  for Döngüsü __________________________________________________________________________ 27  while Döngüsü ________________________________________________________________________ 32  do while Döngüsü  _____________________________________________________________________ 33  foreach Döngüsü ______________________________________________________________________ 33  Atlama Deyimleri _______________________________________________________________  34  break Anahtar Sözcüğü _________________________________________________________________ 34  continue anahtar Sözcüğü _______________________________________________________________ 34  goto Anahtar Sözcüğü __________________________________________________________________ 34 

DİZİLER  __________________________________________________________________ 36  Arrays – Tek Boyutlu Diziler  ______________________________________________________  36  Arrays – İki Boyutlu Matris Diziler __________________________________________________  39 

METOTLAR VE FONKSİYONLAR  _______________________________________________ 44 

2

Metot Oluşturma ve Kullanımı  ____________________________________________________  45  Metotlarla İlgili Önemli Özellikler __________________________________________________  47  Metot Parametresi Olarak Diziler __________________________________________________  49  Dizi ve Değişken Parametreler Arasındaki Fark _______________________________________  50  Metotların Aşırı Yüklenmesi  ______________________________________________________  52  Değişken Sayıda parametre Alan Metotlar  __________________________________________  54  Kendini Çağıran Metotlar  ________________________________________________________  57  Main Metodu __________________________________________________________________  58  Main Metodunun Değer Tutması  __________________________________________________  58  Main Metodunun Parametre Alması  _______________________________________________  58 

SINIFLAR  _________________________________________________________________ 60  Sınıf Oluşturmak ________________________________________________________________  60  Aynı Sınıf Türünden Birden Fazla Nesne Oluşturma  ___________________________________  62  This Anahtar Sözcüğü ____________________________________________________________  68  get ve set Anahtar Sözcüğü _______________________________________________________  71  Yapıcı Metotlar _________________________________________________________________  77 

3

BÖLÜM1 Yeni C# Projesi Açma

C# Consolle Appilication Projesi Açma

Console.Write Komutu ve Kullanımı

4

Write komutu consol ekranına bir yazı yazdırmak veya kullanıcıdan bilgi istemek amacıyla kullanılır. Write komutundan sonra yazı yazma ibresi yazdırdığınız mesajın yanında yanıp söner yani kullanıcıdan alacağınız mesaj sizin mesajınızın yanına yazılır.

ilk uygulama.cs  using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  namespace ilk_uygulama  {  classProgram      {  staticvoid Main(string[] args)  {  Console.Write("ilk Uygulama");  Console.ReadLine();  }      }  } 

Ekran Çıktısı 

Console.WriteLine Komutu ve Kullanımı Write ile aynı görevde kullanılır fakat kullanıcının bilgi gireceği yer sizin mesajınızın altı olur yani imleç altta yanıp söner.

5

ilk uygulama2.cs  using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  namespace ilk_uygulama2  {  classProgram      {  staticvoid Main(string[] args)  {  Console.WriteLine("ilk Uygulama");  Console.ReadLine();  }      }  } 

Ekran Çıktısı  

6

Console.ReadLine Komutu ve Kullanımı Console ortamında klavyeden bilgi okutmak amacıyla kullanılan bir komuttur. Okutulan bilgiler her zaman string tipindedir. Dolayısıyla sayı ya da başka tipte kullanım yapılmak istendiğinde tip dönüşümü yapılması gerekir.

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  namespace ilk_uygulama3  {  classProgram      {  staticvoid Main(string[] args)  {  Console.WriteLine("Bir sayi giriniz");  int a = Convert.ToInt32(Console.ReadLine());  Console.WriteLine(a);  Console.ReadLine();  }      }  } 

Burada girilen sayı a değişkenine atanıp integer (sayısal) olarak dönüştürülüp ekrana yazdırılıyor. Ekran Çıktısı

7

BÖLÜM2 TEMEL VERİ TİPLERİ C# da iki çeşit veri tipi vardır:  

Değer Tipleri (Value type) Referans Tipleri(Reference Type)

Değişkenler bellekte bulunan verilerdir. Bir değişkeni kullandığımız zaman o değişkenin bellekte bulundu yerdeki bilgiyi kullanırız. Değer tipleri veriyi direk olarak bellek bölgesinden alırken referans tipleri başka bir nesneye referans gösterirler. Yani referans tipleri içinde veri değil adres bilgisi tutarlar. Veri tipleri stack dediğimiz bellek bölgesinde tutulurlar, referans tipleri ise heap bellek bölgesinde saklanırlar. int, double, float gibi veri tipleri değer tiplerine örnek gösterilebilir. Herhangi bir sınıf türü ise referans tipine örnek gösterilebilir. Değer tipleri birbirine eşitlenirken değişkenin barındırdığı değer bir diğer değişkene kopyalanır. Böylece iki farklı bağımsız değişken oluşur. Referans tipleri ise eşitleme sırasında değişkenlerin taşıdıkları veri değil heap bölgesinde işaret ettikleri adres kopyalanır. Böylece eğer iki referans değişkeni birbirine eşitledi isek ve daha sonra bunlardan birinde bulunan veriyi değiştirdi ise otomatik olarak diğer referans değişkeninin değeri de değişir. Çünkü adreste bulunan veri değişince bu adresi işaret eden iki değişkende yeni veri bilgisine ulaşır. C# da tanımlanan veri tipleri ve bunların CTS deki karşılıklarını tablo halinde aşağıda bulabilirsiniz. C# da toplam 15 veri tipi vardır bunlardan 13 ü değer tipindedir, 2 si ise referans tipindedir.

8

Değer Tipleri (Value type)   Değer Tip Adı

Aralık Değerleri

sbyte

-128 ile 127

byte short ushort int

Açıklama

System Tipi

İşaretli 8 bit tam sayı

System.SByte

0 ile 255

İşaretsiz 8 bit tam sayı

System.Byte

-32.768 ile 32.767

İşaretli 16 bit tam sayı

System.Int16

İşaretsiz 16 bit tam sayı

System.UInt

İşaretli 32 bit tam sayı

System.Int32

İşaretsiz 32 bit tam sayı

System.UInt32

İşaretli 64 bit tam sayı

System.Int64

İşaretsiz 64 bit tam sayı

System.UInt64

0 ile 65.535 -2.147.483.648 ile 2.148.483.647

uint

0 ile 4.294.967.295

long

-9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807

ulong

0 ile 18.446.744.073.709.551.615

float

3.4x10ˉ³⁸ ile 3.4x10³⁸

32 bit ondalıklı sayı

System.Single

double

5.10ˉ³°⁸ ile 1.7x10³°⁸

64 bit ondalıklı sayı

System.Double

decimal

1.5x10ˉ²⁸ ile 7.9x10²⁸

128 bit işaretli ondalıklı sayı

System.Decimal

Doğru Yada Yanlış

System.Bool

16 bit Unicode tek karakter

System.Char

bool

True ya da False

char

16 bit Unicode tek karakter

Referans Tipleri(Reference Type)

Değer Tip Adı

Açıklama

System Tipi

object

Bütün veri türlerinin türediği eleman

System.Object

string

Unicode karakterlerinden oluşan string

System.String

 

 

 

9

BÖLÜM3 TÜR DÖNÜŞÜMLERİ  

Modern programlamada birçok kez değişkenlerde tür dönüşümüne ihtiyaç duyulur. Örneğin string türündeki sayılarla ("5" veya "2" gibi) matematiksel işlem yapmamız gerektiğinde tür dönüşümü yapmamız gerekir. Aslında bahsettiğimiz tam olarak tür dönüşümü değildir, sadece bir değişkenin değişik türdeki hâlinin başka bir değişkene atanmasıdır. Tür dönüşümleri bilinçli tür dönüşümü ve bilinçsiz tür dönüşümü olmak üzere ikiye ayrılır.

Bilinçsiz Tür Dönüşümü C#'ta düşük kapasiteli bir değişken, sabit ya da değişken ve sabitlerden oluşan matematiksel ifade daha yüksek kapasiteli bir değişkene atanabilir. Buna bilinçsiz tür dönüşümü denir, bunun için herhangi bir özel kod gerekmez. using System;  classTurDonusumu  {  staticvoid Main()      {  byte a = 5;  short b = 10;  sbyte c = 30;  int d = a + b + c;  string e = "deneme";  char f = 'k';  object g = e + f + d;  long h = d;  float i = h;  double j = i;  double k = 12.5f;  Console.WriteLine(j + k);  Console.ReadLine();      }  } 

Sonuç : 57,5

 

10

Bilinçsiz tür dönüşümüyle ilgili ilginç bir durum söz konusudur. char türünü kendisinden daha kapasiteli bir sayısal türe bilinçsiz olarak dönüştürebiliriz. Bu durumda ilgili karakterin Unicode karşılığı ilgili sayısal değişkene atanacaktır. using System;  classTurDonusumu  {  staticvoid Main()      {  char a = 'h';  int b = a;  Console.WriteLine(b);  Console.ReadLine();      }  }    Sonuç : 104 

Bilinçsiz tür dönüşümüyle ilgili diğer ilginç bir nokta ise byte, sbyte, short ve ushort türündeki değişkenlerle yapılan matematiksel işlemlerdir. Bu tür durumda oluşan matematiksel ifade int’leşir. Yani aşağıdaki durumda programımız hata verir: using System;  classTurDonusumu  {  staticvoid Main()      {  byte a = 5, b = 10;  short d = 2, e = 9;  byte f = a + b;  short g = d + e;  Console.WriteLine(f + g);  Console.ReadLine();      }  } 

Çünkü artık 8. satırdaki a+b ifadesi int’leşmiş, ayrıca da 9. satırdaki d+e ifadesi de int’leşmiştir ve bunları en az int türdeki bir değişkene atayabiliriz. Bilinçsiz tür dönüşümü yapılabilecekler tablosu aşağıda verilmiştir: Kaynak

Hedef

sbyte

short, int, float, long, double, decimal

byte

short, ushort, int, uint, long, ulong, float, double, decimal

short

int, long, float, double, decimal

ushort

int, uint, long, ulong, float, double, decimal

int

long, float, double, decimal

uint

long, ulong, float, double, decimal

long, ulong float, double, decimal char

ushort, int, uint, long, ulong, float, double, decimal

float

double

Bilinçli Tür Dönüşümü Bilinçli tür dönüşümü genellikle derleyicinin izin vermediği durumlarda kullanılır. Bilinçli tür dönüşümüyle küçük türün büyük türe dönüştürülmesi sağlanabilse de aslında bu gereksizdir,  

11

çünkü aynı şeyi bilinçsiz tür dönüşümüyle de yapabilirdik. Aşağıdaki programda bilinçli tür dönüşümü gerçekleştirilmektedir. using System;  classTurDonusumu  {  staticvoid Main()      {  int a = 5;  byte b = (byte)a;  Console.WriteLine(b);  Console.ReadLine();      }  } 

Sonuç: 5 Programımızda da görebileceğiniz gibi (byte)a ifadesi, a değişkeninin byte hâlini tuttu. Aşağıdaki şekil bilinçli tür dönüşümünü anlatmaktadır.

Eğer değişken adı kısmında tek bir değişken yoksa, bir ifade varsa parantez içine alınması gerekir. Bu şekilde tür dönüşümü değişkenlere uygulanabildiği gibi sabitlere de uygulanabilir. using System;  classTurDonusumu  {  staticvoid Main()      {  byte b = (byte)12.5f;  Console.WriteLine(b);  Console.ReadLine();      }  } 

Sonuç : 12

 

12

BÖLÜM4 OPERATÖRLER  

Programlama dillerinde tek başlarına herhangi bir anlamı olmayan ancak programın işleyişine katkıda bulunan karakter ya da karakter topluluklarına operatör denir. Örneğin a+b ifadesinde + işareti bir operatördür. Operatörlerin etki ettikleri sabit ya da değişkenlere ise operand denir. Örneğin a+b ifadesinde a ve b birer operand’dır. C#'ta operatörlerin bazıları tek, bazıları çift, bazıları da üç operand alır. Peki eğer bir ifadede birden fazla operatör varsa ne olacak? Örneğin 2+3*7 gibi bir ifadede önce hangi işlem yapılacak? Burada önce toplama işlemi yapılırsa sonuç 35 olur, ancak önce çarpma işlemi yapılırsa sonuç 23 olur. İşte C#'ta bu gibi durumları önlemek için operatör önceliği diye kavram bulunmaktadır. Operatör öncelikleri ile ilgili şu kuralları bilmenizde fayda var: Önce parantez içleri yapılır. Örneğin (3+5)*9 gibi bir ifadede önce toplama işlemi yapılır. İç içe parantezler söz konusuysa önce en içteki parantez yapılır, sıra ile dıştaki parantezlere gidilir. Örneğin (2+(9+2)*5)*2 gibi bir ifadede önce 9 ile 2 toplanıp 11 değeri bulur, sonra 11 ile 5 çarpılıp 55 değeri bulunur, sonra 55 ile 2 toplanıp 57 değeri bulunur, en son da 57 ile 2 çarpılıp 114 değeri bulunur. Aşağıdaki tabloda operatörler öncelik sırasına göre listelenmiştir. Tablo, öncelik sırası en önde olandan en geride olana göre sıralanmıştır. Yani aynı ifadede parantez söz konusu değilse bu tablodaki daha üstte olan operatör daha önce işletilecektir. Birinci öncelikliler

x++, x--

Tek operand alan operatörler

+, -, !, ~, ++x, --x, (Tür)x

Çarpma ve bölme

*, /, %

Toplama ve çıkarma

+, -

Kaydırma operatörleri



İlişkisel ve tür testi operatörleri

, =, is, as

Eşitlik operatörü

==, !=

Bitsel Ve (AND)

&

Bitsel Özel Veya (XOR)

^

Bitsel Veya (OR)

|

Mantıksal Ve

&&

Mantıksal Veya

||

Koşul operatörü

?:

Atama ve işlemli atama operatörleri =, *=, /=, %=, +=, -=, =, &=, ^=, |=

 

Dikkat ettiyseniz yukarıdaki tablodaki bazı operatörler aynı sırada, yani bunların öncelik sırası eşit. C#'ta eğer operatörler eşit öncelikliyse, soldan sağa işlem yapılır. Yani 2*6/5 işleminde önce 2 ile 6 çarpılır, sonra da sonuç 5'e bölünür. Çoğu durumda bunun sonuca bir değişiklik yapmadığı düşünülse de bazı durumlarda işleme soldan başlanmasının sağdan başlamaya göre değişik sonuçlar doğurduğu durumlara rastlanabilir. Örneğin: using System;  classOperatorler  { 

 

13

staticvoid Main()      {  int i = 3 * 5 / 7;  Console.Write(i);  Console.ReadLine();      }  } 

Bu programda ekrana 2 yazılır. Ancak; using System;  classOperatorler  {  staticvoid Main()      {  int i = 3 * (5 / 7);  Console.Write(i);  Console.ReadLine();      }  } 

Bu programda ekrana 0 (sıfır) yazılır. Çünkü C# sonunda herhangi bir harf olmayan tam sayı sabitleri int sayar ve int’in kurallarına göre işlem yapar. int sabitlerle yapılan her işlemden sonra – oluşursa - ondalık kısım atılır. Ancak programı aşağıdaki gibi değiştirirsek sonuç değişmeyecektir. using System;  classOperatorler  {  staticvoid Main()      {  int i = (int)(3f * (5f / 7f));  Console.Write(i);  Console.ReadLine();      }  } 

Sonuç: 2  

Burada sabitleri float’a dönüştürdük, dolayısıyla da işlemin sonunda float bir sabit oluştu. Sonra tür dönüştürme operatörüyle sonucu int’e çevirip i değişkenine atadık ve bu değişkeni de ekrana yazdırdık. Şimdi isterseniz bütün operatörleri tek tek inceleyelim.

Matematiksel Operatörler + ve – Operatörleri

Toplama ve Çıkarma işlemlerini yapan operatörlerdir. + ve – operatörlerinin opreandları herhangi bir türden olabilir. Örneğin; int i = 50 + 40; float f = 12.56f + 11.4f; 

 

 

14

*ve/ Operatörleri

Çarpma ve bölme işlemlerini yapan operatörlerdir. * ve / operatörlerinin operandları herhangi bir türden olabilir. Örneğin; int i = 50 + 40; float f = 50f + 40f; Console.WritLine(i); Console.WritLine(f);

% Operatörü

% operatörü iki operand almaktadır. Sonuç birinci operandın ikinci operanda bölümünden elde edilen kalandır. Bütün numerik türler için kullanılabilir. Örneğin; using System;  classOperatorler  {  staticvoid Main()      {  int i = 5 % 2;  Console.Write(i);  Console.ReadLine();      }  } 

Sonuç: 1 ++(Arttırma) ve – (Eksiltme) Operatörleri

C#'ın en çok kullanılan operatörlerindendir. Önüne veya sonuna geldiği değişkeni bir artırır veya bir eksiltirler, sabitlere uygulanamazlar. Hem uygulandığı değişkenin değerini 1 artırır veya eksiltirler hem de tutucu vazifesi görürler. Ön ek ve son ek olmak üzere iki şekilde kullanılabilirler. Örnek; using System;  classOperatorler  {  staticvoid Main()      {  int a = 5;  int i = ++a;  Console.Write(i + " " + a);  Console.ReadLine();      }  } 

Sonuç : 6 6 Programda da gördüğünüz gibi ++ operatörü hem a'nın değerini bir artırdı hem de bu değeri tuttu ve değer i'ye atandı. İşte ön ek ve son ek şeklinde kullanımın farkı burada ortaya çıkıyor.

using System;  classOperatorler 

 

15

{  staticvoid Main()      {  int a = 5;  int i = a++;  Console.Write(i + " " + a);  Console.ReadLine();      }  } 

Sonuç : 5 6  

Bu programda ++ operatörü ön ek şeklinde değil de son ek şeklinde kullanılmış. Bu durumda 7. satırda önce a'nın değeri i'ye atanır, sonra a'nın değeri 1 artırılır. Halbuki ilk örneğimizde önce a'nın değeri 1 artırılmış sonra bu değer i'ye atanmıştı. Şimdi bu ++ ve -- operatörlerini bir örnekte hep beraber görelim; using System;  classOperatorler  {  staticvoid Main()      {  int a = 5;  int i = a++;  int b = i‐‐;  int c = 10;  int d = ‐‐c;  Console.Write("{0}\n{1}\n{2}\n{3}", a, i, b, d);  Console.ReadLine();      }  }  Sonuç: 6    4    5    9 

Karşılaştırma Operatörleri Karşılaştırma operatörleri iki sayının birbirine göre büyüklüğünü ve küçüklüğünü kontrol ederler. Tabii ki yalnızca sayısal türdeki (char da dâhil) değişken ya da sabitlerle kullanılabilirler. Char’la sayısal türler karşılaştırıldığında char’ın Unicode karşılığı hesaba katılır. Bu operatörler şunlardır: < (küçüktür), > (büyüktür), = (büyük eşittir), == (eşittir), != (eşit değildir),. Örnekler: using System;  classOperatorler  {  staticvoid Main()      {  bool a = 4  5;  bool c = 7 = 12;  bool e = 10 == 12;  bool f = 1 != 8;  Console.Write("{0}\n{1}\n{2}\n{3}\n{4}\n{5}", a, b, c, d, e, f);  Console.ReadLine();      }  } 

Bu program ekrana alt alta True, True, True, False, False ve True yazacaktır.

 

16

as Operatörü

Tüm değişken türlerinden objecte ve string değerli olmak şartıyla objectten stringe dönüşüm yapar. Örnek: using System;  classOperatorler  {  staticvoid Main()      {  object i = "50";  string s = i asstring;  Console.Write(s);  Console.ReadLine();      }  }  veya  using System;  classOperatorler  {  staticvoid Main()      {  int i = 50;  object s = i asobject;  Console.Write(s);  Console.ReadLine();      }  } 

İkisinde de ekrana 50 yazacaktır.  

is Operatörü

Verilen değişken, sabit ya da ifadenin türünü kontrol eder. Eğer söz konusu değişken, sabit ya da ifade verilen türle uyumluysa true değilse false değeri üretir. Eğer söz konusu değişken, sabit ya da ifadenin türü her zaman true ya da false üretiliyorsa derleyici uyarı verir, ancak bu uyarı derlemeye engel değildir. Kullanımına bir örnek: using System;  classOperatorler  {  staticvoid Main()      {  int i = 50;  bool b1 = i isint;  bool b2 = i isdouble;  bool b3 = 12 isbyte;  bool b4 = 'c'isstring;  bool b5 = 12f + 7 isint;  Console.Write("{0}\n{1}\n{2}\n{3}\n{4}", b1, b2, b3, b4, b5);  Console.ReadLine();      }  } 

Bu program alt alta True, False, False, False ve False yazacaktır. Dikkat ettiyseniz 12 sabitini byte saymadı ve 12f+7 sabitini de int saymadı. Çünkü C#, harfsiz tam sayı sabitleri int sayar. 12f+7 sabiti de float’laşmıştır.

 

17

Mantıksal Operatörler Bu operatörler true veya false sabit ya da değişkenleri mantıksal ve, veya, değil işlemine sokarlar. Bunlar && (ve), || (veya) ve ! (değil) operatörleridir. Örnek: using System;  classOperatorler  {  staticvoid Main()      {  bool b1 = 35 > 10 && 10 == 50; //false  bool b2 = 35 > 10 && 10 != 50; //true  bool b3 = 5 isint || 12 * 3 == 200; //true  bool b4 = 5 sonuç 00000111 çıkar. Yani 7 çıkar.  byte c = 5 ^ 3; // 00000101^00000011 ‐‐>sonuç 00000110 çıkar. Yani 6 çıkar.  byte d = 5;  byte e = (byte)~d; // 00000101'in değili ‐‐>sonuç 11111010 çıkar. Yani 250 çıkar.  byte f = (byte)~(a + b); // 00001000'ın değili ‐‐>sonuç 11110111 çıkar. Yani 247  çıkar.  byte g = (byte)~(a + 7); // 00001000'ın değili ‐‐‐>sonuç 11110111 çıkar. Yani 247  çıkar.  Console.Write(a + " " + b + " " + c + " " + e + " " + f + " " + g);  Console.ReadLine();      }  } 

Bitsel operatörler sayıları ikilik sisteme dönüştürüp karşılıklı basamakları "ve", "veya" veya "özel veya" işlemine sokarlar ve sonucu operandlarıyla birlikte tutarlar. & (ve) işlemi karşılıklı basamaklardan her ikisi de 1'se ilgili basamağında 1 tutar, diğer durumlarda 0 tutar. | (veya) işlemi karşılıklı basamaklarından herhangi birisi 1'se ilgili basamağında 1 tutar, diğer  

18

durumlarda 0 tutar. ^ (özel veya) işlemi karşılıklı basamakları farklıysa ilgili basamağında 1 tutar, diğer durumlarda 0 tutar. ~ (değil) operatörü operandının her basamağını tersleştirip tutar. Bu operatörlerin operandları byte, sbyte, short, ushort olması durumunda sonuç int’leşir. NOT: Başında 0x veya 0X olan sayılar 16'lık düzende yazılmış demektir. Örnek: using System;  classOperatorler  {  staticvoid Main()      {  int a = 0xff;  int b = 0Xff;  Console.Write(a + " " + b);  Console.ReadLine();      }  } 

Bu program ff sayısının onluk düzendeki karşılığı olan 255 sayısını ekrana iki kere yazacaktır. Bitsel Kaydırma Operatörleri

Bu operatörler (>) sayıların bitlerini istenildiği kadar kaydırmak için kullanılır. > sağa kaydırır. Örnek: using System;  classOperatorler  {  staticvoid Main()      {  byte b = 100; // 01100100  byte c = (byte)(b  2); // d iki kez sağa kaydırıldı ve  00001100 oldu. (12 oldu.)  Console.Write(c + " " + e);  Console.ReadLine();      }  } 

NOT:> operatörlerinin operandları değişken olabileceği gibi sabit ya da ifade de olabilir. Operand(lar) byte, sbyte, short, ushortsa sonuç intleşir.

Atama ve İşlemli Atama Operatörleri Şimdiye kadar çok kullandığımız = operatörüyle ilgili bilmeniz gereken iki şey var. 

Sol tarafta kesinlikle yalnızca bir tane değişken olmalı. Örneğin aşağıdaki gibi bir kullanım hatalıdır.  

int a=0, b=0; a+b=20;

  

= operatöründe işlemler sağdan sola gerçekleşir ve = operatörü operandlarıyla birlikte atadığı değeri tutar. Örnek: 

  using System;  classOperatorler  {  staticvoid Main()      { 

 

19

byte b = 7, a = 1, c;          c = a = b;  Console.Write(a + " " + b + " " + c);  Console.ReadLine();      }  }   

Bu program ekrana yan yana üç tane 7 yazacaktır. c=a=b; satırında önce b a'ya atanır ve a=b ifadesi 7 değerini tutar. Çünkü a=b atamasında 7 sayısı atanmıştır. Sonra a=b ifadesinin tuttuğu 7 sayısı c'ye atanır. Sonunda üç değişkenin değeri de 7 olur. Ancak şu örnek hatalıdır: using System;  classOperatorler  {  staticvoid Main()      {  byte b = 7, a = 1, c;          (c = a) = b;  Console.Write(a + " " + b + " " + c);  Console.ReadLine();      }  }     

Burada önce a c'ye atanıyor ve c=a ifadesi 1 değeri tutuyor ve ifademiz 1=b ifadesine dönüşüyor. Atama operatörünün prensibine göre böyle bir ifade hatalı olduğu için program derlenmeyecektir.

 

20

Bir de işlemli atama operatörleri vardır. Aslında bunlar = operatörünün yaptığı işi daha kısa kodla yaparlar:          

 

a=a+b; yerine a+=b; a=a-b; yerine a-=b; a=a*b; yerine a*=b; a=a/b; yerine a/=b; a=a%b; yerine a%=b; a=a=b; a=a&b; yerine a&=b; a=a^b; yerine a^=b; a=a|b; yerine a|=b;kullanılabilir.

21

BÖLÜM4 AKIŞ KONTROL MEKANİZMALARI    Koşul İfadeleri   if Deyimi   switch Deyimi   Döngü Yapıları   for Döngüsü   while Döngüsü   do while Döngüsü   foreach Döngüsü   Atlama Deyimleri   break Anahtar Sözcüğü   continue Anahtar Sözcüğü   goto Anahtar Sözcüğü     

Koşul İfadeleri if else

if else deyimi sayesinde belli bir koşul sağlandığında söz konusu komutlar çalıştırılır, o belli koşullar sağlanmadığında çalıştırılmaz ya da başka komutlar çalıştırılır. Kullanılışı şu şekildedir: if(koşul) komut1; else komut2;

veya

if(koşul) { komutlar1 } else { komutlar2 }

Yukarıdaki örneklerde eğer koşul sağlanırsa 1. komutlar, sağlanmazsa 2. komutlar çalıştırılır. if veya else'in altında birden fazla komut varsa bu komutları parantez içine almak gerekir. if veya else'in altında tek komut varsa bu komutları parantez içine almak gerekmez. Örnek bir program: using System;  classAkisKontrolMekanizmalari 

 

22

{  staticvoid Main()      {  int a = 5, b = 7;  if (a 
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF