C-Programlama - Eemdersnotlari.com Örneklerle E-Kitap C#
March 29, 2017 | Author: EEM Ders Notları | Category: N/A
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