c sharp ders notları

206
Mert KÖPRÜCÜ(mr [email protected]) Sayfa 1 / -2!- Kursun Başlangıç Tarihi: " #a$ira% 211 Pa$ar Kurs Saati: &.'1. Hafta 1.Gün 2.Gün (+/-) (+/-) !ta" 1 *+ " #a$ira% 211 (B#ş) + 2 11 #a$ira% 2 11 12 #a$ira% 211 + 2$11 G!n!l S!çi% & 1, #a$ira% 2 11 1& #a$ira% 211 + + ' 2" #a$ira% 2 11 2! #a$ira% 211 + + 2 emm$ 211 emm$ 211 + + & emm$ 211 1 emm$ 211 !rn!* Tatili -(!r#t ,*si*) 1! emm$ 2 11 1 emm$ 211 + + 2 emm$ 2 11 20 emm$ 211 !rn!* Tatili !rn!* Tatili emm$ 2 11 1 emm$ 211 + + 1$ ! 3to3 211 3to3 211 + + 11 1 3to3 2 11 10 3to3 2 11 + + 12 2 3to3 2 11 21 3to3 2 11 + + 1& 2 3to3 2 11 2, 3to3 2 11 !rn!* Tatili !rn!* Tatili 1' 4yl5l 211 0 4yl5l 211 + + '.Saat 1 1 4yl5l 211 11 4yl5l 211 !rn!* Tatili !rn!* Tatili 1 1 4yl5l 211 1, 4yl5l 211 + + 2.Saat 1 20 4yl5l 211 2" 4yl5l 211 + + 1$$.Saat 1 1 4kim 211 2 4kim 211 !rn!* Tatili + 1$'.Saat 1 , 4kim 211 & 4kim 211 + + 112.Saat 2$ 1" 4kim 211 1! 4kim 211 + + 12$.Saat 21 22 4kim 211 2 4kim 211 + + 12.Saat 22 2& 4kim 211 4kim 211 + + 1&.Saat 2& " Ka36m 211 ! Ka36m 211 Ba"ra% Tatili Ba"ra% Tatili - 2' 12 Ka36m 211 1 Ka36m 211 + + 1''.Saat 2 1& Ka36m 211 2 Ka36m 211 + + 12.Saat 2 2! Ka36m 211 2 Ka36m 211 + + 1$.Saat 2 ral6k 211 0 ral6k 211 + + 1.Saat 2 1 ral6k 211 11 ral6k 211 + + 1.Saat 2 1 ral6k 211 1, ral6k 211 + + 1'.Saat &$ 20 ral6k 211 2" ral6k 211 + 12.Saat 7a$6 ipi 8 9er:a%a 12; Kursun Başlangıç Tarihi : $ Ha0iran 2$11 Kursun Biti ş Ta rihi : 2' ral ı * 2$11 Kr3% <ormal S5re3i 8 1" 3aat =>le%e% ?er3 Saati 8 1,, 3aat 1

Upload: bayvaz

Post on 14-Oct-2015

232 views

Category:

Documents


12 download

TRANSCRIPT

C # ile Nesne Ynelimli Programlama

PAGE Mert KPRC([email protected]) Sayfa - 39 - / -206-

Kursun Balang Tarihi: 05 Haziran 2011 Pazar Kurs Saati: 09.0013.00Hafta1.Gn2.Gn(+/-)(+/-)Detay

1BO5 Haziran 2011(Bo)+

211 Haziran 201112 Haziran 2011+2011 Genel Seim

318 Haziran 201119 Haziran 2011++

425 Haziran 201126 Haziran 2011++

52 Temmuz 20113 Temmuz 2011++

69 Temmuz 201110 Temmuz 2011Dernek Tatili-(DerNot Eksik)

716 Temmuz 201117 Temmuz 2011++

823 Temmuz 201124 Temmuz 2011Dernek TatiliDernek Tatili

930 Temmuz 201131 Temmuz 2011++

106 Austos 20117 Austos 2011++

1113 Austos 201114 Austos 2011++

1220 Austos 201121 Austos 2011++

1327 Austos 201128 Austos 2011Dernek TatiliDernek Tatili

143 Eyll 20114 Eyll 2011++84.Saat

1510 Eyll 201111 Eyll 2011Dernek TatiliDernek Tatili

1617 Eyll 201118 Eyll 2011++92.Saat

1724 Eyll 201125 Eyll 2011++100.Saat

181 Ekim 20112 Ekim 2011Dernek Tatili+104.Saat

198 Ekim 20119 Ekim 2011++112.Saat

2015 Ekim 201116 Ekim 2011++120.Saat

2122 Ekim 201123 Ekim 2011++128.Saat

2229 Ekim 201130 Ekim 2011++136.Saat

235 Kasm 20116 Kasm 2011Bayram TatiliBayram Tatili-

2412 Kasm 201113 Kasm 2011++144.Saat

2519 Kasm 201120 Kasm 2011++152.Saat

2626 Kasm 201127 Kasm 2011++160.Saat

2703 Aralk 201104 Aralk 2011++168.Saat

2810 Aralk 201111 Aralk 2011++176.Saat

2917 Aralk 201118 Aralk 2011++184.Saat

3024 Aralk 201125 Aralk 2011+192.Saat

Yaz Tipi : Verdana 12;

Kursun Balang Tarihi : 05 Haziran 2011Kursun Biti Tarihi : 24 Aralk 2011Kursun Normal Sresi

: 150 saatlenen Ders Saati

: 188 saat1.Hafta 2.Gn (05 Haziran 2011).NET Nedir?Microsoft yeni kuak uygulama gelitirme ve altrma ortamdr.

.NET = SelpakCLI(Common Language Infactory) = Kat Mendil

.NET ; Microsoftun rnnn addr. Microsoft bu ortam ECMA 335, CLI(Common Language Infactory) ismiyle standardize edildi. Linuxdaki karl MONOdur. Dier bir gerekletirilmesi Rotordur..NET Tarihsel Geliimi lk resmi aklama 2000 ylnda gelmitir. 1.0 (2002)1.1 (2003)2.0 (2005)3.0 (2007)4.0 (2009)C # Nedir ?

Anders Hejlsberg ve 4 arkada tarafndan yazlmtr. C #, .NET ortam iin tasarlanm yksek seviyeli nesne ynelimli Microsoft tarafndan gelitirilmi bir programlama dilidir. smindeki diyez (#) mzikten alnmtr. Syntax bakmndan C/C++ kkenlidir. %70 orannda Javaya benzer ve C++ diline daha da yaknlatrlmtr. .NET ortamnn birincil dilidir. C #; Ecma 334 ve ISO tarafndan standardize edildi..NET Ortamnn Temel zellikleri

1-) Ara Kodlu alma Sistemi

*CIL (Common Intermediate Language)

*CLR (Common Language Runtime)

=> .NET iin .exe program gerek makine komutlar iermez. erisinde CIL olarak bilinen yapay bir kod iermekte. Bu program altrlmak istendiinde bu ara kod gerek makine komutlarna dntrlerek almas istenir. Bu komutlar altrlmas istendiinde CLR altrlr.

*CIL => CLR ye doru yaplan yapay derlemeye JIT(Just in Time) Derlemesi denir. Bu derleme Microsoftun aklamasna gre %18lik bir hz kaybna sebep olduu sylenmektedir. JIT Derlemesine dier bir deyile ; ara kodun gerek makine koduna evrilmesi denir. JIT derlemesi ilemi btn olarak deil kademe kademe yaplmaktadr. Bu sisteme Bir Kere Derle ; Her Zaman Kullan denir.*Windowsun mobil iletim Sistemleri => Windows CE (Compact Edition), Windows Mobile*Iphonenn mobil iletim Sistemi => IOS (Iphone Operating System)*Blackberrynin mobil iletim Sistemi => RIMdir*Android letim Sistemide=> Google tarafndan desteklenmekte ve Java doal dilidir.=>Ara kodun en nemli avantaj ; yazlan programnn tanabilirliidir.=>Ara kodun tabi ki altrabilmesi iin orda CLI nin kurulu olmas gerekir. *Derlenmi bir programn altrabilmesi hem iletim sistemine hem de ilemciye baldr. Fakat ara kod sayesinde bu koullar kalkmaktadr. Javada da ise ayn mantk yrtlmektedir. Javada retilen ara koda Java Byte Kod denir. Javann da altrabilmesi iin JVM (Java Virtual Machine ) gereklidir.Anahtar Notlar:

*Android in doal dili => Java*Windows CEnin doal dili => C #*IOS un doal dili => Objective C ve platformu Cocoadr

2.Diller Aras Entegrasyon *Java hem dil hem de platformun ismidir. Bir dilde yazlm bir programn baka bir dilde kullanlmas her zaman skntl olmutur. nk bir projenin baz komutlar ona uygun yazlmas gerekmektedir.

*Microsoft bu problemi zmek iin COM (Component Object Model) spesifikasyonu ile zmeye almtr. Halbuki .NET ile ayn ara kod reten eitli diller ile hibir arayze gerek kalmadan kullanabilir. Sonu olarak; .NET , COM gereksinimini ortadan kaldrmtr.

*V #( .NET ortamnda Java in Yazlmtr.)*F # ( zellikle Matematiksel ilemlerinde kullanlr.F harfi Fortrandan gelmektedir)

=>Microsoft kendisi CLI ara kod retecek biimde u derleyicileri yazmtr. C #, C++/CLI, VB.NET, V#, F# vb..

=>Bunlarn dnda bakalar tarafndan yazlan CLI ara kod reten dil derleyicilerde vardr.3. Hzl uygulama gelitirme ortam

.NET ortam hzl bir uygulama gelitirme ortamdr. Bu ortamda IDEler de ve grselliide kullanarak daha az bir abayla uygulamalar gelitirilebilinir.

4. Ortak snf ktphanesi

.NET in tm dillerden ortak kullanlan geni bir snf ktphanesi vardr. Bu snf ktphanesi. NET iinde; User interface iin Forms, veritaban iin ADO.Net, Network haberlemesi iin Socket, izim iin Drawing ktphaneleri gerekir.

Anahtar notlar : iyi bir. net programcs olmak iin gereken zellikler :dili bilme ve dile hakimiyet %25Snf ktphanesi kullanma becerisi %50sistem programlama bilgisi %25

5. Gvenli bir ortam.NET doal sisteme gre daha gvenli bir altrma ortam sunmaktadr. Yetkisiz bir program sistemi bozmas, CLR tarafndan engellenmektedir. Bozuk bir programn sistemi etkilemesi zayftr.Yukardakiler dnda baka zellikleri vardr bunlar zamanla incelenecektir.

.NET ORTAMI NASIL KURULUR.

Microsoft , Windows Xpnin sonraki srmlerinde artk .Net ortamn Windowsun standart bir paras haline getirmitir. Yani Windows sistemleriyle birlikte zaten bu ortam kurulu olacaktr. Fakat programc yeni bir versiyonu yada eski bir iletim sistemine bu ortam kurmak isteyebilir .

1. Visual Studio IDEsini kurulduunda zaten .NET ortamda kurulmaktadr. Microsoft Visual Studio IDEsini bedava versiyonu Express Edition ismiyle datlmaktadr. 2. SDK(Software Devolepment Kit), .NET Framework SDK kurulursa IDE kurulmaz. Microsoftun sayfasndan Framework SDK indirilir ve kurulur. Bunun iierisinde yalnzca .NET ortam deil baz aralarda vardr. 3. .NET Redistribulabe package paketi en minimal yani hi bir ortamn kurulu olmasn istemiyorsan. Bunun iin microsoft sayfasndan .net redistributable package indirrilir kurulur(YAN KUYUMCUYA Kuracan paket bu)

* .NET Ortamnn olup olmadn kontrol etmek iin ya program altrmay dene yada C srcsn den Microsofta gir ordan Microsoft .NET klasrn bak var m yok mu diye kontrol et.=>Microsof .NET ortamnn gittike gelitirip ve ilerletmektedir. Fakat bu yaplarken gemii yaplan uyumda korunmaktadr. Yani Framework 4.0 ,2.0 desteklemektedir. Yeni bir framework iin yazlm bir program eski bir frameworkda altramayabiliriz.

2.Hafta 1.Gn (11 Haziran 2011)

Derleyici KavramHerhangi bir programlayc dilde yazlm olan dilleri edeer olarak baka dillere eviren programlara evirici program denir. Translator (evirici) program.

Bir evirici programda hedef dil aa seviyeli bir dil ise (yani sembolik makina dili saf makina dili , ara kod ise) bu tr evirici programlara Compiler (Derleyici) denir.

Baz dil aralar kaynak program alarak hi hedef kod retmeden dorudan altrrlar, bu tr programlara yorumlayc (interpreter) denir. Yorumlayc yazmak derleyici yazmaktan daha kolaydr fakat yorumlayclar kodu derleyiciden daha yava altrlar. Yorumlayclarda kaynak kodun ileme sokulmas iin her an bulundurulmas gerekir .

Her derleyici program bir evirici programdr fakat her evirici program derleyici program deildir. C# derleyici mant ile alr.

Dil nedir?Dil genel olarak anlamakta kullanlan semboller kmesidir. dilin eitli kurallar varadr dil btn kurallarna gramer denir. Gramerin en nemli iki nemli alt alanna sentaks ve semantikdir. Semantik ve sentaks doal dillerin hepsinde bulunmaktadr. Baz kurallar sadece doal dilllerde vardr (morfoloji , fonetik vb..).

Sentax:Doru yazma ve doru dizilim kurallarna denir. Semantik :Sentaxa gre yazlm yaznn ne anlama geldiini konu alan gramerin blmne denir. Btn dillerde sentax ve semantik vardr.

*Diller doal diller ve kurgusal diler olmak zere ikiye ayrlabilir. Kurgusal dilllere (formal,biimsel ) dil denir. Biimsel dillleri sentax kurallar tamamen matematik sembolleriyle ifade edilebilmektedir. *Bir olgunun dil olarak kabul edilebilmesi iin sentax ve semantik kurallar olmas gerekir. rnein html bir dildir. C # bir dildir. Bilgisayar anda kullanlmak zere tasarlanm olan dilere bilgisayar dilleri denir(computer languages) eer bir bilgisayar dilinde bir ak varsa buna programlama dili denir(programming language).

PROGRAMLAMA DLLERNN SINIFLANDIRLIMASIProgramlama dillerin snflandrlmas birok lte gre yaplabilir. lt ok fazla kullanlabilir.- Seviyelerine gre- Uygulama alanna gre- Programlama modeline gre -SEVYELERNE GRE SINIFLANDIRMASeviye ; insan alglayna olan yaknlk uzaklk kastedilmektedir. Yksek seviyeli diller demek insan alglaynn daha kolay olmasn salanmasdr. Yksek seviyeli diller kolay renilir. Dk seviyeli diller daha zor renilir.

*ok yksek seviyeli diller (4.kuak diller)(SQL, Script Dilleri)

*Yksek Seviyeli Diller(C#,Php,Basic,Fortran)

* Orta Seviyeli Diller

*Sembolik makine dili

*SAF MAKNA DL

=> C# yksek seviyeli bir programlama dilidir.

-UYGULAMA ALANLARINA GRE SINIFLANDIRMA1-) Bilimsel mhendislik dilleri(Fortran,C,C++,Java,C#)

2-)Veritaban uygulamalarna ynelik diller (Foxpro, C#,Java,SQL)

3-)Grsel ve Animasyon Diller (Flash,Action Script)

4-)Yapay Zeka Dilleri (Lisp,Prolog,C/C++,C#,Java)

5-)Web Programcl(Php,C#,Java,Pyhton)

6-)Sistem programlama=>letim sistemi, derleyicilere denir(C/C++,Sembolik Makina Dilleri)

7-)Genel amal diller(C#,C,C++,Java)

C# genele amal bilimsel mhendislik alanlarnda kullanlabilinen internet ve web programclnda kullanlabilen bir programlama dilidir. -PROGRAMLAMA MODELNE GRE SINIFLANDIRMA1-)Prosedrel diller(C,Pascal)=>Dilde bir snr yok.2-)Nesne Ynelimli Diller(C#,Java)=>ierisine class girerse 3-)Fonksiyonel Diller( F#)4-)Mantksal Diller (Prolog)=>boolean aklarn kullanarak yazarak

C# nesne ynelimli bir programlama dilidir.(Object Oriented). Baz programlama dillerinde birden fazla programlama modeli kullanlr. Ama arlk bir taraf vardr her dilin. C# arlk noktas nesne ynelimdir.

PROGRAMLAMA DLLLERNN TARHSEL GELM....Dnyann ilk yksek seviyeli dili kabul edilen dil Fortrandr. Fortrann alt branlarndaki en nemli arlk kazandran algoldr. lk yksek seviyeli programlama dilleri 1950 yllarnda kmt ve ilk dil olarak kabul edilen Fortrandr. (Formul Translattionn ksaltmasnda). Dier diller Fortran kknden ayrtrlmtr. Fortran dilinden treyen en nemli dil Algoldur. Bugnk modern programlama dillleri daha ok Algol ailesinden gelmektedir. Programlama dilleri tarihsel bir aa oluturmaktadr.

IDE(INTEGRATED DEVOLEPMENT ENVRONMENT) KAVRAMIIDE derleyici deildir. IDE sadece Derleyiciyi arr. MicrosoftC# compiler csc.exedir(CSharpCompiler.Exe.) Ide yazlm gelitirme kolaylatran aralarn bulunduu bir ortamdr. ersinde editr vardr menleri vardr, eitli grsel editrleri vardr. Derleme ilemini IDEnin kendisi yapmaz. Derleyiclier komut satrl biimdedir(Pencereli program eklinde deildir).Arayz basit ama kendisi zordur. Linux C# derleyicisi mcs.exe.Aslnda IDEler olmazsa olmaz deillerdir. rnein dnyann en byk c# projesi notepad gibi programda yazlp komut satrndan csc.exe ile derleyip alrabiliriz.

ATOM KAVRAMI(TOKEN)Bir programlama dilinde yazlm bir programn anlaml en kk birimine atom(token) denir.

Atomlarn snflandrlmas;1-)Anahtar Szckler(Keyword,reserved word) : Dil iin zel anlam olan deiken olarak kullanlmas yasaklanm atomlara anahtar szcklere denir. rnek , if ,while, for.....

2-)Deikenler(identifiers/variables) : smini bizim istediimiz gibi verebildiimiz atomlara deiken denir.

3-)Operatrler(Operators) : Bir ileme yol aan ilem sonrasnda bir deer retilmesini yol aan +,-,*,/ vb. gibi atomlara operatr denir.

4-)Sabitler(Literals/constants) : Dorudan yazdmz saylara sabit denir.

5-)Stringler(strings) : Merhaba C# tek bir atomdur. iki trnak arasndaki kavramlar her zaman tek bir atomdur ve bunlara string denir.

6-)Ayralar (Delimeters/Punct..) : Bunlarn dnda kalan her eye, ifadeleri birbirinden ayran iaretlere ayra denir. Misal : ;(Noktal Virgl)Anahtar Notlar :

! (Exclamation mak) (Single quote)(Double quote) (caret)+ (plus)-(minus)*(Asterisk)/(Slash)\(Back Slash)&(Ampersand)|(pipe)()=>Parenthes[] (Square Bracker){} (Brace)_ (under scrore)< (less than)>(greater than). (period): (colon); (semi colon)@(at)~ (kurtuk/Tilda)?(Question mark)$ (Dollar Sign)%(Percent)...(ellipses)

MERHABA DNYA PROGRAMIEkrana merhaba dnya program yazan programn kts:

namespace CSD{class App{ public static void Main(){System. Console. WriteLine(Merhaba Dnya);}}}3.Hafta 1.Gn (18 Haziran 2011)

Merhaba Dnya programnn atomlar ; namespace,CSD,class ,App, {,public,static ,void,Main,(,),},System,.,Console,.,WriteLine,(,Merhaba Dnya,),;,},},}

CSharp Program Nasl Derlenir ? Yazlm bir C# program komut satrnda yle derlenir?

csc rnein : csc Sample.cs

Boluk Karakterleri(White Space) : Klavyeden boluk duygusu oluturmak iin boluk karakterlerine; boluk karakterleri (white Space denir).Space ,Tab,Entera bunlar balca boluk karakterleridir.Tab karakteri; sadece bir karakterdir o karakterin ismide Tab karakteridir. Taba basldnda ka boluk zplayaca standart bir ey deildir ne kadar zplayaca kullanlan program iinde deitirilebilinir.

C Sharpn Yazm Kural:1-) Atomlar arasnda istenildii kadar boluk karakteri braklabilinir. 2-) Atomlar istenildii kadar bitiik yazlabilir. Fakat anahtar szckler ve deikenler arasnda en az bir boluk karakteri bulundurulmaldr.

Derleyicilerin Hata Mesajlar: Derleyiciler eitli problemlerle karlatrldnda bize hata mesajlaryla durumdan haberdar eder. Derleyiciler hata mesajlar 3 blme ayrlr...

1-)Uyarlar (Warning).exe dosyasn olumasn engellemeyecek; koddaki olas mantk hatalar iin verilmektedir. Uyarlar programc tarafndan kesinlikle dikkate alnmaldr. rnek int a; diye bir deiken tanmladk eer kullanmadysak uyar alrz bu deikeni kullanmadnz diye.2-) Gerek Hatalar (Errors)Bunlar .exe kod olumasn engelleyecek derecede ciddi sentaks hatalarn ifade eder. Bir programda, bir gerek hata varsa bile kod derlenemez yani.exe dosya oluturulamaz!3-) lmc Hatalar (Fatal Error)Derleme ileminin devamn bile engelleye bilen ciddi hatalardr. Genellikle sistemdeki problemlerden kaynaklanr. rnein; bellein yda diskin yetersiz olmas. Hatalarn, olas yerleri derleyici tarafndan tespit edilir. Bir hata numaras ve ismiyle kullancya bildirilir. *Hata mesajlarn verili biimi derleyiciden derleyiciye deiebilir.

Merhaba Dnya Programnn Aklamas :Bir Csharp program kabaca isim alanlarndan ; isim alanlar snflardan; snflarda metotlardan oluur...

Anahtar Notlar : (Mutlaka Yazlmal)[..........] (ster yaz ister yazma-opsiyonel)

Programlama dillerin sentaks; tipik olarak BNF (Bucks Nour Form) denilen bir notasyonla yada bunun trevleriyle ifade edilmektedir. Ancak biz kursumuzda bu teknii kullanmayacaz; biz asal parantez keli parantez tekniini kullanacaz. Asal parantez ierisindeki eler mutlaka yazlmal; keli parantez ierisindeki eler ise opsiyoneldir. Bunun dndaki btn atomlar ayn biimde bulundurulmak zorundadr. Anahtar szcklerinde alt izilmektedir.

Bir isim alannn(namespace) bildirim ekli yledir:namespace {

}

* Kme parantezi arasndaki blgeye blok denilmektedir.

Anahtar Notlar :CSharpda(C++ ve Java da )/* ..... */ arasnda program paras derleyici tarafndan dikkate alnmaz.Benzer biimde //.......(Satr sonuna kadar) olan ksmda derleyici tarafndan dikkate alnmamaktadr.Genel gsterimlerdeki //... (Burada baka eyler var ama bizi u an ilgilendirmiyor anlamna geliyor.

Bir snf bildiriminin genel ekli yledir : class {

//...

}

Metotlarn Bildiriminin Genel ekli yledir:[eriim belirleyicisi][static]([parametre bildirimi])

{

//...

}

*Eriim Belirleyicisi aadaki anahtar szcklerden biri olabilir...*public*protected*private*internal*protected internal. Bir eriim belirleyicisi belirtilmezse private olarak kabul edilir.

* Eriim szc ilerde anlatlana kadar biz hep public kullanacaz..* Bir metot statik olabilir yada olmayabilir ; biz imdilik tm metotlar hep statik yapacaz....

* Program metotlarn birbirini armasyla alr; programn almaya balad nokta Main metodur. Her programda yalnzca bir tane Main Metodu bulunmak zorundadr. Main metodu herhangi bir snf alannda herhangi bir isim alannda bulunabilir. * Main metodu public olmak zorunda deildir ancak static olmak zorundadr...* Bir CSharp Program Main metoduyla balar; Main bitince programda biter...

* Bir metodun bildirilmesi bizim tarafmzdan yazlmas denmektedir. arlmas ise altrmas anlamna gelmektedir.

Metot armann Genel Biimi yle...[isim alan ismi].[snf ismi].([argman ilemi])

* .net in btn snflar System isimalan ierisinde bulunmaktadr.

Console snfnn Write Metodu; cursoru yaznn sonunda brakr. WriteLine Metodu ise aa satrn banda brakr.

Foo Program:

Balangnamespace CSD{ class CSD { public static void Main() { Test. Other. Foo(); } }}namespace Test{ class Other { public static void Foo() { System.Console.WriteLine("Foo."); } }}BT* Eer metot ayn isim alan ierisindeki baka bir snftaysa onu arrken isimalan ismini belirtmek zorunda deiliz fakat belirtmekte bir sknt olmaz.*Eer metot ayn snfn ierisindeyse biz onu yalnzca metot ismiyle arabiliriz.3.Hafta 2.Gn (19 Haziran 2011)

C# TEMEL TRLER.1 byte = 8 bit;

Tr(type); bir deikenin bellekteki ka byte yer kaplad belirleyen ve onun ierisine hangi aralkta ve formatta bilgi yerletirileceini anlatan bir kavramdr. Her deikenin bir tr vardr.

TrUzunluk(byte)Yap KarlSnr Deerler

TAM SAYILAR

int4System.Int32[-2147483648 , +2147483647]

uint4System.UInt32[0,4294967295]

short2System.Int16[-32768,+32767]

ushort2System.UInt16[0,65535]

long8System.Int64[-9223372036854775808, +9223372036854775807]

ulong8System.UInt64[0,18446744073709551615]

byte1System.SByte[-128,127]

sbyte1System.Byte[0,255]

GEREK SAYILAR

float4System.Single3.6*10-38 3.6*1038

double8System.Double1.8*10-308 1.8*10308

decimal16System.Decimal28 digit mantis

DER TRLER

bool 1System.Booltrue,false

char2System.Char[0,65535]

* int tr iaretli bir tamsay trdr: negatif ve pozitif saylar tutabilir. (Tabi ki snr erevesinde)* uint tr iaretsiz bir tamsay trdr. aretsiz tr demek yalnzca sfr ve pozitif saylar tutabilmek demektir. Her tamsaynn birde iaretsiz bir trde vardr. uint tr; int trnn iaretsizidir.* short tr int trnn 2 bytelk ksa biimidir.* long tr; int trnn 8 bytelk trdr. ok uzun iaretli tam saylar tutabilmektedir.* float laf floating pointten(kayan nokta) anlamna gelmektedir. CSharpda kullandmz float tr (kayan nokta formatnda tutulmaktadr.)*Float tr 4 byte uzunlukta bir gerek say trdr. CSharpda gerek say trleri zaten default olarak iaretlidir. Bunun ayrca iaretsiz bir biimi de yoktur.*Float trnde 3.basamaktan sonra yuvarlama hatas (rounding error) hatas oluabilir. *Gerek saylarlar ilgili en byk hatalardan biri yuvarlama hatas (rounding error) olgusudur. Yuvarlama hatas saynn kendisinin tam olarak tutulamayp ona yakn bir sayyla tutulmasyla oluan bir hatadr. Yuvarlama hatas her sayda olumaz. Float trnn yuvarlama hatalarna direnci zayftr. rnein yuvarlama hatasna sebep olacak bir say noktadan sonraki 3.sayda kendini gsterebilmektedir.* Doublen anlam aslnda floatn 2 kat demek istenmektedir.* Double tr 8 byte uzunlukta bir gerek say trdr. Bu trn yuvarlama hatalarna direnci iyidir ve pratikte bu nedenden dolay fazlaca tercih edilmektedir.*Decimal tr; mantis ksm 28 digite kadar olan noktal saylar hi yuvarlama hatas ortaya kmadan tutabilmektedir. *char tr Unicode karakter tablosunu kullanr ve 2 byte yer kaplar. Aslnda karakterler saylarla temsil edilmektedir. C# char tr aritmetik ilemlere sokulabilir adeta iaretsiz bir tamsay trdr.*Decimal tr doal bir tr deildir. Yani; iki decimal say zerinde ilem dorudan ilemcinin elektrik devreleriyle yaplmaz. Yapay bir biimde bir algoritmayla yaplmaktadr. Bu neden biz bu tr float ve double yerine her yerde kullanlmamaldr. zellikle finansal alanlardaki gibi hi bir hatann olmad yerde kullanlmamaldr.*bool tr; doru yanl bilgisini tutan bir trdr. * C # en ok kullanlan tam say trdr int; en ok kullanlan gerek say tr de doubledr. Programc nce bunlar tercih etmeli, zen bir durum varsa baka trleri tercih etmelidir.Anahtar Notlar:**Gerek saylar kesinlik if ierisinde tam saylarla karlatrmamaldr.*** Reflector adl program decompiler programdr. Yani .exe formatn source koda evirmektedir. *** DisSharp ya da Salamender adl programda ayn ekildedir.

BLDRMBir deikenin kullanlmadan nce derleyicilere tantlma ilemine bildirim denir. Tm deikenler kullanlmadan nce bildirilmek zorundadr. Bildirim eklinin genel bildirimi aadaki gibidir: rnein:int a;ulong b,c,d;double x,y;*Deiken isimleri saysal karakterle balatlamaz ve boluk ieremez. C # byk harfler ve kk harfler tamamen farkl karakter olarak ele alnmaktadr. Yani C# case sensitive(kk byk harf duyarl) bir programlama dilidir. C#da standart olarak maksimum olarak deiken ismi verirken bir limit yoktur. Bu konu derleyicileri yazanlarn isteine braklmtr.* Deiken isimlendirmesinde tm Unicode karakter (rnein trke karakterler) kullanlabilinir. Deiken isimleri iyi bir teknik iin anlaml, telaffuz edilebilir ve mmknse ksa tutulmaldr.

Bir bildirim bir metotun iinde yaplabilir ya da snf bildiriminin ierisinde yaplabilir. Metot ierisinde bildirilen deikenlere yerel deikenler; snfn iinde bildirilirse snfn veri elemanlar denir.Console snfnn Write ve WriteLine metotlaryla biz herhangi bir deikenin ierisinde ki deeri ekrana yazdrabiliriz.Bir deikene bildirim srasnda deer atanabilir. Buna ilk deer verme (initialization)rnein: int a=100,b,c=20;

Bir deikene henz deer atamadan onun ierisindeki deeri alabilecek ekilde bir ifade kullanamayz.

YEREL DEKENLERN FAALYET ALANLARIBildirilen bir deikenin kullanlabilecei program alan faaliyet alan(scope) denilmektedir. Bir metot ierisinde istediimiz kadar ayrk ya da bitiik blok aabiliriz. Bir yerel deiken ancak bildirimden sonra ve bildirildii blokta ve blou kapsad blokta kullanlabilir.

C# ayn blokta ve i ie yerel bloklarda ayn isimli deikenler bildirilemez. Fakat ayrk bloklarda ayn isimleri deikenler bildirilebilir.

nce i blokta sonra d blokta ayn isimli deikenlerin bildirilmesinde yasaktr.rnein:

{ { int a;}int a; //error}*** C #i ie metot bildirilemez. Her metot dierinden bamsz olarak bildirilmek zorundadr.

METOTLARIN GER DN DEERLERBir metot arldnda metot altrlr, metotun almas bittiinde bir deer elde edilir. Bu deer aritmetik ilemlere sokulabilir buna metotun geri dn(return value) deeri denir.

rnein: x = Foo()*2;

Metotun geri dn deerinin tr; metotun isminin sol tarafna yazlmaldr. rnein :public static int Foo(){

}

Anahtar Notlar : Deikenlerin operatrlerin ve sabitlerin her bir bileimine ifade(expression) denir. rnein: x,x+y,x+y-3,10. TEK BAINA BR OPERATR FADE DELDR.

Metotun geri dn deeri return anahtar szc ile dndrlr. Return deyiminin genel biimi yledir.

return [ifade];Return deyimi ayn zamanda metotuda sonlandrmaktadr.

* Metotta ne ierik varsa yaplmaya devam ediliyor, return deeri ekstra bir deerdir sadece geri dnen deer ilenecek diye bir dnceye girmemek gerekir.

Metotun geri dn deeri kullanlmak zorunda deildir. Yani biz metotu arp geri dn deerinden hi faydalanmayabiliriz. * Metotun geri dn deeri yerine void yazlrsa; bu durum metotun geri dn deerine sahip olmad anlamna gelmektedir. void metotlarda return anahtar szc kullanlabilinir fakat yanna ifade yazlamaz. void bir metot da hi return kullanlmayabilir bu durumda metot ana blok bittiinde sonlanr.* Metotun bir ger dn deeri varsa biz return deyimini kullanmak zorundayz aksi halde error oluur. Metotun btn mmkn aklarnda metotun return aklar grlmek zorundadr.

Metotun geri dn deeri nce derleyici tarafndan yaratlan geici bir deikene aktarlr. Sonra oradan alnarak kullanlmaktadr. Kullanm bittikten sonrada bu geici deiken yok edilmelidir.

rnein

int result;

result = Foo()*2;public static int Foo(){

int a=10,b=20;return a+b;

}burada aslnda unlar olmaktadr. 1-) Foo() metodunu altr.2-) Geici deikeni yarat 3-) temp eittir geri dn deeri..4-)result = temp*2;5-)geici deikeni yok et...

Aslnda metotun geri dn deerinin tr yaratlacak geici deikenin trn belirtmektedir. Aslnda return ilemi de gizli bir atama ilemidir. Metotun geri dn deerinin void olmas, geri dn deeri iin geici bir deikenin oluturulmayaca anlamna gelir.

4.Hafta 1.Gn (25 Haziran 2011)

METOTLARIN PARAMETRE DEKENLER

public static int Foo(PARAMETRE DEKENLER){

}

* Bir metot parametre deikenlerine sahip olabilir, metotun parametre deikenleri bildirim srasnda parametre parantezinin iinde bildirilir.

rnek :

public static int Foo(int a,long b){

}

HATALI OLMAZ :public static void Bar(int a,b){

} // ayn deiken trnde de olsa parametreler hepsini ayr ayr belirtmek zorundayz...* Parametreli metotlar arlrken parametre says kadar argman kullanlmak zorundayz. Argman; herhangi bir ifade olur. Parametre bildirirken, argman arlrken denir.

* Parametreli bir metot arldnda nce argmanlarn deerleri hesaplanr. Sonra argmanlardan parametre deikenlerine karlkl arama yaplr. En sonunda ak metota geirilir. Metotun arlmasnda parametre deikenleriyle yaplan gizli bir atama anlamna gelmektedir.

* Metotun parametre deikenleri adeta metotun ana blounun banda bildirilmi gibi ilem grmektedir.

ATAMA YAPILAN YERLER:1-) a=b (bizim her zaman yaptmz atama)2-)return ile3-)Metot arrken yaplan atama4-)lerde greceiz...

Anahtar Notlar: C # da atama ilemlerinde kaynak ve hedef trler farkl olabilir. Bu konu ileride ele alnacaktr. Fakat imdilik biz bunlarn trlerini ayn yapacaz.

BAZI MATEMATKSEL METOTLAR

* .Nette baz matematiksel ilemleri yapan System.Math snf vardr. - Sqrt metodu argman olarak ald saynn karekkn alr. public static double Sqrt(double d)

- Pow metodu kuvvet almakta kullanlr. public static double Pow(double x,double y)

- Log metodu e tabanna gre, Log10 metodu 10 tabanna gre logaritma almakta kullanlr. - Round metodu; belli bir basamaktan itibaren yuvarlama yapmaktadr. public static double Round(double value, int digits)

*** Metot 2.parametreyle belirtilen miktarda noktadan sonra basamak brakacak ekilde yuvarlama yapar. Yuvarlama saysnda ki son basamann tek ve ift basamana bal olmakla beraber ayr strateji uygulanr.

- Exp metodu; e zeri x ilemini yapmaktadr. public static double Exp(double d)

- Sin,Cos,Tan,Asin,Acos,Atan; metotlar trigonometrik hesaplar yapar. Ancak metotlarn parametresi radyan cinsindendir.

- Abs; metodu mutlak deer almak iin kullanlr.

- Ceiling ve Floor; metotlar Tavan ve Taban ilemlerini yapar.

- Truncate; metodu saynn noktadan sonraki ksmn atar.

KLAVYEDEN DEER OKUMAKKlavyeden T trnden deer okuyabilmek iin u kalp kullanlr.T tr demek ( Herhangi bir tr anlamna gelmektedir)T.Parse(System.Console.ReadLine());

rnek :int a;a = int.Parse(System.Console.ReadLine());

WRTE ve WRTELNE METOTLARININ PARAMETRK KULLANIMIWrite ve WriteLine metotlarnda ilk argman bir string ise buradaki kme parantezi n biimindeki kalplar ile ekrana yazdrlr. Bunlar yer tutucudur. Bunlarn yerine iki trnaktan sonraki deerleri yazdrlr. ki trnaktan sonraki ilk argmann index numaras 0dr. int a=10,b=20;System.Console.WriteLine(a = {0} b={1},a,b);

SABTLER:Dorudan yazlm saylara sabit denir. ngilizcede literal diye gemektedir. Sadece deikenlerin deil sabitlerinde bir tr vardr. Sabit kurallar yledir :

1-)Say nokta iermiyorsa ve sonunda bir ekte yoksa say int,uint,long,ulong(sras nemli) trlerinin hangisinin trne giriyorsa sabit o trdendir.rnekler aadaki gibidir.

123 -> int3000000000 -> uint5000000000 -> long

2-)Say nokta iermiyorsa veya saynn sonunda L veya l( kk L harfi) varsa sabit srasyla long,ulong(sras nemli) trlerinden hangisini snrlarn iersinde ilk kalyorsa o trdendir.

100L -> long0 -> int0L -> long

3-)Say nokta iermiyorsa ve saynn sonunda u yada U varsa; sabit uint,ulong(sras nemli) trlerinden hangisinin snrlar ierisinde ilk giriyorsa o deerdir.

100u -> uint5000000000 -> ulong

4-)Say nokta iermiyorsa ve saynn sonunda ul yada lu son eki varsa (u ve l ler kk yada byk olabilir) sabit ulong trdendir.

Anahtar notlar: Yukardaki maddelerde dier say ulong trlerinin snrnn ierisindede deilse sistem hata verir.

5-)Say nokta ieriyorsa ve sonun hibir ek yoksa ya da say nokta iersin ya da iermesin sonun kk harf d ya da byk harf D varsa sabit double trdendir.

12D -> double12.3 -> double12.3D -> double

*** Pek ok dilde noktann sana bir ey yazmamak sfr yazm kabul edilir. Dolaysyla 12. gibi bir say geerlidir ve double trdendir. C# bu say geersizdir. Ancak, . 3 gibi bir say geerlidir ve 0.3 anlamna gelmektedir.

6-)Say nokta iersin ya da iermesin saynn sonunda kk harf f yada byk harf F varsa sabit float trndendir.

5F -> float5.2F -> float

7-)Say nokta iersin ya da iermesin saynn sonunda kk harf m ya da byk harf M varsa sabit decimal Trndedir.

8-)true ve false anahtar szckler bool trden sabit belirtmektedir. 9-)bir karakteri tek trnak ierisine alrsak bu bize char trn belirtir.k

-> charstring -> string

*** Tek trnak ierisindeki karakterlerin say karl aslnda say karl vardr. Unicode karakterinin ilk 128 karakterlerinin karl ASCII Tablosuyla ayndr.

*** Baz baslamayan non-printable tek trnak iersinde nce bir ters bl sonra bir karakter bileeniyle ifade edilmektedir.

\a -> alert\b -> backspace\f -> form feed\n -> new line\r -> Bulunan satrn bana getirilir. carriage return \t -> tab\v -> vertical tab

rnein; System. Console. WriteLine(c:\temp\alert.dat); // yazdk diyelim alacamz karlk aadaki gibidir.c:empler.dat // Dikkat edersek bir tab boluk grd yazmz ve bilgisayarmzda bip sesi geldi

*** Ters bl karakterleri iki trnak ierisinde de kullanlr*** Ters bl iaretine escape sequence karakteri denir.*** \ iaretine belirtmek iin \\ eklinde belirtiliir.***Tek trnak karakterini yazdrma iinde char ch =\*** Tek trnak ierisinde ift trnak, ift trnak ierisinde de tek trnak dorudan yazlabilir. Fakat istenirsede ift trnak karakterinin kendisi \ eklinde yazlr

10-)C#da short,ushort,byte,sbyte trnden sabit kavram yoktur....

4.Hafta 2.Gn (26 Haziran 2011)

OPERATRLERBir ileme yol aan, o ilem sonrasnda bir deer olumasn salayan atomlara operatr denir.

Operatrler 3e ayrlr;1-)levlerine Gre: * Aritmetik Operatrler(Arithmetic Operatr) * Karlatrma Operatrleri(Comprassion op) * Mantksal Operatrler(Logical Op) * Bit Operatrleri(Bitwise Operatrler)(Uygulama 1 kursunda anlatlacak...) * zel Amal Operatrler(Special purpose)

2-)Operand Saylarna Gre Snflandrma

Operatrn ileve soktuu ifadelere operand denir...

* Tek Operandl Operatrler(Unary)rnek: ! * ki Operandl Operatrler (Binary)rnek: + * operandl operatrler(Ternary op.)rnek: a ? b : c

3-)Operatrn Konumuna Gre * Ara operatr (infix)rnek: a + b * nek operatrler(Prefix) rnek: !a * Son Ek Operatrleri (Postfix)rnek:Foo()Bir operatr teknik olarak tanmlayabilmek iin bu snflanma biimde nereye dtn belirtilmesi gerekir. rnein : \ operatr iki operandl araek bir aritmetik operatrdr.(Binary-infix-aritmethic op.) : ! operatr tek operandl n ek bir mantksal operatrdr.(Unary-prefix-logical op.)

OPERATRLER ARASINDAK NCELK LKS(Precedency)a = b+c * d;Yaplan lemin Sras ve Atan...i1 = c*d;i2 = b+i1;i3=a=i2;

Operatrlerin arasndaki ncelik ilikisi operatrlerin ncelik tablosu adndaki tabloda belirlenir. Tablodaki ayn satrdaki ayn ncelik ilemlerine, sttekiler alttakilerden daha nceliklidir.

***ncelik tablosu satrlardan oluur, st satrdakiler alt satrdakilerden daha nceliklidir, ayn satrdakiler eit nceliklidir. Eit ncelikli operatrler; ifade ierisindeki konumlara gre soldan saa yada sadan sola eit nceliklidir. rnein:

()soldan-saa

*/soldan -saa

+-soldan-saa

=sadan-sola

arp,Bl,Art ve Eksi operatrleri(* / + -)

ki operandl ara ek aritmetik operatrleridir. Temel drt ilemi yaparlar.

YZDE OPERATR (%)ki operandl ara ek aritmetik operatrdr. Mod ilemi yapar. Bu operatr soldaki operandn sada ki operanda blmnden kalan verir. Yzde operatr(%) ncelik tablosunda arp ve bl operatryle ayn ncelikte soldan saa operatrdr.

()soldan-saa

*/%soldan -saa

+-soldan-saa

=sadan-sola

ARET + ve ARET - OPERATRLERBunlar tek operandl n ek aritmetik operatrlerdir. aret operatr operand negatifin retir. aret art operatr ise operand ile ayn deeri retir. aret art ve iaret eksi operatrleri ncelik tablosunun ikinci dzeyinde sadan sola ve grupta bulunurlar.

()soldan-saa

+-sadan-sola

*/%soldan -saa

+-soldan-saa

=sadan-sola

Anahtar Notlar: Derleyici nce kaynak kodu atomlara ayrr sonra atomlar baka bir modle ileterek programn sentax geerliliini kontrol eder. Derleyicilerin bu kaynak kodunu atomlara ayran ilk modlne scanner, lexical ya da lexical analyzer denilmektedir. Scanner modl boluklara ayrlmam karakterler grdnde en uzun karakter diziliminden atom yapmaya almaktadr. Dolaysyla a>=b gibi bir ifade biimde aadaki gibi atomlarna ayrlr;

a>=b

++ VE -- OPERATRLER++ operatrne Artrma (increment) denir-- operatrne Eksiltme (decrement) denir*** Bu operatrler tek operandl hem n ek hem son ek olabilirler.

++ operatr operandn deerini bir arttrmak iin - operatr bir eksiltmek iin kullanlmaktadr. ++ ve operatrleri ncelik tablosunun ikinci dzeyinde sadan sola grupta bulunur.

()soldan-saa

+-++--sadan-sola

*/%soldan -saa

+-soldan-saa

=sadan-sola

***Bu operatrlerin n ek ve son ek kullanmlarn anlamlar farkldr her iki durumda da operatr tablodaki ncelikle yaplr sonraki ileme n ek kullanmda arttrlm veya eksiltilmi deer son ek kullanmda arttrlmam veya eksiltilmemi deer sokulur.int a = 3; int a=3int b; int bb= ++a*2; b=a++*2;// a=4,b=8 //a=3,b=6

*a artrlarak ileme sokulur *ilem yaplr ondan sonra arttrlr

*** ++ ve - operatrnn operandlar deiken olmak zorundadr. *** C#da ++ ve - operatrleriyle kullanlm deikenin ayn ifade bir daha gzkmesi tanmsz davrana yol amaz. Fakat bu tr ifadelerden kanmak gerekir. rnek : b = ++a + a;

KARILATIMA OPERATRLERC # da toplam 6 karlatrma operatr vardr. Bu operatrlerin hepsi iki operandl ara ek operatrlerdir. Btn karlatrma operatrlerin hepsi aritmetik operatrlerinden dk nceliklidir.

()soldan-saa

+-++--sadan-sola

*/%soldan -saa

+-soldan-saa

==!=sadan sola

=sadan-sola

*** Karlatrma operatrleri bool trden deer retir. *** C# bool tr hi bir trle ileme sokulamaz sadece bool tryle ileme sokulur.

MANTIKSAL OPERATRLERC# 3 mantksal operatr vardr. Bunlar ! , && , || ** && ve || operatrler iki operandl ara ektir.** ! operatr tek operandl n ek operatrdr.** C# mantksal operatrlerin operandlar bool trden olmak zorundadr.

ABA && BA || B

truetruetruetrue

truefalsefalsetrue

falsetruefalsetrue

falsefalsefalsefalse

A!A

truefalse

falsetrue

** nlem operatr tablonun ikinci dzeyinde bulunur, && ve || karlatrma operatrlerinden daha dk grupta yer alr.

()soldan-saa

+-++--!sadan-sola

*/%soldan -saaaritmetik operatrler

+-soldan-saa

==!=sadan sola

&&soldan saa

||soldan saa

=sadan-sola

** Genellikle mantksal operatrler karlatrma operatrleriyle kombine edilerek kullanlr.

KAAN HOCANIN NGLZCE KTAP NERS.=>Kitap nerisi : Programming in the Key of C # , Thinking in C#, C# Primer=> www.library.nu (Kitap Sitesi nerisi)

MANTIKSAL OPERATRLERN KISA DEVRE ZELL

&& ve || operatrlerin ksa devre zellii vardr.(short-circum). ** && ve || operatr nce sol taraf tamamen yaplr bitirilir. Sa tarafnda ncelikli operatr bulunsa bile duruma gre sa taraf yaplr. && operatrn sol tarafndaki ifade false ise sa tarafndaki ifade hi yaplmaz. True ise yaplr. ubuk ubuk operatrndeki sol tarafndaki ifade true ise sa taraf yaplmaz.

*** Eer tm ilemlerin yaplmas isteniyorsa bit dzeyinde tek anpersan(&) ve tek ubuk iareti kullanlabilir.*** C # da tek & ve tek | operatrleri aslnda bit dzeyinde ilem yapan operatrlerdir. Bit dzeyi operatrlerin ksa devre zellikleri yoktur. Bu operatrler bool operandlaryla da kullanabilmektedir. Bu durumda adeta ksa devre zellii olmayan or ve and operatrleri yerine gemektedir.

SONU OLARAK; C# & operatr && operatrn, | operatr || operatrnn ksa devre zellii olmayan biimi olarak kullanlabilmektedir.

int a=3,b=4;bool result;result = a>10 && ++b 3i2 : a=i1;

y=(x=5)+3;

i1: x=5 =>5i2: i1+3=>8i3: y=i2=>8

*** Metotlarn geri dn deeri deiken belirtmez...

Foo() = 3; // ERROR

ETKSZ FADELER2 + 3; // Error

Baz ifadeler ya da operatrler programda durum deiikliine yol amayabilir Bir ilemin yaplmas programda hi bir durum deiikliine yol amyorsa C # da error oluturmaktadr. Burada + operatrnn yol at bir durum deiiklii yoktur. Yani bu kod kaldrlrsa da programda hi bir deiiklik oluturulmaz. Etkisiz bir koddur.

NOKTALI VRGLN LEV(;) Noktal virgl ifadeleri sonlandrarak onlar birbirinde ayrmaktadr. ki noktal virgl ifadesinde ifade bamsz olarak ayrtrlr. Eer noktal virgl unutulursa nceki ifade ile sonraki ifade tek bir ifade olarak deerlendirilir ve error verir.

DEYMLER fade = > ExpressionDeyim => StatementDeyimler programlama dillerinde alma birimleridir. Program deyimlerin altrlmasyla almaktadr.

DEYMLER 5 GRUBA AYRILABLR.

1-)BAST DEYMLER(Simple Statements)

Bir ifadenin sonuna noktal virgl konursa ifade deyim olur buna basit deyim denir. rnein a=10; b = a + 20;

ifade; => Deyim

2-)BLEK DEYMLER(Compound Statements)

Bir blok iersinde sfr tane yada daha fazla deyim yerletirilirse bloun tamamda bir deyim olur. Buna bileik deyim denir.

{

a=3;b=4;c=5;

{

d=6;e=7;}

}

f=8;

// YUKARIDAK KODA BAKTIIMIZ ZAMAN K DEYM VARDIR.

3-)KONTROL DEYMLER(Control Statement)

Program ak zerinde etkili olan if, for, while gibi deyimlere kontrol deyimi denir. Bunlar tek bir deyimdir.

4-)BLDRM DEYMLER(Declaration Statement)

Bildirim yapmakta kullanlan deyimlerdir. rnein: int a,b,c; double x,y,z;

5-) BO DEYMLER(Null statement)

Solunda ifade bulunmadan tek bana kullanlan noktal virgllere bo deyim denir.

a=3; ; ;

lk noktal virgln oluturduu basit deyim, sonraki noktal virgller ise bo deyimi oluturur.

*** BO DEYM KULLANILABLNR. BUNUN BR ETKS YOKTUR.

* Her deyimin altrlmas srasnda baz ilemler gerekletirilmektedir. Bir basit deyimin altrlmas demek, ilgili ifadenin yaplmas demektir. Bileik deyimin altrlmas demek; onu oluturan ifadelerin teker teker altrlmas demektir. Bir kontrol deyiminin altrlmas srasnda ne olaca ileride ele alnacaktr. Bir bildirim deyiminin altrlmas bildirilen deikenler iin yer almas demektir. Bir bo deyimin altrlmas srasnda hi bir ey yaplmaz...

*** Aslnda metotlar birer bileik deyim belirtmektedir. Bir metotun arlmas demek metotun belirttii bileik deyimin altrlmas demektir. O halde bir C # programnn almas demek Main metodunun almas demektir.

KONTROL DEYMLERF DEYMif()

else

*** f deyiminde else ksmnn olma zorunluu yoktur.

* f deyimin kendiside dardan bakldnda tek bir deyimdir. f anahtar szcnde sonra derleyici parantezler ierisinde bool trden bir ifade bekler. f deyimin doruysa yanlsa ksm vardr. Doruysa yanlsa da tek bir deyim bulunmak zorundadr. Eer birden fazla deyim bulundurulmak isteniyorsa bloklama yaplarak bileik deyim eklinde ifade edilmelidir.

f deyimi yle alr: f ifade parantezi iersindeki deer hesaplanr. Bu deer true ise yalnzca doruysa ksmndaki deyim false ise yalnzca yanl ksmnda ki deyim altrlr ve if deyimi sonlandrlr. f deyimin yanlsa ksm bulunmayabilir. Bu durumda else ksm olmayan if sz konusudur.. Derleyici if deyiminin doruysa ksmndan sonra else anahtar szcnn kullanp kullanlmadna bakar eer else yoksa bunun else ksm olmayan bir if olduuna karar verir. rnein:

if(ifade1) ifade2;ifade3;

** Burda dardan bakldnda 2 deyim vardr.

** Bazen if deyiminin yanllkla bo deyimle kapatlmasyla karlanmaktadr. Elde edilen durum geerli olduu halde programcnn istedii gibi deildir. rnein : if(ifade1); ifade2;

*** f deyiminin doruysa ksmnda baka bir if deyimi bulunabilir rnein

if(ifade1) if(ifade2) { ifade2; ifade3; } else ifade5;elseifade6; ifade7;

*** ki if deyimine kar tek bir else varsa else ksm iteki if deyimine ilikindir.

if(ifade1) if(ifade2) ifade3; else ifade4;

Eer bir durumda dtaki if deyimine ilikin olmas isteniyorsa bilinli bloklama yaplmaldr. rnein:

if(ifade1){

if(ifade2)

ifade3;

}else

ifade4;

****ki ya da daha fazla karlatrma eer karlatrmalardan biri doruyken dierlerinin doru olma olasl yoksa bu karlatrmalar ayrktr. rnein :

x==2x==3

Karlatrmalar ayrktr

x>0x0a>10 => Karlatrmalar ayrk deildir.

*** Ayrk karlatrmalar ayr if lerle yapmak kt bir tekniktir. Bunlarn else if ile ifade edilmesi daha iyidir.

Kt Olan:if(a==2){

//..

}

if()

{

//...

}

yi Olan :if(a==2){

//...

}else

if(a==3)

{

//...

}

Birden fazla ayr karlatrma sz konusu olduunda; else if merdiveni kullanlr.

if(a==1)ifade1;else if(a==2)ifade2;else if(a==3)ifade3;

5.Hafta 2.Gn (03 Temmuz 2011)VSUAL STUDO IDESNN KULLANIMI

* Bundan sonra Visual Studio (VS) olarak ksaltlacaktr.* VS daki men isimlerinin sonun (elipsis) varsa bu yeni bir diyalog penceresi alacaktr anlamna gelmektedir.VS IDESYLE SIRASIYLA UNLAR YAPILMALIDIR.

1. lk yaplacak ey proje yaratmaktr.Bunun iin File /New / Project seilir.

2. Karmza New Project penceresi kar.

3. Burada Project Type VS C# /Windows sekmesinden Template ise Empty Project seilir.

4. Her projenin bir ismi vardr VS, her proje iin ayr bir dizin aar. Projeler tek balarn deil, solution denen kaplarn iersinde bulunur. Bir proje yaratldnda ayn zamanda bir solution yaratlmaktadr. Proje solutionun ierisine yerletirilmektedir. Location : ksmnda projenin yaratlaca dizin belirtilir. Create directory for solution arplanrsa (checked) solution ve projeler iin ayr dizinler yaratlr. arplanmazsa ayn dizinin ierisinde organize edilir. Biz arplamayacaz(unchecked).

5. Bir Solution yaratldnda bu solutionu ynetmek iin Solution Explorer denen bir pencere kullanlr. Bu pencere View mensnde alabilir ya da Ara ubuunda uygun simge ile de alabilir.

6. Artk sra derlenecek kaynak dosyann proje yerletirilmesiyle gelmitir.

7. Eer yeni bir dosya yaratp proje yerletirmek isteniyorsa Project / Add New Item seilir. Ya da ayn ilem Solution Explorerda project zerine gelerek context (Balam) menden Add New Item seilerek de yaplabilir. Eer var olan bir dosya proje eklenecekse Add New Item yerine Add Existing Item seilir.

8. Add New Item dediimiz zaman bizim ekleyeceimiz Code Filedr ve kaynak dosyaya herhangi bir isim verilir. Bylece Projeye eklenmi olur.

9. Program yazlr derleme ilemi iin Build /Build Solution yada Build / xxxx(Dosya ismi) seilebilir.

10. Program altrmak iin Debug/Start Without Debugging Seilir. (Ksayol tuu : ctrl + F5).

11. Aslnda dorudan program altrlmak istenildiinde nce otomatik Compiler Derlemede yaplmaktadr.

12. O halde tek yaplacak ey Ctrl + F5 tuuna basmaktr.

13. Daha nce yaratlm bir solution amak iin File / Open / Project Solution seilir.

14. Bunun iin uygun klasre gelinir ve uzants .sln olan dosya seilir.

15. Aslnda VS IDE sini sanki bir notepad editrym gibi C# program yazmakta kullanlabiliriz. Bu Durumda Proje amayz ve derlemeyi komut satrnda yaparz.DNG DEYMLER(LOOP)Bir program parasn yinelemeli olarak altrlmasn salayan kontrol deyimlerine dng denir. C# dngler gruba ayrlr.

1.while dngleri

a.Kontroln Bata Yapld

b. Kontroln Sonda Yapld(do while dngleri)

2.for dngleri

3.foreach dngleri

KONTROLN BADA YAPILDII while DNGLERwhile()

*** Derleyici while anahtar szcnde parantezler ierisinde bool trden bir ifade bekler. *** Dngnn ierisinde bir deyim vardr. Birden fazla deyim bulundurulacak bileik deyim eklinde ifade edilmelidir.

while dngs yle alr: while parantezin ierisindeki ifade hesaplanr. Bu deer true ise dng deyimi altrlr ve baa dnlr. false ise dng deyimi sonlandrlr.

**ctrl + j => VS de kodlar yazarken context meny kartr...

**Parantez ncelii aadaki kodda gsterilmitir.

int val; while ((val= int.Parse(System.Console.ReadLine())) !=0) { System.Console.WriteLine(val*val); }*** Bazen yanllkla while dngsnn bo deyimle kapatlmasyla karlanmaktadr.

rnein : while(i 10;

*** lemli atama operatrlerinde de bir deer elde edilir. Elde edilen deer sol tarafa atanm deerdir.int a = 10,b;b = a *= 3+1;

6.Hafta 2.Gn (10 Temmuz 2011)

U AN YOK...7.Hafta 1.Gn (16 Temmuz 2011)Continue Deyimi

continue, seyrek kullanlan bir deyimdir. Dng deyimini sonlandrr. Ak sonraki yinelemeye geer. Kullanm yledir:

rnek : namespace CSD{ class App { public static void Main() { int val; for (; ; ) { System.Console.Write("Bir Say Giriniz :"); val = int.Parse(System.Console.ReadLine()); if (val==0) { break; } if (val%2==0) { continue; } System.Console.WriteLine("Karesi {0} ",val*val); } } }}Continue deyimi sadece dngler ierisinde kullanlabilir.

SABT FADELER(CONSTANT EXPRESSON)Yalnzca operatr ve sabitlerden oluan ifadelere sabit ifadeleri denir. Sabit ifadelerin net saysal deerleri derleme aamasnda belirlenebilir.

switch Deyimiswitch deyiminin genel biimi yledir. switch deyimi yle alr derleyici switch parantezi ierisindeki deeri hesaplar... Sonra tek buna eit olan case blmn aratrr. Bulursa ak oraya ynlendirilir. Eer switch parantezi ierisindeki saysal deeriyle eit olan bir case blm yoksa, fakat switch deyiminin default deeri varsa ak oraya ynlendirilir. Eer default blmde yoksa ak switch deyimine girdii gibi kar. Bir switch deyimin de hi case blm olmayabilir.

switch (){case : //... [break];

case : //... [break];

//...

[default:] //...; break;

}

case 1: -> olurcase 1+2: ->olurcase 1+x:->olmazrnek sentaks:

switch (val) { case 1: System.Console.WriteLine("Bir"); break; case 2: System.Console.WriteLine("ki"); break; case 3: System.Console.WriteLine(""); break; default: System.Console.WriteLine("Dier"); break; }rnek : namespace CSD{ class App { public static void Main() { int val; System.Console.Write("Ltfen Bir Say Giriniz : "); val = int.Parse(System.Console.ReadLine()); switch (val) { case 1: System.Console.WriteLine("Bir"); break; case 2: System.Console.WriteLine("ki"); break; case 3: System.Console.WriteLine(""); break; default: System.Console.WriteLine("Hibiri"); break; } } }}C#da switch deyimiinde aaya dme (fall through) kural yoktur. Ak bir case blmnde dierine geerse yani geebilecek durumda ise bu durum error oluturur. Akn bir case blmnde dier case blmne gemesi iin en tipik break kullanlr. Fakat return deyimi de goto deyimi de hatta sonsuz dng bile bu geii engelleyebilir. switch deyiminin sonundaki case ve default iinde break deyiminin bulunmas gereklidir.

*** switch deyiminin case blmnn sral olmas gerekli deildir.*** default deyimi en bata da bulunabilinir.*** Ayn saysal deeri ait case deyimi bulunamaz...***stisna Olarak; eer bir case blmnden sonra hi bir deyim yoksa hemen arkasndan dier bir case blm gelebilir.rnek:

case 1:case 2:case 3: System.Console.WriteLine("Bir,iki yada "); break; *** Yukardaki rnei salamann daha pratik bir yolu yoktur.***C# da aaya doru dme etkisini yaratabilmek iin goto case ; goto default; biiminde yalnzca switch ierisinde kullanlabilen, ki Deyim daha vardr.goto DEYM

*** goto deyimi programn akn koulsuz olarak istediimiz yere ynlendirmeyi salar. Ak goto deyimine geldiinde etiket ile belirtilen yere zplar.

Genel Biimi :goto

:

int i= 0;

REPEAT : System.Console.WriteLine(i); if(i 10 ? Foo() : Bar(); System.Console.WriteLine(result); } public static int Foo() { System.Console.WriteLine("Foo"); return 10; } public static int Bar() { System.Console.WriteLine("Bar"); return 20; } }}Anahtar Notlar :

Artk Yl Tespit Etme Kural yledir. 400 Tam blnen yllar arttktr. Ayrca 4 tam blnen ve 100 tam blnmeyen yllarda artk yldr. (leap year)

=>=> tarihin hangi gne geldiini bulan programn incele...

Koul operatrn dier operatrlerle ayrtrabilemesi iin ncelik parantezi gerekmektedir.

rnein : result = (a>0?100:200)+300;

*** Burada nce koul operatr yaplr... Koul operatrnden elde edilen 300 le toplanpresult deikenine atanr....

KOUL OPERATRNN KULLANILMASININ TAVSYE EDLD DURUM VARDUR.1-) Karlatrmann sonucunda elde edilecek deeri bir deikene atand durumlar...result = a>0 ? 10 :20; (Elenii)

if(a>0) result = 10;else result= 20;

2-)Metot arrken argman ifadesinde koul operatr kullanlabilinir....

rnein :Foo (a>0 ? 10 : 20);

(Elenii) if(a>0) Foo(10); else Foo(20);

rnein : System.Console.WriteLine(a>0?Pozitif:Negatif yada sfr);

rnein : Foo(a>b ? a : b);

3-)return ifadelerinde de koul operatryle karlalmaktadr.

rnein : return a > 0 ? 10 : 20;

Derleyici soru iaretinin sonuna doru ilerler, atama ya da ilemli atama grene kadar olan tm ifadeyi koul operatrnn ilk operand kabul eder.

Koul operatr i ie kullanlabilinir.

Bu durumda hi bir parantez kullanmaya gerek yoktur. Fakat parantezler okunabilirlii arttrmaktadr.rnein saynn en byn yle bulabiliriz :

int max;

max = (a>b)?(a>c?a:c):(b>c?b:c);

for (int i = 0; i < 100; i++){ System.Console.Write("{0} {1}",i,i%5==4?'\n':' ');}VERLEN TARHN HANG GN OLDUUNU BULAN PROGRAM

(LEAP YEAR ARTIK YIL)namespace CSD

{

class App {

public static void Main()

{

int day, month, year;

System.Console.Write("Gn:");

day = int.Parse(System.Console.ReadLine());

System.Console.Write("Ay:");

month = int.Parse(System.Console.ReadLine());

System.Console.Write("Yl:");

year = int.Parse(System.Console.ReadLine());

switch (GetTotalDays(day, month, year) % 7)

{

case 0:

System.Console.WriteLine("Pazar");

break;

case 1:

System.Console.WriteLine("Pazartesi");

break;

case 2:

System.Console.WriteLine("Sal");

break;

case 3:

System.Console.WriteLine("aramba");

break;

case 4:

System.Console.WriteLine("Perembe");

break;

case 5:

System.Console.WriteLine("Cuma");

break;

case 6:

System.Console.WriteLine("Cumartesi");

break;

}

}

public static int GetTotalDays(int day, int month, int year)

{

int total = 0;

for (int i = 1900; i < year; ++i)

total += IsLeapYear(i) ? 366 : 365;

switch (month - 1)

{

case 1:

total += 31;

break;

case 2:

total += IsLeapYear(year) ? 29 : 28;

goto case 1;

case 3:

total += 31;

goto case 2;

case 4:

total += 30;

goto case 3;

case 5:

total += 31;

goto case 4;

case 6:

total += 30;

goto case 5;

case 7:

total += 31;

goto case 6;

case 8:

total += 31;

goto case 7;

case 9:

total += 30;

goto case 8;

case 10:

total += 31;

goto case 9;

case 11:

total += 30;

goto case 10;

case 12:

total += 31;

goto case 11;

}

total += day;

return total;

}

public static bool IsLeapYear(int year)

{

return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;

}

}

}

7.Hafta 2.Gn (17 Temmuz 2011)FARKLI TRLERN BRBRLERNE ATANMASIBir atama ileminde kaynak trler hedef tr birbirinden farkl olabilir. Bu durumda kaynak tr hedef tre dntrlr ve atama yaplr. C# da T1 trnden T2 trne atamann mmkn olabilmesi iin T1 trnden T2 trne otomatik dntrmenin (dorudan dntrmede denilebilir) var olmas gerekir. C# her tr her tre dorudan atanamaz eer o trden o tre dorudan dntrme (implicit conversion) varsa atanabilir.

C# da genel olarak kk trde byk tre otomatik dntrme vardr. Fakat byk trden kk tre otomatik dntrme yoktur.

rnein: int, long trne otomatik olarak atanabilir. long tr ise int trne direk atayamayz.

Kk trden byk tre otomatik dntrme kuralnn baz ayrntlar vardr.

1-)Kk iaretli tam say trnden byk iaretsiz tam say trne otomatik dntrme yoktur.rnein: short tr uint trne otomatik atanamaz. nk short tr negatif saylar da iermektedir.

2-)C# da tm tam say trlerinden gerek say trlerine otomatik dntrme vardr fakat, gerek say trlerinden tam say trlerine otomatik dntrme yoktur.

3-) char tr iki byte iaretsiz bir tam say tr olarak dnlmtr. Bu nedenle char trnden ushort ve yukarsna otomatik dntrme vardr. Fakat dier trlerden char trne yoktur.

4-)Ayn trnden iaretli ve iretsiz trleri arasnda otomatik dntrme yoktur.

5-)float ve double trnden decimal trne, decimal trnden de float ve double trlerine otomatik dntrme yoktur.

6-) hi bir trden bool trne, bool trden de hi bir tre otomatik dntrme yoktur.rnekler:float

-> double

vardouble-> decimal

yokshort

> uint

yokushort > int

varlong

> ulong yokchar

> ulong

var

7-) int trden bir sabit ifadesi belirttii deer hedef trn snrlar ierisinde kalyorsa byte, sbyte, short, ushort trlerine otomatik dntrlebilir.

byte b;b = 10;// geerliFakat rnein:

int a = 10;byte b;b = a; // error**Ayrca bu kuraln devam olarak int trden bir sabit ifadesi hedef trn snrlar ierisinde kalyorsa uint ve ulong trlerine de atanabilir, long trden bir sabit ifadesi de belirttii deer hedef trn snrlar ierisinde kalyorsa ulong trne otomatik dntrlebilir. Byk trden kk tre atama srasnda derleyici byk trn ieresindeki deere bakmamaktadr. Yalnzca trlere bakmaktadr.

Nihayet hangi trden hangi tre otomatik dntrme olduunu ifade edilebilir.

sbyte -> short,int,long,float,double,decimalbyte

-> short,ushort,int,uint,long,ulong,float,double,decimalshort

-> int , long, float,double,decimalushort-> int,uint,long,ulong,float,double,decimal,int

-> long,float,double,decimaluint

-> long,ulong,float,double,decimallong

-> float,double,decimalulong -> float,double,decimalchar

-> ushort,int,uint,long,ulong,float,double,decimalfloat

-> double

LEM NCES OTOMATK TR DNTRMELERProgramlama dillerinde deikenlerin yada sabitlerin deil her ifadenin bir tr vardr. C# derleyici bir operatrle karlatnda nce operatrlerin trlerini karlatrr. Eer operatrler ayn trdense sonuta ayn trden kar.. Eer operandlar farkl trdense Derleyici nce bunlar ayn tre dntrr sonra ileme sokar...

lem ncesi otomatik tr dntrmelerin zet kural; kk trn byk tre dntrlmesi ve sonucun byk trden kmas. Dntrme geici deiken yoluyla yaplmaktadr. Yani nce byk tr trnde geici bir deiken yaratlr kk tr bunun ierisine atanr ve ilemde bu geici deiken kullanlr sonrada bu geici deiken yok edilir.rnein : int a; long b; int c; c = a + b; // error***lem ncesinde kk trn byk tre dntrlmesinin baz ayrntlar vardr.

1-)Blme ileminde iki operanda tam say trlerine eitse sonu tam say trlerinden kar. Saynn noktandan sonraki ksm atlmaktadr.

double result; result = 10 / 4; System.Console.WriteLine(result); // CEVAP 2 kar------------------------------------------------------------------------------ double result; result = 10D / 4; System.Console.WriteLine(result); // CEVAP 2,5 kar2-) Kk iaretli tam say trnden byk iaretsiz tam say trne otomatik dntrme olmad iin kk iaretli tam say tr ile byk iaretsiz tam say tr ileme sokulamaz..

3-) Tam say trleriyle gerek say trleri ileme sokulursa dntrme her zaman gerek say trlerine dou yaplr.

4-)C#da int trnde kk tam say trleri kendi aralarnda ileme sokulduunda nce her iki operanda int trne dntrlr ve sonu int trnde kar. rnein : short+ short, sbyte + ushort,bte +byte ...gibi ilemlerin sonucu int olur. rnein :

byte a = 20, b = 24, c; c = a + b; // HATA a + b ileminin sonucu int trnden kacaktr ve byte trne atanamaz...5-) float ve double tr decimal tryle ileme sokulamaz...

6-)bool tr baka hi bir trle ilem sokulamaz....

7-)char tr, ushort ve daha byk trlerle ve kendi tryle ileme sokulabilir.

8-) Bir ilemin sonucu eer ilgili trn snrlar dnda kalyorsa bu duruma overflow yani tama denir. Tama olutuunda iinde bulunduumuz balama gre(context) e gre ne olaca deimektedir. Eer kontrolsz (unchecked) balamda bulunuyorsa Exception(Beklenmedik Hata) olumaz. Saynn say zerinde krplma oluur. Eer kontroll(checked) balamda bulunuyorsak programn alma zaman srasnda exception oluur. Default balamn ne olduu standartlarda derleyiciyi yazanlarn isteine braklmtr. Microsoft derleyicilerin de kontrolsz balam (unchecked)dir. Balam deitirmek iin checked ve unchecked bloklar kullanlr.

TR DNTRME OPERATROtomatik Dntrmeye: implicit (bilinsiz)Tr Dntrme operatryle yaplan: explicit (bilinli)

Anmsanaca gibi byk trden kk trde otomatik dntrme(implicit) dntrme yoktur. Bunun nedeni programcnn yanllkla bilgi kaybna yol aacak ilem yaptrmamaktr. Programc eer isterse tr dntrme denen operatrle bool tr dnda her tr birbirine dntrlebilir. rnein: long tr int trne dorudan atanamaz fakat long tr int trne tr dntrme operatryle atanabilir.

*** Tr dntrme operatr tek operandl n ek bir operatrdr.(Uniary prefix ) kullanm yledir.

() operand;

rnein :

long a = 20; int c; c = a; // HATA long a = 20; int c; c = (int)a; // Tr Dntrme operatrleriyle yaplan sonuc * Tr dntrme operatr ncelik tablosunda ikinci ncelikli sadan sola bulunur.

** Tr dntrme ilemi srasnda dntrlecek trnde bir deiken yaratlr. Sonra dntrlecek deer oraya yerletirilir. lemde geici deiken kullanlr. Sonrada yok edilir.

rnein :a = (long) b * c;

i1 : (long) bi2 : i1 *c;i3:a=i2;

rnein : a = (long) (b*c);

a = (double)(long)b * c;i1: (long)b;i2:(double)i1;i3:i2*c;i4:a=i3;

int a = 10, b = 4; double c; c = (double) a / b; System.Console.WriteLine(c);Anahtar Notlar: Bir Program Sonlandrmak iin System.Environment.Exit(); bu metoda biz bir k kodu vermeliyiz vereceimiz k kodunun bir nemi yoktur fakat geleneksel olarak baarl klar iin 0 baarsz klar iin 0 d deerler kullanlr.

8.Hafta 1.Gn Dernek Tatili(23 Temmuz 2011)8.Hafta 2.Gn Dernek Tatili(24 Temmuz 2011)

9.Hafta 1.Gn (30 Temmuz 2011)

Tr Dntrme operatryle dntrme yaplrken bilgi kayb sz konusu olabilir. Bilgi kaybnn nasl oluacann eitli kurallar vardr.

1-) Eer kaynak tr ile belirtilen say hedef trn snrlar iersinde kalyorsa, bilgi kayb sz konusu olmaz. Kaynak trdeki say deiiklie uramadan hedef tre dntrlr.

2-) Byk tam say trnden kk tam say trne yaplan dntrmelerde saynn yksek anlaml byte deerleri atlr. Dk anlaml byte deerleri elde edilir. Elde edilen deer ilkiyle ilgisiz bir grnmde olabilir. Saynn yksek anlaml bytelar atldktan sonra elde edilen say ters iaretli bile olabilir.3-)Ayn trn iaretli ve iaretsiz trleri arasnda dntrme yapldnda saynn bit kalb deimez. Yalnzca iaret bitinin yorumlanmas deiir.

4-)Kk iaretli tamsay trnden byk iaretsiz tam say trne dntrme iki amada gerekleiri. Birinci aama say byk trn iaretli biimine dntrlr. kinci aamada byk trn iaretli biiminden byk trn iaretsiz biimine dntrme yaplr.

5-)Gerek say trlerinden tam say trlerine dntrme yaplrken saynn noktadan sonraki ksm atlr tam ksm elde edilir. Saynn noktadan sonraki ksm atldktan sonra say hala hedef trn snrlar ierisine girmeyebilir. Bu durumda kontroll balam(checked ) sz konusu ise exception oluur. Kontrolsz balam sz konusu ise (unchecked), dntrmeden elde edilen deer herhangi bir deer olabilir fakat microsoft derleyicileri bu durumda yine saynn yksekli anlaml byte deerlerini atmaktadr.

6-)Decimal trnden ,float ve double trne dntrme yapldnda float ve double trnden decimal trne dntrme yapldnda asl deere en yakn deer elde edilir.

7-)Double trnde float trne dntrme yapldnda eer kaynak tr ile belirtilen deer hedef trn basamaksal olarak snrlar ierisine giriyorsa ifade edilebilen en yakn deer ifade edilir. Fakat girmiyorsa art sonsuz ya da eksi sonsuz saylar elde edilir.

8-)Herhangi bir trden bool trne, bool trnden herhangi bir tre tr dntrme operatryle bile dntrme yapamayz...

ADRES KAVRAMIAna bellekler bytelardan olumutur ve entegre devre biiminde imal edilmitir. Bellein her bir bytena 0 dan balayarak artan bir say karlk drlmtr bu sayya ilgili byten adresi denilmektedir. Deikenlerde ana bellekte yaratldna gre onlarnda adresi vardr. Bir bytedan uzun olan deikenlerin adresleri onlarn en dk adres deeriyle ifade edilir. rneina 1000 1004 arasndaki bir deikenin 1000 biiminde yer ifade edilir.DEKENLERN MRLERHer deiken belli bir zamanda yaratlr belli bir noktada yok edilir.

Yerel Deikenlerin mrleriYerel Deikenler, programnn ak deikenin bildirildii noktaya geldiinde yaratlr. Ak deikenin bittii bloktan ktnda yerel deikenler yok edilir. Yerel deikenler stack blgesinde yaratlr. stackde yaratm ve yok etme ilemleri ok hzl yaplmaktadr. Bir yerel deikenin blok dnda kullanlamamasnn asl nedeni, onun blok dnda yaamamasndandr.

Parametre Deikenlerin mrleriMetotun parametre deikenleri arldnda yaratlr metot alt srece yamaya devam eder metotun almas bittiinde yok edilir. Metotun parametre deikeni de stack blgesinde yer alr.

SINIFLARIN VER ELEMANLARIBir snf kabaca veri elamanlarndan ve metotlardan olumaktadr. Metotlar ve beri elemanlar statik olabilir yada olmayabilir. Snfn tm elemanlar birer eriim belirleyici almaktadr. (Bu eriim belirleyici belirtilmezse default, private anlalr fakat biz public kullanacaz.

Anahtar Notlar : Yerel deikenler static olamaz ve onlara eriim belirleyicisi anahtar szckler getirilemez.

C#da her snf ayrca bir trde belirtir. Biz bir snf belirttiimizde bir trde oluturmu oluruz. O trden bildirim yapabiliriz.

Referans Trleri ve Deer TrleriTrler kategori olarak deer trleri (value types) ve referans(refrence type) Trleri olmak zere ikiye ayrlr. Eer bir tr trnden deiken , deerin kendisini tutuyorsa bu tr kategori olakra deer trlerine ilikindir. Br tr trnden deiken , deerin kendisini deilde deerin bellekte bulunduu yerin adresini tutuyorsa o tr kategori olarak referans trleriyle ilikilidir. Bu gne kadar grdmz tm temel trler ; deer trdr.

Snf Trnden DeikenlerBtn snflar , Referans Trleridir. C#da tm snf trleri referans trlerine ilikindir. Bir snf trnden bir deiken bildirildiinde o deikenin deiernin kendisini deil bir adres tutar. Bir snf trnde bir deiken bildlriliden yalnzca bir referans bildlrimitir. C#da iiersinden adres tutan deikenlere referans denilmektedir.Snf nesnesinin kendisi new operatryle yaratlr. new oeperatrnn genel biimi yledir.

new ([argman listesi])

rnein : new Sample();* new operatryle snf nesnesi yaratlr. Snf nesnesi bileik bir nesnedir. Yani paralardan olumaktadr. Snf nesnesini oluturan paralar, snfn statik olmayan veri elemanlardr. O halde new ilemi yapldnda yalnzca snfn statik olmayan veri elemanlar kadar yer ayrlmaktadr. Snf metotlar ve statik veri elemanlar baka yerde tutulmaktr. Snfn statik olmayan veri elemanlar snf nesnesi ierisinde ardk bir ekilde yer alrlar. new operatr tahsis ettii nesnenin blok olarak balang adresini verir. new operatryle elde edilen bu adres ayn trden bir referansa atlmaldr. new operatryle bellein heap blgesine tahsisat yaplmaktadr. Heap de snf nesnesinin tahsis edilmesi greli olarak daha yavatr. Snf nesnesi sadece bir ablondur. Bildirimde ki deikenler ancak new ilemi yapldnda yer ayrlr.

class Sample { public int a; public int b; public static int c; public static void Foo() { //... } public void Bar() { //... } }Sample s;s = new Sample();SINIFIN STATK OLMAYAN VER ELEMANLARINA ERMr bir snf trnden bir referanssa da bu snfn statik olmayan bir veri elaman olmak zere r.a ifadesiyle, r referansn gsterdii yerdeki nesnenin a elemanna eriilir.

Sample s;s = new Sample();

s.a = 10;s.b = 20;

** Btn yerel deikenler ister referans olsun, ister temel trlere ilikin olsun stackde yaratlr. Yani stackdeki referans heapdeki snf nesnesini gstermektedir. her new ilemi ayr bir nesnenin yaratlmasna sebep olmaktadr.

namespace CSD{ class App { public static void Main() { Sample s; s = new Sample(); s.a = 10; s.b = 20; System.Console.WriteLine(s.a); System.Console.WriteLine(s.b); } } class Sample { public int a; public int b; public static int c; public void Foo() { //... } public static void Bar() { //... } }}* Ayn trden iki referans tr birbirine atanabilir iki referans da ayn tr gsteriyor olur. Artk nesnenin elemanlarna hangi referansla eritiimizin bir nemi yoktur.

9.Hafta 2.Gn (31 Temmuz 2011)

SINIFIN STATK OLMAYAN METOTLAR*** Snfn static olmayan metotlar, snf static olmayan veri elemanlarn dorudan kullanabilir. Yani snfn statik olmayan veri elemanlar, snf tarafndan ortak biimde kullanlan deikenlerdir.

** Snfn statik metotlar snf ismiyle arlrken, static olmayan metotlar ise o snf trnden bir referansla arlr.

*** r bir snf trnden bir referans, Foo ise bu snfn statik olmayan bir metotu olmak zere arma ilemir.Foo() eklinde yaplr.

*** static olmayan metotlar ierisinden kullanlan, snf statik olmayan veri elemanlar o metotlar hangi referansla arlmsa o referansn gsterdii nesnenin elemanlardr.

rnek :namespace CSD{ class App { public static void Main() { Date date = new Date(); date.Set(10, 12, 2004); date.Disp(); } } class Date { int day, month, year; public void Set(int d,int m, int y) { day = d; month= m; year = y; } public void Disp() { System.Console.WriteLine("{0}/{1}/{2}",day,month,year); } } }Anahtar Notlar : Bir snf bir konuya ilikin faydal ilemleri yapan bir veri yapsdr. rnein date gibi bir snftan tarih ilemlerini yapmasn bekleriz. SerialPort gibi bir snftan Seri Port ilemlerini yapmasn bekleriz. Nesne Ynelimli programlamada projeye ilikin tm gerekler nesneler ve kavramlar nce snflarla temsil edilir. Sonra bu snflar kullanlarak program yazlr. Snf bir kavram belirtmektedir. rnein bir aa snf belirli bir aac deil tm aalara ilikin bir kavram belirtmektedir. Fakat biz new operatryle bu aa snf trnden bir nesne yaratsak artk spesifik bir aa oluturmu oluruz. ngilizce bir snf trnden nesneye class instance yani o snf kavramndan bir rnek de denilmektedir. *** Snfn statik olmayan bir metotu snfn baka bir static olmayan metodunun dorudan arabilir. Bu durumda aran metota hangi referansta arlmsa arlan metotunda ayn referansta arldna farz edilir.

SINIF TRNDEN REFERANSLARIN METOT PARAMETRES OLARAK KULLANMABir metotun parametre deikeni bir snf trnden bir referans olabilir bu durumda metotu, ayn snf trnden bir referanslar armalyz. Bylece metot o referansn gsterdii nesneyi kullanabilir.

METOTLARIN GER DN DEELERNN BR SINIF TRNDEN REFERANS OLMASIBir metotun geri dn deeri bir snf trnden bir referans olabilir. Bu durumda return deyiminde ayn snf trnde bir referansn kullanlmas gerekir. Tipik olarak metot ierisinde snf nesnesi new operatryle tahsis edilip onun referansyla geri dnelebilir.

namespace CSD{ class App { public static void Main() { Date d; d = Test(); d.Disp(); } public static Date Test() { Date date = new Date(); date.Set(10, 10, 2004); return date; } } class Date { int day, month, year; public void Set(int d,int m, int y) { day = d; month= m; year = y; } public void Disp() { System.Console.WriteLine("{0}/{1}/{2}",day,month,year); } } }Anahtar Notlar : Bir metotun ierisinde new operatryle snf nesnesi yaratldnda metottan kldnda o metotun ierisindeki tm deikenler yok edilir.Fakat new operatryle tahsis edilen metotun klsa bile tahsis edilmi olarak kalr. Ta ki p toplayc (Garrabage Collecotr) silene kadar.SINIFLARIN STATK VER ELEMANLARISnfn statik veri elemanlarn toplamda tek bir kopyas vardr. Her new ilemi yapldnda onlar iin yer alamaz. Program almaya baladnda snfn statik veri elemanlar iin yer ayrlm durumdadr. Biz programn sonuna kadar onu istediimiz kadar kullanabiliriz. Snf statik veri elamanlarna dardan erimek iin, referansla deil snf ismiyle eriilir.

*** Snfn statik veri elemann kullanmak iin daha nce o snf trnden nesne yaratmaya gerek yoktur.

SINIFIN STATK METOTLARI* Snf statik metotlar snf ismiyle arlr. Bu nedenle snfn bir statik metotu ierisinde snfn statik olmayan veri elemanlar dorudan kullanlmaz ve statik olmayan metotlar dorudan arlamaz. Snf statik bir metotu ierisinde snfn statik veri elemanlar dorudan kullanlabilinir ve statik metotlar dorudan arlabilinir.

STATK OLAN VE STATK OLAMAYAN METOTLARIN SINIF ELEMANLARI KULLANMASI.* Snfn statik metotlar yalnzca snfn statik veri elemanlar dorudan kullanabilir ve statik metotlarn dorudan arabilir. Fakat snfn statik olmayan metotlar snfn hem statik olmayan hem de statik olan veri elemanlarn dorudan kullanabilir ve metotlarn dorudan arabilir.

Anahtar Notlar: Snfn eleman demekle, hem veri elemanlar hem de metotlar anlalmaktadr. Snfn statik elemanlar denince hem statik veri elemanlar hem de statik metotlar anlalmakta. Snfn statik olmayan veri elemanlar denildiinde hem statik olmayan veri elemanlar hem de statik olmayan metotlar anlalmaktadr. Kimin kimi kullanabildii konusunda ,

1-) Snfn statik metotlar, yalnzca statik veri elemanlarn dorudan kullanabilir.

2-)Snfn statik olmayan metotlar, snfn hem statik olmayan hem de olanlarn dorudan kullanabilir.

RASTGELE SAYI RETMRast gele say retmek iin rassal olaylarn kullanlmas gerekir. Bilgisayarlara ancak aritmetik ilemlerde rastgele say retiriz. Byle retilen rastgele saylara sahte rastgele saylar denilmektedir.(Pseudo random number)

System isim alan ierisindeki random snf rastgele say retmek iin kullanlr. Random snfnn statik olmayan aadaki Next metodu() iki deer arasnda rastgele bir say reterek onunla geri dner..

public Next(int minValue,int maxValue)minValue dahil , maxValue dahil deildir.

Random snfn static olmayan Next metodu bize rastgele bir tam say vermektedir. Fakat baz uygulamalar da noktal rastgele saynn retilmesi istenebilir. Bu durumlarda retilen rastgele tam saynn st deere blnmesi gerekir. phesiz st deerin yksek olmas saynn kalitesini arttrr.

10.Hafta 1.Gn (06 Austos 2011)METOTU NE ZAMAN STATK YAPMALIYIZ NE ZAMAN YAPMAMALIYIZ.Eer metotumuz, snfn statik olmayan elemanlarn kullanyorsa zaten biz bu metotu istesekte statik yapamayz. Fakat metotumuz snfn hi bir statik olmayan elemann kullanmyorsa biz bu metotu statik de yapabiliriz statik olmayan metotda yapabiliriz. Bu durumda doru teknik onu statik yapmaktr. nk biz onu statik olmayan metot yaparsak gerekmedii halde onu bir referansla armak zorunda kalrz. Benzer biimde bir snfn bir metotunun statik olmadn grdmzde onun kesinlikle snfn statik olmayan bir veri elemann kullandn dnmeliyiz. zetle bu konuda iki ey sylenebilir

1-)Eer biz metot ierisinde snfn statik olmayan bir elemann kullanmsak, zaten o metotu statik yapamayz.

2-)Eer bir metot ierisinde biz snfn hi bir statik olmayan elemannn kullanmamsak metotu statikte yaparz statik olmayanda yapabiliriz. Fakat doru teknik statik yapmaktr.

FARKLI PARAMETRK YAPILARA LKN AYNI SML METOTLARIN BULUNMASI DURUMU(METHOD OVERLOAD)C#da zaten farkl snflarda ayn isimli ayn parametrik yaplara sahip metotlar bulunabilmektedir. Bunlar birbirlerine karmazlar nk farkl snflardadr. Fakat burada sz edilen konu ayn snf ierisinde ayn metotlarn bulunabilmesidir.

C#da ayn snf ierisinde parametrik yaplar farkl olmak kouluyla ayn isimli birde fazla metot bulundurulabilinir. Parametrik yaplarn farkl olmas demek parametrelerin tr veya sayca farkl olmas demektir. Parametre deikenlerinin isimlerinin farkl olmasnn hi bir nemi yoktur. rnein aadaki ayn snftaki metot ayn anda bulunabilir. Bu zellie nesne ynelimli programlamada dillerinde Metot overloading denilmektedir.

public static void Foo(int a, int b) { } public static void Foo(int a) { } public static void Foo(int a, long b) { }*** Geri Dn Deerlerinin trlerinin farkll bu konuda bir neme sahip deildir. Yani ,ayn parametrik yapya sahip ayn isimli , fakat geri dn deerlerinin trleri farkl olan metotlar bir arada bulunamamaktadr. Benzer biimde metotun statik olup olmamas da farkllk yaratmamaktr. Eriim belirleyicide farkllk oluturmaz. Yalnzca parametrik yaplarn farkll nemlidir.

*** Bir metotun ismi ve srasyla ve parametre trlerinin oluturduu dizilime metotun imzas denir. rnein

public static void Foo(int a, long b) { }MZA : Foo,int,long public static void Foo(long a, int b) { }MZA : Foo,long,int*** mzada dizilimdeki sra nemlidir.

*** O HALDE AYNI SINIF ERSNDE AYNI MZAYA SAHP BRDEN FAZLA METOT BULUNAMAZ...

Ayn isimli bir metot arldnda aslnda hangisinin arlm olduunun tespit edilmesi srecine overload resolution denilmektedir. zet kural yledir: arlma ifadesindeki argman trlerine baklr bu trle tam uyuan bir parametre yapsna sahip yap o varsa o arlr.

namespace CSD{ class App { public static void Main() { Sample.Foo(10);//int Sample.Foo(10.2);//dobuble } } class Sample { public static void Foo(int a) { System.Console.WriteLine("int"); } public static void Foo(long a) { System.Console.WriteLine("long"); } public static void Foo(double a) { System.Console.WriteLine("double"); } public static void Foo(float a) { System.Console.WriteLine("float"); } }}** Fakat overload resolution ileminin baz ayrntlar vardr. Overload resolution ilemi 3 aamada yrtlr nce aday metotlar (candidate methods) seilir sonra aday metotlar arasnda baz metotlar atlr. Uygun(applicable) olanlar seilir. Nihayet uygun metotlar arasnda en uygun (the most applicable) metot seilebilir byle bir metot yoksa error oluur.

arlma ifadesindeki isim ile ayn isimli olan snfn tm metotlar aday bir metotlardr.

arlma ifadesindeki her argmann trnden aday metotun trne dorudan dntrmenin yani atamann mmkn olduu metotlar uygun metotlardr. Metotun uygun olabilmesi iin her eyden nce argman saysyla parametre says ayn olmak zorundadr.

Artk sra en uygun metotun seilmesine gelmitir. Dorudan dntrmelerin arasnda kalite fark vardr. En uygun metot seilmesinde bu kalite farkllklar gz nne alnmaktadr. En uygun metot yle bir metottur ki arlma ifadesindeki her argmandan parametre deikenine yaplan dntrmelerin kalitesine bakldnda her argman parametre dntrmesi ya dierlerinden daha iyidir yada dierlerinden daha kt deildir.

Dorudan dntrmeler arasnda yle belirlenir.

1-)T1 -> T2, T1->T3 dntrmelerinde t2 yada t3 hangisi t1 ile aynysa o dntrme daha iyidir. rnein :int -> long , int -> int ; burada intten inte dntrme daha iyidir

2-) T1 -> t2 t1->t3 dntrmelerinde T2 den t3 e dorudan dntrme var fakat t3den t2ye yoksa t1 -> t2 dntrmesi daha iyidir. rnein: int -> long , int -> double dntrmelerinde int -> long daha iyidir. rnek 2: int ->float, int ->double; burada int - > float dntrmesi daha iyidir.

3-) T1 -> t2 t1->t3 dorudan dntrmelerinde ne t2 den t3 e ne de t3 den t2 ye dorudan dntrme varsa bu durumda iaretli tre yaplan dntrme daha iyidir. rnein : uint -> long , uint -> ulong burada uint ->long yaplan dntrme daha iyidir.

*** En uygun metot yle bir metottur ki tm argman parametre dntrmesi, dierlerinde daha iyidir yada daha kt deildir.Byle bir metot bulunmayabilir. Bu durumda error oluur.

namespace CSD{ class App { public static void Main() { float a = 30; ushort b = 13; Sample.Foo(a,b); } } class Sample { public static void Foo(int a,int b) { System.Console.WriteLine("int,int"); } public static void Foo(int a ,long b) { System.Console.WriteLine("int ,long"); } public static void Foo(int a, double b) { System.Console.WriteLine("int ,double"); } public static void Foo(double a,double b) { System.Console.WriteLine("double, double"); } public static void Foo(double a, int b) { System.Console.WriteLine("double , int"); } public static void Foo(double a) { System.Console.WriteLine("double"); } public static void Bar(double a) { System.Console.WriteLine("double"); } }}*** . NET snf ktphanesinde snflarn pek ok overload edilmi metotlar vardr. rnein Console Snfnn pek ok write ve writeline metotlar vardr. Biz argman verdiimizde uygun olan metot arlmaktadr. rnein Random snfnn aslnda farkl next metotu vardr.

BLGSAYARLARIN KISA TARH Bilgisayarlarn tarihi 4 dnemde incelenebilinir. Birinci dnem tamamen mekanik olarak bilgisayarlarn yaplmaya alld dnemdir. Bu devrin en nemli ismi Charles Babage dir. Babage 1800 yllarn ortalarnda Analytic Engine ve Difference Engine diye tanmlanan aygtlar yapmtr. Hatta bir dnem Babage in asistanl yapm Ada Lovelace n bu makineler iin yazd ynergeler yznde Dnyann ilk programcs olduu iddia edilmektir.

1800 yllarn sonlarna doru ve 1900 yllarn ilk yllarnda bilgisayar bilimleri iin nemli olan pek ok gelime yaanmtr. kilik sistem ve bool cebri ortaya konmutur. Bylece mantk devreleri kavramsal olarak tasarlanmaya balanmtr. 1900 yllarn ilk yarsnda en nemli kiilerinden biri John von Neumann; Alan Turing iin daha ok hesaplama ksmyla ilgilenmitir. Bir bilgisayarn neler yapabilecei ksmnda kafa yormutur. Von Neumannn pek ok alanda almtr. Bugnk bilgisayarlarn temel mimarisini oluturan kiilerdendir. Nihayet ilk elektronik bilgisayar 40l yllarda ortaya kmtr. 40 yllarda transistrler yoktu ve vakum tplerle(lamba) gerekletirilmitir. Bu ikinci devre transistor ncesi dnem denilmektedir.

Dnyann ilk bilgisayarnn ne olduu konusunda tartmalar vardr. Bazlar Konrad Zuse nin Z - 1,2,3 bilgisayarlarnn ilk bilgisayar olduu farz etmektedir. Yine Martk Bilgisayarlar (1944) ve ENIAC Amerikada yaplm ilk bilgisayarlardr. 1940 -50 yllarn ortalarna kadar kstl sayda bilgisayar retilmi ve teknoloji gittike gelitirilmitir. 1950 yllarda transistrn gelitirilmesiyle transistor dnemi denen nc dneme girilmitir. Bu devirlerde bilgisayarn CPUsu transistlerin byk plakalara monte edilmesiyle gerekletirilmitir. O yllarn en nemli firmalar IBM ve DEC dir. 1970 yllarda entegre devrelerin gelitirilmesiyle bu devir drdnc dnemi oluturmaktadr.

Dnyann entegre devre olarak yaplan ilk CPUsu Intelin 8080dir. Dnyann ilk kiisel bilgisayar aslnda Ed Robertsn aklna gelen bir fikirle oluturulmutur. Bu adam tarafndan gelitirilen Altair Bilgisayarlar ilk kisel bilgisayarlardr.(1975) Altair Balangta makine diliyle programlanmaktayd. Daha sonra bunlara Bill Gates ve Paul Allen Basic Derleyicisi yazmtr. Bu ikili 1975 ylnda Microsoft irketine kurmutur. Bundan sonra Amerika da mikrobilgisayarlar hzla gelitirilmeye balanmtr. Microsoft Bunlara BASIC derleyicisi satarak para kazanmtr. Daha Sonra IBM Firmasnda kiisel bilgisayar yazma iine girimitir. Bugn kullandmz bilgisayar mimarisi IBM tarafndan gelitirmitir. Fakat IBM bu makineler iin iletim sistemini kendisisi yazmam taeron olarak bir firmaya yaptrmak istemitir. te Microsoft bu dnemde IBM ile anlaarak en nemli yazlm olan DOSu bu IBM makinelerinde kullanlmak zere gerekletirmitir. lk kiisel bilgisayar 1980 - 1981 yllarnda Donanm IBMin iletim sistemini Microsoftun oluturduu biimde yapld.

10.Hafta 2.Gn (07 Austos 2011)40l yllar da ilk bilgisayarlar ktnda bir yazlm teknii de sz konusu deildi. Fakat 50li yllarda zellikle ALGOL diliyle birlikte ii paralara blme fikri de ortaya kt. lk yksek seviyeli diller makina dilinden ok etkilenmiti ve goto kullanmak neredeyse zorunluydu. Daha sonra pek ok programlama dili revize edildi. 70li yllarda yapsal programlama teknii yaygnlat. Yapsal programlama tekniine prosedrel teknik de denir. Bu dillerde snf yoktur, Prosedrler (fonksiyonlar ) ile i paralara blnr. 80li yllara kadar yapsal teknik gereksinimleri karlamaya yetmitir. Fakat 80li yllardan sonra kiisel bilgisayarlarn ortaya kmas ile artk donanmlar hzla gelimeye balamtr. Donanmlarn gelimesiyle yazlmlar ayrntl olmaya balad. Yazlm projelerin satr says artmaya balad. te nesne ynelimli programlama teknii bu yllarda ortaya kmaya balamtr. Nesne ynelimli programlama teknii algsal kolaylk ve aklk salamak amacyla gelitirilmitir. Yani bu teknikle artk bir proje prosedrlerin kullanlmasyla deil snflarn kullanlmasyla tasarlanmaktadr.

Nesne Ynelimli Programlama tekniinin ilk almalar 70li yllarda yaplm olsa da asl yaygnlk kazanmas 90l yllarda olmutur. 90l yllar da neredeyse her programlama diline snflar eklenmitir. SIMULA, SmallTalk ve C++ ilk nesne ynelimli programlama dili tekniine adaydr.

NESNE YNELML PROGRAMLAMA TEKN NEDR?Nesne ynelimli programlama tekniinin tek bir cmleyle tanmna yapmak zordur. Fakat Snflar Kullanarak programa yazma tekniidir. Aslnda nesne ynelimli programlama teknii bir ka anahtar kavramlarn toplamndan oluturmaktadr. Bu anahtar kavramla birbirinde ayr deil i ie gemi durumdadr. Bu anahtar kavramlarn hepsinin ortak zellii algsal kavramay kolaylatrmaktr.

AYNI SML METOTLARIN ANLAMIBir snfta benzer ilemleri yapan metotlara ayn isimlerin verilmesi iyi bir tekniktir. Bylece ok fazla ey var duygusundan uzaklalr ve kafa karkl engellenir.

rnein: Random Snfnn Farkl Metodu vardr. Fakat bunlar bizim iin farkl metotlar deildir. Tpk 3 Sandalyenin birbirinden farkl olmas fakat 3nnde sandalye olmas gibi.

STRNG SINIFISystem ierisindeki string isimli snf yazlar ierisinde ilem yapmak iin kullanlmaktadr. Bir string nesnesinin ierisinde yazy oluturan karakterler ve onun karakter uzunluu bulunmaktadr. string nesneleri new operatryle oluturulabilinir fakat bunlar otomatik de oluturulabilinir. C# da ne zaman iki trnak(......) ierisinde bir yaz yazlsa derleyicinin kendisi new operatryle bir string nesnesi oluturur. ki trnak ierisindeki nesneyi oraya yerletirir yaznn uzunluun da yerletirir o nesnenin referansnn bize verir. Yani C#da iki trnak ierisindeki yazlar Bir string nesnesi yarat referansn bana ver anlamna gelmektedir.

System.String s;

s = "stanbul";

System.String snf ok kullanld iin string anahtar szc ile de temsil edilmitir. Yani

System.String s; ile string s; ayn anlamdadr.

Console Snfnn string parametreli Write ve WriteLine metotlar bizden bir string referansn alp o stringin karakterlerini ekrana yazar.

LENGTH PROPERYString snfnn int trden Length isimli property eleman nesne ierisindeki yaznn karakter uzunluunu verir.

A iki trnak kapat iki trnak yani eklinde bir string olabilir bu durumda yine bir string nesnesi yaratlr. Fakat ierisinde karakter bulunmaz ve karakter uzunluu da sfr olur.Anahtar Notlar :

C#da eer bir snfn indeksleyici (indexer) denen bir referans varsa o trden bir referans keli parantez operatryle kullanlabilinir. ndeksleyicinin parametresi demek keli parantez ierisinde yazlann tr demektir. ndeksleyicinin tr demek bu ilem sonrasnda elde edilenin tr demektir.

NDEKSLEYC []

String snfn int parametreli char trnden bir indeksleyicisi vardr. Yani s[i] ileminden s referansnn gsterdii yerdeki nesnenin inci karakteri elde edilir.

Console. ReadLine() METOTU

Console Snfnn ReadLine() isimli statik metodu bizden enter tuuna baslana kadar klavyeden bir yaz girmemizi ister bir string nesnesi yaratarak onun ierisine yerletirilir ve onun referansyla geri dner.

string s; s = System.Console.ReadLine(); System.Console.WriteLine(s);SINIF ALIMASIKlavyeden bir yaz okuyunuz o yazy terste yazdrrz. string s; System.Console.Write("Yazy Giriniz : "); s = System.Console.ReadLine(); for (int i = s.Length-1; i >= 0; --i) { System.Console.Write(s[i]); } System.Console.ReadLine();Yaratlm bir string nesnesinin karakterleri bir daha deitirilemez. Zaten snfn indeksleyicisi de Read-onlydir. string s = Mert;

s[0] = A; // OLMAZ HATA NDEXLEYC SADECE Read-Onlydir

ToLower() ve ToUpper()

String snfnn statik olmayan ToLower metodu yazy kk harfe evirmek iin, ToUpper Metodu ise yazy byk harfe evirmeyi salar. Bu Metotlar Bize Dnm yeni bir yaz verirler.

Substring() MetotuString snfnn statik olmayan Substring() metodu: Belli bir index, belli bir karakterini alarak bize onu yeni bir string nesnesi gibi vermektedir. Eer index ve uzunluk bakmnda yaznn sonuna klrsa Exception oluur.

Anahtar Notlar: Exception program alrken ortaya kan problemli durumlar anlatmak iin kullanlmaktadr. Eer bir Exception oluur ve biz bunu ele almamsak (Handle ) program ker. string s, k; s = "stanbul"; k = s.Substring(2, 3); System.Console.WriteLine(k); //tanIndexOf() MetotuString Snfn IndexOf isimli metotlar bir yaz iersinde bir karakteri, baka bir yazy aramak iin kullanlmaktadr. Metotlar Eer Bulursa ilk bulduu yerin indeksini bize verirler eer bulamazlarsa -1 ile dnerler.

SINIF ALIMASIKlavyeden bir yaz giriniz bu yaz ierisinde yalnzca yaznn bir yerinde parantez iierisnde bir eyler olsun sonra parantez ierisindekli bu yazy ekerek yazdrnz. string s; System.Console.Write("Parantezli Bir Yaz Giriniz : "); s = System.Console.ReadLine(); int index1 = s.IndexOf('('); int index2 = s.IndexOf(')'); if (index1!=-1 && index2!=-1 && index1strings ="Ali";s +="Veli";//AliVeli////-------------------->Eer iki trnak ifadesinin bana ona yapk bir biimde@ karakteri getirirsek byle stringlere tam tamna string (verbatim string) denilmektedir. Tam tamna stringler ayr bir tr belirtmez sadece yazl biimi belirtir. Bunlarn iki farkl zellii vardr .

1.Bunlarn ierisindeki Ters bl karakterleri, gerek ters bl karakterleri anlamna gelmektedir.strings =@"c:\temp\a.dat";2.Bunlar birden fazla satra yazlm olabilir.strings =@"bugnhava okgzel";Bir assembly ierisinde; tamamen ayn karakterlerden oluan iki trnakl yazlar varsa, bunlar iin tekrar tekrar yer ayrlmaz bir kez yer ayrlr hep ayn adres verilir

Anahtar Notlar : System alanndaki object snfnn ReferenceEquals isimli statik metodu iki referansn ierisinde ayn adres var m diye kontrol eder. rneinstrings ="ankara";stringk ="ankara";boolresult = System.Object.ReferenceEquals(s, k);System.Console.WriteLine(result);//trueAnahtar Notlar : .NETTE Assembly terimi program oluturan .exe ve .dll gibi dosyalara denilmektedir.string snfnn Format isimli statik metodu alma bakmndan Write ve WriteLine metotlarnn parametrik biimine benzemektedir. Ancak format metodu yazy ekrana yazdrmazda yazlacak yazy bize string nesnesi olarak bize verir.

SINIF ALIMASI

Bir Dng ierisinde klavyeden Console snfnn ReadLine metoduyla yaz alnz. quit girilince dngden knz girilen btn yazlar birletirerek dngden kldnda yazdrnz.

strings="";stringtop ="";for(; ; ){System.Console.Write("Metin Giriniz : ");s = System.Console.ReadLine();if(s=="quit"){break;}else{top += s;}}System.Console.WriteLine(top);SINIFLARIN BALANGI METOTLARI(CONSTRUCTOR)new ilemiyle birlikte nesne iinde heapde yer tahsis edildikten sonra snfn balang metotu(constructor) metotudu otomatik arlmaktadr. Bu metotun arlmas bittikten sonra new operatr geri dnmektedir.

Balang metotunun ismi snf ismiyle ayndr. Bunlarn geri dn deerleri diye bir kavram yoktur.Geri dn deeri trne bir ey yazlmaz yazlrsa error oluur.Balang metotu statik deildir.rneinclassSample{publicSample(){// ite bu constructor metot snf ismiyle ayn}publicvoidFoo(){}publicstaticvoidBar(){}}*Balang metotu overload edilebilir.

publicSample(){}publicSample(inta){}publicSample(inta,intb){}*** Parametresiz balang metotuna default cons