C# İLE BİLGİSAYAR
PROGRAMLAMA
TEMELLERİ
(C# Programlama Kitabı)
Svetlin Nakov & Co.
Dilyan Dimitrov
Radoslav Kirilov
Hristo Germanov
Radoslav Todorov
Iliyan Murdanliev
Stanislav Zlatinov
Mihail Stoynov
Stefan Staev
Mihail Valkov
Svetlin Nakov
Mira Bivas
Teodor Bozhikov
Nikolay Kostov
Teodor Stoev
Nikolay Nedyalkov
Tsvyatko Konov
Nikolay Vasilev
Vesselin Georgiev
Pavel Donchev
Veselin Kolev
Pavlina Hadjieva
Yordan Pavlov
Radoslav Ivanov
Yosif Yosifov
Sofia, 2013
C# İLE BİLGİSAYAR PROGRAMLAMA
TEMELLERİ
(C# Programlama Kitabı)
© Svetlin Nakov & Co., 2013
Kitap aşağıdaki lisans koşulları altında serbestçe dağıtılır:
1. Kitap okuyucuları (kullanıcılar) :
 Elektronik veya kağıt formatta kitabın değiştirilmemiş kopyasını ücretsiz dağıtabilirler;
 Kitap ve kaynak kod örneklerinin bir kısmını ya da onların değiştirilmiş hallerini,
orijinal kaynağı, açıkça ilgili metin ya da kaynak kodunun orijinal yazar(lar)ını, bu
lisans ve web sitesini www.introprogramming.info olarak belirtmeleri şartıyla eğitim
ve ticari projeleri de dahil olmak üzere tüm niyet ve amaçlar için kullanabilirler;
 Bunun kitabın kısımlarını veya değiştirilmiş kopyalarını (diğer dillere çeviri kitap veya
diğer programlama dilleri ve platformlara adapte edilmesi dahil) ancak açıkça orijinal
kaynak ve metin, kaynak kodu veya diğer malzemelerin yazarları, bu lisans ve proje
resmi web sitesi olarak www.introprogramming.info belirtilerek ücretsiz olarak
dağıtabilirler.
2. Kitap okuyucuları (kullanıcılar) :
 Kitabı veya bölümlerini kaynak kodu haricinde menfaat amaçlı dağıtamazlar;
 Kendi ihtiyaçları için değiştirirken kitaptan bu lisansı kaldıramazlar.
Bu kitapta belirtilen tüm markaların telif hakkı kendi sahiplerinde bulunmaktadır.
Resmi Web Sitesi:
http://www.introprogramming.info
ISBN 978-954-400-773-7
C# ile Bilgisayar Programlama Temelleri
3
İÇİNDEKİLER TABLOSU
Önsöz .............................................................................................................. 4
0.1 Kitap Hakkında ...................................................................................................... 4
0.2 Tercümanlık Hataları İçin Lütfen Özür Dilerim!...................................................... 5
0.3 Bu Kitapta Kimler Hedefleniyor? ............................................................................ 5
0.4 Öncesinden Bilgi Gerekli Değildir!.......................................................................... 6
0.5 Bu Kitabın Kapsamı Nedir?..................................................................................... 7
0.6 Bu Kitabın Öğretmedikleri Nelerdir? ...................................................................... 8
0.7 Bilgi Nasıl Sunulmuştur? ........................................................................................ 9
0.8 C# ve .NET Platformu........................................................................................... 10
0.9 C# Programlama Dili............................................................................................ 10
0.10 Microsoft .NET Platformu ................................................................................... 11
0.11 Neden C#? ......................................................................................................... 12
0.12 C# veya Java?.................................................................................................... 12
0.13 Neden PHP Değil? .............................................................................................. 13
0.14 Neden C veya C++ Değil? .................................................................................. 14
0.15 C# Avantajları.................................................................................................... 15
0.16 Örnekler Visual Studio 2012 için C# 5 Dilinde Verilmiştir .................................. 15
0.17 Bu Kitabı Nasıl Okumalısınız? ............................................................................ 16
0.18 Alıştırmaları Asla İhmal Etmeyin! ...................................................................... 17
0.19 Bu Kitaptan Öğrenmek İçin Ne Kadar Zamana İhtiyacınız Var? ......................... 18
0.20 Karmaşık veya Kolay? ........................................................................................ 19
0.21 Neden Veri Yapıları ve Algoritmaların Önemi Belirtilmiştir? ............................... 20
0.22 Google'da İş Görüşmeleri .................................................................................. 20
0.23 Microsoft'ta İş Röportajları ................................................................................ 21
0.24 LINQ Teknolojisi Hakkında................................................................................. 21
0.25 Gerçekten bir Programcı olmak ister misiniz?.................................................... 21
0.26 Bir Programcı Olmak İçin Motive Olun yada Bir Başka İş Bulun! ........................ 23
0.27 Kitabın İçindekilerine Bir Bakış.......................................................................... 24
0.27.1 Bölüm 0: Önsöz ............................................................................................ 24
0.27.2 Bölüm 1: Programlamaya Giriş..................................................................... 24
0.27.4 Bölüm 3: İşleç ve İfadeler ............................................................................ 26
0.27.5 Bölüm 4: Konsol Giriş ve Çıkış ...................................................................... 26
0.27.7 Bölüm 6: Döngüler ....................................................................................... 27
0.27.8 Bölüm 7: Diziler ........................................................................................... 28
0.27.9 Bölüm 8: Sayısal Sistemler........................................................................... 28
0.27.10 Bölüm 9: Yöntemler ................................................................................... 28
0.27.11 Bölüm 10: Özyineleme ............................................................................... 29
0.27.12 Bölüm 11: Nesneleri Oluşturmak ve Kullanmak.......................................... 29
0.27.13 Bölüm 12: Ayrıksı Durum İşleme................................................................ 30
0.27.14 Bölüm 13: Dizeler ve Metin İşleme............................................................. 30
0.27.15 Bölüm 14: Sınıfları Tanımlamak ................................................................. 31
0.27.16 Bölüm 15: Metin Dosyaları ......................................................................... 31
0.27.17 Bölüm 16: Doğrusal Veri Yapıları ............................................................... 32
0.27.18 Bölüm 17: Ağaçlar ve Grafikler................................................................... 32
0.27.20 Bölüm 19: Veri Yapıları ve Algoritma Karmaşıklığı ..................................... 33
0.27.21 Bölüm 20: Nesne Yönelimli Programlamanın İlkeleri ................................. 34
0.27.22 Bölüm 21: Yüksek Kalite Programlama Kodu ............................................. 34
0.27.23 Bölüm 22: Lambda İfadeleri ve LINQ ......................................................... 35
0.27.24 Bölüm 23: Problem Çözme Metodolojisi ..................................................... 35
0.27.25 Bölüm 24, 25, 26: Örnek Programlama Sınavı ............................................ 36
0.27.29 Bölüm 28: Sonuç ........................................................................................ 36
C# ile Bilgisayar Programlama Temelleri
4
Önsöz
Eğer programlamayı ciddiye almak istiyorsanız, doğru kitabı edindiniz. Gerçekten! Bu
kitapla programlamaya ilk adımları yapabilirsiniz. Böylece modern programlama dillerini
ve yazılım geliştirme teknolojilerini öğrenmeniz için uzun yolculuğa uçan bir başlangıç
alacaksınız. Bu kitap, programlamanın son 15 yıl içinde önemli ölçüde değişmeyen
temel ilke ve kavramlarını öğretir.
C# takip etmek istediğiniz dil olmasa bile bu kitabı okumak için tereddüt etmeyin.
İlerleyeceğiniz dil hangisi olursa olsun, burada size vereceğimiz bilgi geçerli olacaktır,
çünkü bu kitap size programcılar gibi düşünmeyi öğretecek. Biz size pratik algoritmik
problemlerin çözümü için nasıl program yazılacağını öğreteceğiz ve algoritmaları
ortaya atma (ve uygulama) becerilerini sizde oluşturacağız ve çeşitli veri yapılarını
kullanacağız.
Size göründüğü kadar imkansız gelecek ama, bilgisayar programları yazmanın tüm temel
prensipleri son 15 yıl içinde çok değişmedi. Programlama dilleri değişiyor, teknolojiler
modernize oluyor, entegre geliştirme ortamları daha gelişiyor, ancak programlamanın
temel prensipleri aynı kalmıştır. Yeni başlayanlar algoritmik düşünmeyi öğrendikleri
zaman, ve sonra bir sorunu çözmek için içgüdüsel olarak bir dizi adımlar içine bölmeyi
öğrendikleri zaman, bunun yanı sıra uygun veri yapılarını seçmeyi öğrendikleri zaman ve
yüksek-kaliteli programlama kodu yazdıklarında programcı olurlar. Bu becerileri
kazandıktan sonra, kolayca yeni bir dil ve çeşitli teknolojileri öğrenebilirsiniz - Web
programlama, HTML5 ve JavaScript gibi, mobil geliştirme, veritabanları ve SQL, XML,
REST, ASP.NET, Java EE, Python, Ruby ve daha yüzlercesi.
0.1 Kitap Hakkında
Bu kitap, bir programcı gibi düşünmeyi size öğretmek için tasarlanmıştır ve C# dili, Java,
C++, PHP veya Python gibi diğer modern programlama dilleri ile yer değiştirebilecek
sadece bir araçtır. Bu programlama üzerine bir kitaptır, C# üzerine bir kitap
değildir!
C# ile Bilgisayar Programlama Temelleri
5
0.2 Tercümanlık Hataları İçin Lütfen Özür Dilerim!
Bu kitap gönüllü yazılım mühendislerinden oluşan büyük bir ekip tarafından aslında
Bulgarca yazılmış ve İngilizce’ye çevrilmiş nüshası daha sonra Türkçe’ye çevrilmiştir.
Çevirmenin anadili İngilizce olmadığı için pek çok hatalar ve özensiz çeviri bulabilirsiniz.
Lütfen bizi bağışlayın! Çoğu Bulgar olan 70’i aşkın kişi bu kitabın asıl projesine katıldı.
Tüm ekip bu kitabı okumayı seçtiğiniz için sizi tebrik ediyor ve içeriğinin bulabileceğiniz
küçük hatalar ve yanlışlıklardan daha önemli olduğuna inanıyor. Tadını çıkarın!
0.3 Bu Kitapta Kimler Hedefleniyor?
Bu kitap yeni başlayanlar için uygundur. Bugüne kadar programlamayı ciddi olarak
yapmayan bunu yapmaya başlamak isteyen herkes için tasarlanmıştır. Bu kitap sıfırdan
başlar ve programlama temellerini adım adım tanıtır. Bir yazılım mühendisi olmak için
kesinlikle gereken herşeyi ve bir yazılım firmasında çalışmayı size öğretmeyecektir, ama
o teknolojik bilgi ve becerileri kurabileceğiniz zemini hazırlayacaktır ve onlar aracılığıyla
programlamayı mesleğiniz haline getirmeniz mümkün olacaktır.
Eğer hiç bir bilgisayar programı yazmamışsanız, merak etmeyin. Bu kitap
programlamayı size en baştan öğretecektir. Öncesinden herhangi bir bilgi ya da
yetenek gerekli değildir. Tüm ihtiyacınız, bazı temel bilgisayar okuma yazma ve
programlama becerisidir. Kalan kısmı kitaptan elde etmeyi bekleyebilirsiniz.
Eğer zaten basit programlar yazıyorsanız veya resmi bir kurumda (okul, üniversite vb.)
programlama okuma tecrübeniz varsa, veya arkadaşlarınızla kodlamışsanız, herşeyi
bildiğinizi düşünmeyin! Bu kitabı okuyunca kaçırdığınız çok şeyin farkında olabilirsiniz.
Bu kitap yeni başlayanlar içindir, ancak deneyimli profesyonel programcıların bile
eksikliğini duyduğu beceri ve kavramları öğretebilir. Yazılım şirketleri kendi kendini
eğitmiş nice insanlarla yürütülüyor, yıllardır programlama yapmak için maaş almış
olmalarına rağmen, programlama temellerine dair hiçbir kavrayışa sahip olmamalarına
rağmen, ve bir karma tablo nedir hiçbir fikirleri olmamalarına rağmen, çokbiçimliliğin
nasıl çalıştığına ve bit düzeyinde işlenen operasyonlar ile nasıl çalışacaklarına dair hiçbir
fikirleri olmamalarına rağmen. Onlar gibi olmayın! Önce programlama temellerini
öğrenin ve ardından teknolojileri. Aksi takdirde programlama becerileriniz riskte
kalacaktır, yaşamınız boyunca değilse bile az yada çok yıllar boyunca.
C# ile Bilgisayar Programlama Temelleri
6
Eğer, diğer yandan, programlama deneyiminiz varsa, bu kitabı ayrıntılarıyla inceleyiniz ve
size hitap edip etmediğini araştırmak için ele aldığımız tüm konulara aşina olup
olmadığınızı görün. "Veri Yapıları ve Algoritmaların Karmaşıklığı", "Nesne Tabanlı
Programlama Prensipleri", "Problem Çözme Metodolojisi" ve "Yüksek Kalite Programlama
Kodu" bölümlerine özellikle yakın bir göz atın. Deneyiminiz birkaç yıl olsa bile, veri
yapıları ile çalışmanız gerektiğinde yardıma ihtiyaç duyabilirsiniz; bir algoritmanın
karmaşıklığını değerlendirmeniz mümkün olmayabilir; derinlemesine (UML ve tasarım
şablonları dahil) nesne yönelimli programlama kavramlarına hakim olmayabilir; ve
yüksek-kaliteli programlama kodu yazmak için en iyi alıştırmalar ile tanışmış
olmayabilirsiniz.
Bu tüm programlama kitaplarında yer almayan çok önemli konulardır, bu nedenle onları
atlamayarak yerinde bir davranış sergileyeceksiniz!
0.4 Öncesinden Bilgi Gerekli Değildir!
Bu kitabı okumaya başlamadan önce okuyuculardan herhangi bir programlama
bilgisine sahip olmalarını beklemiyoruz. Kitap içeriğini okuyabilmeniz ve
kavrayabilmeniz için bilgi teknolojisi veya bilgisayar bilimi okumanız da gerekli değildir.
Kitap sıfırdan başlar ve yavaş yavaş sizde programlama ilgisi uyandırır ve diğer
kaynaklardan onları bulup çıkarmanız gerekli değildir. Derleyici, hata ayıklayıcı, entegre
geliştirme ortamı, değişken, dizi, döngü, konsol, dize, veri yapısı, algoritma, algoritma
karmaşıklığı, sınıf veya nesne hakkında herhangi bir şey bilmiyorsanız, telaşa kapılmayın.
Bu kitaptan, tüm bu terimleri öğreneceksiniz ve daha birçoğunu ve yavaş yavaş günlük
işlerinizde sürekli onları kullanmaya alışacaksınız. Sadece kitabı sürekli okuyun ve
egzersizleri mutlaka yerine getirin.
Elbette, sonuçta, bilgisayar bilimi ve bilgi teknolojileri ile ilgili bilgi sahibi olmanız çok
faydalıdır. Eğer, üniversitede bilgisayar bilimi alanında veya okulda bilgi teknolojisi
eğitimi almışsanız, bu sadece yardımcı rol oynar, ancak zorunluluk değildir. Bilgisayar
teknolojisi ile çok az ortak yönü olan turizm, hukuk veya diğer disiplinleri anadal olarak
okumuşsanız, hâlâ iyi bir programcı haline gelebilirsiniz, arzunuz var olduğu sürece.
Yazılım sektöründe bilgisayar bilimi veya ilgili derecesi olmadan iyi geliştiriciler çok sayıda
var olagelmiştir.
Temel bilgisayar okur yazarlığına sahip olmanız bekleniyor, çünkü dosya, sabit disk ve ağ
bağdaştırıcısının ne olduğunu açıklamayacağız, ne de fareyi nasıl taşıyacağınızı veya bir
C# ile Bilgisayar Programlama Temelleri
7
klavyede nasıl yazılacağını. Bir bilgisayar ile nasıl çalışacağınızı ve İnternet’i nasıl
kullanacağınızı bilmenizi bekliyoruz.
Okuyucuların İngilizce’yi en azından temelde bilmeleri önerilir. Programlama üzerine
hazırlanmış web sitelerinde bulunan her gün kullanacağınız ve her zaman
okuyabileceğiniz tüm belgeler ve tüm dokümantasyon büyük ihtimalle İngilizce dilinde
yazılmış olmalıdır. Bir programcının mesleğinde, İngilizce kesinlikle gereklidir. Ne
kadar çabuk öğrenirseniz, o kadar iyidir.
Biraz dahi olsa, İngilizce öğrenmeden programcı olmayı umuyorsanız
yanılıyorsunuz! Bu sadece naif bir beklentidir. Eğer İngilizce
bilmiyorsanız, İngilizce öğreten bir ders alınız ve daha sonra teknik
literatür okumaya başlayın, bilmediğiniz sözcükleri yazarak öğrenmeye
alışınız. Teknik İngilizce’nin kısa sürede öğrenmesi kolay olduğunu
anlayacaksınız.
0.5 Bu Kitabın Kapsamı Nedir?
Bu kitap programlama temellerini kapsamaktadır. Değişkenleri nasıl tanımlayacağınızı
ve kullanacağınızı, basit veri yapıları (sayılar gibi) ile nasıl çalışacağınızı, mantıksal
ifadeler, koşullu ifadeler ve döngüleri nasıl düzenleyeceğinizi, konsola nasıl
yazdıracağınızı, dizileri nasıl kullanacağınızı, sayı sistemleri ile nasıl çalışacağınızı,
yöntemleri nasıl tanımlayacağınızı ve kullanacağınızı ve nesneleri nasıl oluşturacağınızı ve
kullanacağınızı öğretecek. Temel programlama bilgisi ile birlikte, bu kitap dize işleme,
istisnai durum işleme, karmaşık veri yapılarını (ağaçlar ve karma tabloları gibi)
kullanmak, metin dosyaları ile çalışmak, isteğe uyarlı sınıf tanımlamak, ve LINQ sorguları
ile çalışmak gibi daha karmaşık kavramları anlamanıza yardımcı olacaktır. Nesne
yönelimli programlama kavramları - modern yazılım geliştirme için kurulu bir yaklaşım
derinlemesine ele alınacaktır. Son olarak, yüksek kalitede programlar yazma
alıştırmaları ve gerçek dünya programlama sorunlarını çözmek ile karşı karşıya
olacaksınız. Bu kitap programlama problemlerinin çözümü ile genel olarak algoritmik
problemlere yönelik tam bir metodoloji sunar, ve bunun bir kaç örnek konu ve
programlama sınavları ile nasıl uygulanacağını gösterir. Programlama üzerine başka bir
kitapta aramanıza gerek yoktur!
C# ile Bilgisayar Programlama Temelleri
8
0.6 Bu Kitabın Öğretmedikleri Nelerdir?
İlk söz olarak, ancak önemsiz değil, bu kitap “Yazılım Mühendisliği” ünvanı derecesi
adına size herhangi bir ödül vermeyecektir! Bu kitap .NET platformunu size
anlatmayacaktır, veritabanları ile nasıl çalışmanız gerektiğini, dinamik web sitelerini nasıl
oluşturacağınızı ve mobil uygulamalar geliştirmeyi, window tabanlı grafik kullanıcı
arayüzünü (GUI) nasıl oluşturacağınızı ve zengin Internet uygulamalarını (RIA) size
öğretmeyecektir. Skype, Firefox, MS Word veya Facebook gibi sosyal ağlar ve
Amazon.com gibi satış sitelerine ait olan karmaşık yazılım uygulamaları ve sistemleri
geliştirmeyi öğrenmeyeceksiniz. Ve başka hiçbir kitap tek başına bunu başaracak gibi
görünmüyor! Bu tür projelerin yürütülmesi için gerekli olan çalışmaların tümü çok uzun
yıllar boyu sürer. Bu kitapta yeralan bilgi ve deneyim gelecekteki müstakbel
programcılar için sadece harika bir başlangıçtır.
Bu kitaptan, yazılım mühendisliğini öğrenmeyeceksiniz, takım çalışmasını ve bir yazılım
şirketinin gerçek projeler üzerinde çalışmak için sizi hazırlamasını anlamak da pek
mümkün değildir. Tüm bunları öğrenmek için birkaç kitap daha ve ekstra dersler gerekir,
ancak bu kitapta harcayacağınız zaman için pişman olmanıza gerek yok, çünkü
programlama temelleri ile başlayan doğru seçimde zaten bulundunuz. Web
geliştirme, mobil uygulamalar ve veritabanları ile ilk etapta etkileşmek daha kötü
sonuçlara mal olabilirdi. En azından uzman programcı olma şansınız var, bunun için
derinlemesine programlama ve teknoloji bilgisine sahip olacaksınız. Programlama
temellerini bir kere elde ettikten sonra, veritabanları, ardı sıra web uygulamalarını
okumak ve anlamak nispeten size kolay gelecektir. SQL, ASP.NET, AJAX, XAML veya
WinRT ile durum böyle değildir.
Meslektaşlarınızın bazıları doğrudan web ya da mobil uygulamalar ve veritabanları ile
programlamaya başlamışlardır, bir dizi, bir liste veya karma tablo ne olduğunu bilmek
onların harcı olmasa da, bunu zor yoldan yapmak için baştan yola çıkarlar. PHP ve MySQL
ile düşük kaliteli web sitelerini yapmayı öğrendikten profesyonel olmak için de bir çok
yol denerler. Web teknolojileri ve veritabanlarını sizin için güzel bir öğrenme alanıdır,
ancak önce programlama öğrenilmelidir! Çünkü eğer algoritmik düşünmeye zaman
ayırırsanız, programlama sorunlarını çözmeyi bildikten sonra bir teknoloji öğrenmek
temelleri bilirseniz sizin için kolaylaşır. Bu her şeyden daha önemlidir.
C# ile Bilgisayar Programlama Temelleri
9
Web uygulamaları ve/veya veritabanları ile programlamaya başlangıç
bir yabancı dili öğrenmek için yeni başlayanların onu dilin kendi
alfabesinden veya bir ders kitabından okumaya başlamak yerine bir
klasik romandan okumaya başlamaları kadar yanlış bir görüş teşkil
etmektedir. Bu imkansız değildir, ancak temel eksikliği varsa, bina inşa
etmek güç olur. Yüksekle muhtemel sonuçları hayati temel bilgi
eksikliği ve meslektaşları/yaşıtlarının önlenemez gülüşlerine maruz
kalmaktır.
0.7 Bilgi Nasıl Sunulmuştur?
Çok sayıda yazar, yardımcı yazar ve editör olarak kitabın her bölümünü benzer ve
anlaşılır tarzda yazmak için elimizden geleni yaptık. İçerik iyi yapılandırılmış bir şekilde
sunulmuştur; anlaşılabilir ve metin içinde bilgiyi aramanın oldukça kolay olduğu birçok
başlık ve alt başlıklar halinde işlenmiştir.
Bu kitap programcılar için programcılar tarafından yazılmıştır. Yazarlar, aktif
yazılım geliştiricilerdir ve arkadaşları hem yazılım geliştirme hem de gelecekteki
programcıları eğitmek konusunda gerçek deneyim sahibidirler. Kendiniz göreceğiniz gibi,
bu nedenle, içerik sunum kalitesi, çok iyi düzeydedir.
Tüm yazarlar olarak programlama üzerine bir kitapta en önemli şeylerden birinin örnek
kaynak kod olduğunun belirgin bilincindeyiz. Bu çok önemli nedenle metne pek çok
örnek, çizim, açıklama, resim ve şekiller eşlik ediyor.
Her bölüm farklı bir yazar tarafından yazılmışsa, konuşma tarzı farklılıklarını tamamen
önlemenin ve her bölümün kalitesini tamamıyla aynı tutmanın herhangi bir yolu yoktur.
Bazı yazarlar bölümlerini mükemmel hale getirmek için (aylar süren) pek çok çaba
ortaya koyuyorlar. Diğerleri çok çaba sarfedemedikleri için bölümlerini en iyi kategoriye
koyamayız. Son olarak, ancak önemsenmeyecek bir değişken de yazarların deneyimidir
- kimileri 2-3 yıldır profesyonel programlama deneyimine sahipken – diğerleri 15 yıldır bu
işle uğraşmaktadır. Hiç şüphesiz, bu kaliteyi etkiler, ancak sizi temin ederiz ki her bölüm
gözden geçirilerek Svetlin Nakov ve ekibinin kalite standartlarını karşılar hale getirilmiştir.
C# ile Bilgisayar Programlama Temelleri
10
0.8 C# ve .NET Platformu
Bu kitap programlama ile ilgilidir. Programcı olarak düşünmeyi, kod yazmayı, veri
yapılarını ve algoritmaları düşünmeyi ve sorun çözmeyi size öğretmek için tasarlanmıştır.
C# ve Microsoft .NET platformunu (C# arkasındaki platform) sadece programlama
kodunu yazmak için kullanacağız ve dilin özelliklerini incelemeyeceğiz. Bu elinizdeki kitap
Java ve C++ gibi diğer diller için de yazılmış olabilir, ancak farkları bariz değil önemsizdir.
Bununla birlikte, kısa bir C# (telaffuzu "see sharp") tanımını verelim.
C # yazılım uygulamalarının geliştirilmesi için modern bir
programlama dilidir.
"C#" ve ".NET Platformu" terimleri eğer sizin için bilinmeyense, ayrıntılarını ve
bağlantılarını sonraki bölümde öğreneceksiniz. Şimdi kısaca C#, .NET, .NET Platformu,
CLR ve C# ile ilgili diğer teknolojileri açıklayalım.
0.9 C# Programlama Dili
C#, .NET platformu ile birlikte Microsoft tarafından oluşturulan ve geliştirilen, modern
nesne yönelimli, genel amaçlı bir programlama dilidir. C# ve .NET platformu
üzerinde geliştirilen çok çeşitli yazılım vardır: ofis uygulamaları, web uygulamaları, web
siteleri, masaüstü uygulamaları, mobil uygulamalar, oyunlar ve diğerleri.
C#, Java ve C++ benzeri yüksek seviyeli bir dildir ve bir ölçüde Delphi, VB.NET ve C
dillerine benzerdir. Tüm C# programları nesne yönelimlidir. Bunlar yöntemleri
tanımlanmış bir küme sınıftan oluşur ve yöntemler program mantığını – bilgisayarın
yürüttüğü talimatları içerir. Bir sınıf, yöntem ve C# programları ile ilgili detayları
fazlasıyla bir sonraki bölümde bulacaksınız.
Günümüzde C# en popüler programlama dillerinden biridir. Dünya çapında
milyonlarca geliştirici tarafından kullanılmaktadır. Microsoft’un .NET platformu için
uygulama geliştirmek ve yürütmek için geliştirdiği C# dili Microsoft odaklı şirketler
arasında yayılmıştır, şirketler ve bireysel geliştiriciler tarafından da yaygın olarak
C# ile Bilgisayar Programlama Temelleri
11
kullanılır. İyi de olsa kötü de olsa, bu kitabın yazıldığı zaman itibariyle, C# dili ve .NET
platformu tamamen Microsoft tarafından yönetilmektedir ve sürdürülmektedir ve
üçüncü kişilere açık değildir. Bu nedenle, IBM, Oracle ve SAP gibi tüm diğer büyük yazılım
şirketleri Java platformunda kendi çözümlerini temellendirmiş ve kendi yazılım ürünlerini
geliştirmek için birincil dil olarak Java kullanmışlardır.
C# ve .NET Platformunun aksine, Java dili ve platformu yazılım şirketleri, kuruluşlar ve
bireysel geliştiricilerinin bütün bir toplum içinde yer aldıkları açık kaynak projeleridir.
Java dünyasındaki standartlar, teknik özellikler ve tüm yeni özellikler, tek bir şirket (C#
ve .NET Platformu’nda olduğu gibi) yerine, tüm Java toplulukları üzerinden oluşturulan
çalışma grupları tarafından geliştirilmiştir.
C# dili üzerinde yürütüldüğü Yürütüm Süresi Ortak Dili (Common Language
Runtime: CLR) adında özel bir çevre ile birlikte dağıtılır. .NET Platformu temel işlevsellik
sağlayarak, derleyici, hata düzeltici ve diğer geliştirme araçlarından oluşan standart
kütüphaneleri içerir. CLR .NET Platformu’nun bir parçasıdır. Neyse ki platform üzerindeki
CLR programları taşınabilirdir, ve bir kere yazıldığında işletim sistemleri üzerinde küçük
değişikliklerle veya hiçbir değişiklik yapmadan çeşitli donanım platformları üzerinde
çalışabilir. C# programları en yaygın olarak MS Windows üzerinde çalışır, ancak .NET
Platformu ve CLR aynı zamanda cep telefonlarını ve Windows Mobile, Windows Phone ve
Windows 8 tabanlı diğer taşınabilir cihazları da destekler. C# programları hala serbest
.NET Platformu uygulaması olan Mono ile Linux, FreeBSD, iOS, Android, MacOS X ve
diğer işletim sistemleri üzerinde çalıştırılabilir, ancak, bu resmen Microsoft tarafından
desteklenmiyor.
0.10 Microsoft .NET Platformu
C# dili bağımsız bir ürün halinde dağıtılmamıştır – Microsoft .NET Platformu’nun
("Microsoft nokta Net Platformu" olarak telaffuz edilir) bir parçasıdır. .NET Platformu
genellikle C# ile veya .NET uyumlu bir başka dilde (VB.NET, Yönetilen C++, J# veya F#
gibi) yazılmış programların geliştirilmesi ve yürütülmesi için bir ortam oluşturur.
Şu bileşenleri vardır:
–
.NET programlama dilleri (C#, VB.NET ve diğerleri);
–
C# programlarını kontrollü bir şekilde çalıştıran kodun (CLR) yürütülmesi için
yönetilen bir ortam;
C# ile Bilgisayar Programlama Temelleri
–
12
C# programlarını CLR’in anlayabileceği bir ara koda (MSIL adında) dönüştüren
csc derleyicisi gibi bir dizi geliştirme aracı;
–
Veritabanlarına erişime izin veren ADO.NET gibi standart bir kitaplık seti (MS
SQL Sunucu veya MySQL gibi) ve standart iletişim platformları yoluyla
uygulamaları bağlayan WCF ve HTTP, REST, JSON, SOAP ve TCP gibi soketleri
içeren protokoller.
.NET Platformu her modern Windows dağıtımının bir parçasıdır ve farklı versiyonları
mevcuttur. Son sürümü Microsoft'un web sitesinden indirilebilir ve yüklenebilir. Bu kitabın
yayın tarihi itibariyle, .NET Platformu’nun son sürümü 4.5’tir. Windows Vista paketi –
.NET Platformu 2.0, Windows 7 – .NET 3.5 ve Windows 8 – .NET 4.5 içermektedir.
0.11 Neden C#?
Kitabımız için C# seçmemizin birçok nedeni vardır. Bu tüm dünyada milyonlarca
programcı tarafından yaygın olarak kullanılan modern bir programlama dilidir. Aynı
zamanda, C# (C ve C++ aksine) öğrenmek için çok basit ve kolaydır. Yeni
başlayanlar için uygun ve birçok büyük şirket tarafından endüstride hâlâ yaygın olarak
kullanılan bir dil ile başlamak doğaldır, bu özelliği onu günümüzde en popüler
programlama dillerinden biri haline getirmiştir.
0.12 C# veya Java?
Bu yoğun olarak tartışılabilmesine rağmen, Java’nın C# için en ciddi rakip olduğu
kabul edilmektedir. Java ile C# arasında bir karşılaştırma yapmayacağız, çünkü C#
tartışmasız daha iyidir, daha güçlüdür, zengindir ve mühendisliği daha iyidir. Ancak, bu
kitabın amaçları için, biz her modern programlama dilinin programlama ve algoritmaları
öğrenmek için yeterli olacağını vurgulamak zorundayız. C# seçtik çünkü öğrenmesi
daha kolaydır ve son derece kullanışlı, ücretsiz bir entegre geliştirme ortamı ile
dağıtılmıştır (örneğin, Visual C# Ekspres Baskısı). Java tercih edenler için bu kitabın Java
sürümü www.introprogramming.info adresinde mevcuttur.
C# ile Bilgisayar Programlama Temelleri
13
0.13 Neden PHP Değil?
Programlama dillerinin popülaritesi ile ilgili olarak, C# ve Java’nın yanı sıra, bir başka
yaygın olarak kullanılan dil de PHP’dir. Küçük web siteleri ve web uygulamaları
geliştirmek için uygundur, ancak büyük ve karmaşık yazılım sistemlerinin
uygulanmasında ciddi zorluklar doğurmaktadır. Yazılım sektöründe PHP küçük projeler
için ilk olarak ve en önemli şekilde kullanılır, çünkü geliştiricilerin kötü, düzensiz ve
bakımı kolay olmayan kod yazmasına yol açabilir, daha önemli projeler için sakıncalı
olabilir. Bu konu da tartışmalıdır, ancak genel olarak kabul edilmektedir ki, inşa edildiği
eskimiş kavram ve kökenler nedeniyle ve çeşitli evrimsel nedenlerle, PHP düşük kaliteli
programlama eğilimi içinde olan bir dildir, kötü kod yazma ve bakımı kolay olmayan
yazılım oluşturmaya neden olabilir. PHP kavramsal olarak yordamsal bir dildir ve modern
nesne yönelimli programlama paradigmalarını desteklemesine rağmen PHP
programcılarının çoğu yordamsal kod yazar. PHP’nin yazılım mühendisliği mesleğindeki
adı "kod maymunu" dili olarak bilinir, çünkü PHP programcıları korkutucu oranda en
düşük kaliteli kod yazar. Düşük kaliteli, kötü yapılandırılmış ve kötü organize edilmiş
programlama kodu yazmak eğilimi nedeniyle, PHP dili ve platformunun bütün kavramları
yanlış kabul edilir ve ciddi şirketler (Microsoft, Google, SAP, Oracle ve onların ortakları
gibi) bundan kaçınırlar. Bu sebeple ciddi bir yazılım mühendisi olmak istiyorsanız, C #
veya Java ile başlayın ve (mümkün olduğunca) PHP’den kaçının.
Elbette, PHP’nin programlama dünyasında kullanımları vardır, (örneğin, WordPress
ile blog oluşturma, Joomla veya Drupal ile küçük bir web sitesi, veya PhpBB ile bir
tartışma panosu) ancak tüm PHP platformu, .NET ve Java gibi büyük sistemler için iyi
organize edilmemiş ve tasarlanmamıştır. Web tabanlı olmayan uygulamalar ve büyük
endüstriyel projelere gelince, PHP mevcut seçenekler arasında uzun bir atış değildir.
PHP’yi doğru kullanmak ve onunla yüksek kaliteli profesyonel projeler geliştirmek için çok
tecrübe gereklidir. PHP geliştiricileri genellikle öğreticiler, makale ve düşük kaliteli
kitaplardan öğreniyor ve kötü uygulama ve alışkanlıkları seçip bulurken onları daha sonra
ortadan kaldırmak kolay olmaz. Bu nedenle, ilk geliştirme dili olarak PHP
öğrenmeyin. C# veya Java ile başlayın.
Yazarların kolektif büyük deneyimlerine dayanarak C# ile programlamaya başlamanızı ve
C, C++ ve PHP gibi dilleri bunları kullanmaya başlamak zorunda kalacağınız ana kadar
görmezden gelmenizi tavsiye ediyoruz.
C# ile Bilgisayar Programlama Temelleri
14
0.14 Neden C veya C++ Değil?
Tartışma götürse de, C ve C++ dilleri oldukça ilkel, eski ve çürüyen olarak kabul
edilir. Onların hâlâ kendi kullanımları vardır ve düşük seviyeli programlama için
uygundur (örneğin özel donanım aygıtları için programlama) ama onları izlemenizi tavsiye
etmiyoruz.
Eğer bir işletim sistemi yazmak istiyorsanız, veya bir gömülü cihazı programlamak
istiyorsanız, alternatiflerin eksikliği nedeniyle ve donanımı çok dikkatli kontrol etmek
gerektiği için saf C programlayabilirsiniz. C dili manevi olarak eskidir ve hiçbir şekilde
onunla programlamaya başlamak için bir tavsiyeye rastlamazsınız. Saf C kodlayan
programcının verimliliği C# ve Java gibi modern genel amaçlı programlama dilleri
altındaki verimlilik ile karşılaştırıldığında birçok kez çok daha düşüktür. C’nin bir değişiği
Apple/iPhone geliştiricileri arasında kullanılır, ama iyi bir dil değil olduğundan değil, hiçbir
iyi alternatif olmadığı içindir. Çoğu Apple odaklı programcı Objective-C sevmiyor ama bir
başka şey yazmak konusunda başka hiçbir seçimleri olmadığı için bu işi
gerçekleştiriyorlar.
Donanım ile çok yakın çalışmayı gerektiren uygulamalar ile programlamak zorunda
kalındığında veya (3D oyunlar gibi) özel performans gereksinimleri olduğunda C++
kabul edilebilir. Her bağlamda (Web uygulamaları geliştirme veya iş yazılımları gibi) C++
olağanüstü yetersizdir. Eğer şimdi programlamaya başlıyorsanız bunu sürdürmenizi
tavsiye etmiyoruz. Hala bazı okullarda ve üniversitelerde çalışmalar yapılmasının nedeni
kalıtsaldır, çünkü bu kurumlar çok muhafazakardır. Örneğin, Uluslararası Bilişim
Olimpiyatı (IOI) programlama yarışmalarında izinli kullanımlı tek dilin C++ olmasını
teşvik etmeye devam ediyor, C++ nadiren endüstride kullanılır olmasına rağmen.
İnanmıyorsanız, bazı iş arama siteleri aracılığıyla bakabilirsiniz ve C++ ile verilen iş
ilanları yüzdesini sayın.
C++ dilinin popülerliğini kaybetti çünkü başlıca nedeni hızla geliştirilen kaliteli yazılımın
uygulanabilirliğinin yetersiz kalmasıdır. C++ dilinde yüksek kaliteli yazılım yazmak için,
inanılmaz akıllı ve deneyimli programcı olmak zorunda kalırsınız, aynı tez C# ve Java için
kesinlikle gerekli değildir.
C++ öğrenme daha fazla zaman alır ve çok az programcı
gerçekten iyi biliyor. C++ programcısının verimliliği C# programcısına kıyasla birçok kere
daha düşüktür ve bu yüzdendir ki C++ zemin kaybediyor. Bu nedenlerden dolayı, C++
dili yavaş yavaş kayboluyor ve bu nedenle bunu öğrenmek için tavsiyede
bulunmuyoruz.
C# ile Bilgisayar Programlama Temelleri
15
0.15 C# Avantajları
C# nesne yönelimli bir programlama dilidir. Ciddi yazılım sistemleri için kullanılan
modern programlama dillerinin hepsi (Java ve C++ gibi) nesne yönelimlidir. Nesne
yönelimli programlamanın avantajları kitap boyunca birçok alıntılar halinde dile
getirilmiştir, buna rağmen şu an için, size gerçek dünyadan nesneleri ile çalışma izni
veren dil olarak nesne yönelimli dilleri düşünebilirsiniz (örneğin öğrenci, okul, ders kitabı,
kitap ve diğerleri için). Nesneler (örneğin isim, renk, vb) özelliklere sahiptir ve (örneğin,
hareket, konuşma, vb) eylemleri gerçekleştirebilir. C# ve .NET Platformu ile
programlamaya başlayarak, perspektifi çok yüksek bir yola sapmış oluruz.
Programcılar için iş teklif eden bir web sitesi açarsanız, C# ve .NET uzmanları için çok
büyük ve Java programcıları için yakın bir talep olduğunu kendiniz göreceksiniz. Aynı
zamanda, PHP, C++ ve diğer teknoloji talebini C# ve Java mühendisleri talebi ile
kıyasladığımızda daha düşük bir rakam ortaya çıkmaktadır.
İyi programcı için, kullandıkları dilin önemi bir anlam taşımamaktadır, çünkü
programlamayı bilirler. İhtiyaç duydukları dil ve teknoloji ne olursa olsun onlar hızlı
uzmanlaşacaklardır. Amacımız C# öğretmek değil, programlama öğretmektir!
Programlama temellerinde uzmanlaştıktan, algoritmik düşünmeyi öğrendikten, diğer
programlama dilleri ile tanıştıktan sonra, onların C# ile ne kadar ortak noktaları olduğunu
göreceksiniz ve öğrenme modeliniz kolaylaşacak. Bu kitap programlamanın değişmeyen
temellerini öğretiyor.
0.16 Örnekler Visual Studio 2012 için C# 5 Dilinde
Verilmiştir
Bu kitapta verilen örneklerin hepsi bu kitabın yayınlanması itibariyle C# dili ve .NET
Platformu 4.5 sürümü ile ilgilidir. Visual Studio tümleşik geliştirme ortamını kullanmaya
dair tüm örnekler ürünün 2012 sürümü ile ilgilidir. Bu kitabın yazılması sırasında en son
bu sürümler vardı.
Microsoft Visual Studio 2012 tümleşik geliştirme ortamının (IDE) başlangıç düzeyindeki
C# programcıları için uygun olarak düşünülmüş Windows Masaüstü için Microsoft Visual
Studio Express 2012 adı verilen bir de ücretsiz sürümü vardır. Ücretsiz ve ücretli (ticari
bir yazılım ürünü olan) Visual Studio sürümleri arasındaki fark bu kitapta kullanmamızı
gerektirmeyen bazı işlevlerin kullanılabilirliğinde yatmaktadır.
C# ile Bilgisayar Programlama Temelleri
16
C# 5 ve Visual Studio 2012 kullanmalarına rağmen bu kitaptaki örneklerin çoğu .NET
Platformu 2.0 / 3.5 / 4.0 ve C # 2.0 / 3.5 / 4.0 altında sorunsuz çalışacaktır ve Visual
Studio 2005/2008/2010 altında derlenebilir.
Programlamayı öğrenirken hangi C# ve Visual Studio sürümünü kullanacağınız hiçbir
büyük önem taşımamaktadır. Önemli olan programlama ve algoritmik düşünme
ilkelerini öğrenmektir! C# dili, .NET Platformu ve Visual Studio tümleşik geliştirme
ortamı sadece araçlardır ve herhangi bir zamanda bunlarla başkalarını takas edebilirsiniz.
Bu kitabı okursanız ve VS2012 şu anda en son sürüm değilse emin olun ki neredeyse bu
kitabın tüm içeriği geriye dönük uyumluluk nedeniyle yine aynı olacaktır.
0.17 Bu Kitabı Nasıl Okumalısınız?
Bu kitabı okuma sırasında birçok uygulama beraberinde geliyor. Programlamayı
öğrenmek kolay değildir! Yüzmeyi bir kitaptan nasıl okuyarak öğrenmek mümkün değilse
gerçekleştirim olmadan çalışıyor olmak da mümkün değildir. Bocalarsanız ama başka
çaresi olmaz! Her bölümden sonra sorunlar üzerinde çalışarak bu kitaptan daha fazla şey
öğreneceksiniz.
Burada okuduğunuz her şeyi bir bilgisayarda kendiniz için denemelisiniz. Aksi takdirde
öğrenemezsiniz. Örneğin, basit bir program yazmak için Visual Studio ile ilgili ilk
okuduğunuzda, Microsoft Visual Studio (veya Visual C# Ekspres) yükleyin ve programınızı
yazmak için deneyin, bunu yapmanız gerekiyor. Aksi takdirde öğrenmeniz sorunlu
olabilir! Teoride, her şey kolay gibi görünüyor, ancak programlama uygulama
anlamına gelir. Bunu hatırlayın çünkü bu kitapta o sorunları çözmek için çalışacağız. Bu
sorunlar özenle seçilmiştir – ne sizi vazgeçirecek kadar çok zor, ne de çok kolaydır,
böylece bir meydan okuma olarak onları çözmeyi algılamaya motive olacaksınız. Eğer
zorluklarla karşılaşırsanız, Telerik Yazılım Akademisi "C # Programlama Temelleri" eğitim
kursunun tartışma grubu yardımına bakın: http://forums.academy.telerik.com (Forum
Bulgar geliştiriciler için tasarlandı, ancak o insanlar "yaşam"larında İngilizce konuşuyorlar
ve endişelenmeyin, bu kitapla ilgili sorularınıza cevap vereceklerdir. Binlerce öğrenci her
yıl bu kitaptan egzersizleri çözmek istiyorlar böylece her problem için kitaptan birçok
çözüm bulabilirsiniz. Bu web sitesinde kitaptaki her alıştırma için resmi çözümler + testler
de yayınlayacak.
C# ile Bilgisayar Programlama Temelleri
17
Alıştırma yapmadan bu kitabı okuduktan anlamsızdır!
Program yazma hakkında metni okuduğunuzdan çok daha
fazla zaman harcamak gerekir. Bir taşıt aracını sürmeyi
öğrenmek gibidir:
hiç kimse kitap okuyarak sürüş
öğrenemez. Sürüş öğrenmek için farklı durumlar, yollar,
arabalar, vb. için birçok kez sürücülüğü denemeniz gerekir.
Programlama öğrenmek için, programlamak gerekiyor!
Herkes okulda matematik okudu ve matematik problemlerini çözmeyi öğrenmek için nasıl
bir pratik gerektiğini herkes bilir. Ne kadar olursa olsun öğretmenlerinizi izler ve
dinleseniz de, oturup sorunları çözmeden onları öğrenemezsiniz. Aynısı
programlama için geçerlidir. Çok alıştırmaya ihtiyacımız var. Sorunları çözmeniz, deney
yapmak için, çaba göstermek için ve sorunlarla mücadele etmek için, hata yapmak ve
onları düzeltmek için, denemek ve başarısız olmak için, yeniden denemek ve nihayet
işlerin yolunda gittiği zaman o anları deneyimlemek için çok yazmanız gerekiyor. Çok
alıştırmaya ihtiyacımız var. İlerleme kaydetmenin tek yolu budur!
Bir geliştirici olmak için insanlar der ki en az 50.000 – 100.000 satır kod yazmaları
gerekir. Doğru sayı değişebilir. Bazı insanlar hızlı öğrenir yada sadece problem çözme
deneyimleri vardır. Diğerleri için daha fazla pratik gerekebilir, ancak her durumda
programlamayı uygulamak çok önemlidir! Sorunları çözmek için ve bir geliştirici
olmak için kod yazmak gerekir. Başka yolu yoktur!
0.18 Alıştırmaları Asla İhmal Etmeyin!
Her bölümün sonunda hatırı sayılır derecede çok alıştırma bulunmaktadır. Onları ihmal
etmeyin! Alıştırmalar olmadan, bir şey öğrenemezsiniz. Bir bölümü okuduktan sonra
bilgisayar önünde oturmanız ve kitapta gördüğünüz örneklerle oynamanız gerekir.
Sonra belirlediğiniz sorunları çözme konusunda kendinizi ayarlamalısınız. Hepsini
çözemezseniz en azından denemelisiniz. Eğer gerekli zamanınız yoksa, en azından her
bölüm için ilk birkaç sorunun çözümüne çalışmanız gerekir. Her bölümden sonra
sorunların çözümü olmadan devam etmeyin, bu sadece anlamsız olur! Sorunlar
okuduğunuzu şeyleri uygulayacağınız mümkün olan en küçük geçerli durumdır.
Uygulamada programcı olduğunuzda, daha büyük ve daha karmaşık ölçekte her gün
benzer sorunları çözeceksiniz.
C# ile Bilgisayar Programlama Temelleri
18
Maliyeti ne olursa olsun kitabın her bölümünden sonra gelen
alıştırma problemlerini çözmeniz için çaba sarf etmeniz
gerekir! Aksi takdirde hiçbir şey öğrenememe ve sadece
zaman harcıma riski ile karşı karşıya kalırsınız.
0.19 Bu Kitaptan Öğrenmek İçin Ne Kadar Zamana
İhtiyacınız Var?
Programlama temellerinde uzmanlaşmak çok önemli bir görevdir ve çok zaman alır. Bu
konuda inanılmaz derecede iyi olsanız bile, bir veya iki hafta içinde iyi seviyede
programlama öğrenmenin kalıcı olacağını düşünmek yanlış olur. Herhangi bir insani
beceriyi öğrenmek için, okumak, görmek
yada nasıl yapılacağının gösterilmesi gerekir
ve sonra bunu kendiniz yapıp deneyerek birçok pratik geliştirebilirsiniz. Aynı olgu
programlama için de geçerlidir – ya okumanız, ya görmeniz yada nasıl yapılacağını
dinlemeniz gerekir, taa ki yapana kadar. Sonra başarılı olur veya olmazsınız, nihayet
öğrendiğinizin farkına varana kadar tekrar denersiniz. Öğrenme adım adım yapılır,
rastgele değil belirli bir ardışıklık temeline dayanır, çaba ve tutarlılık isteyen bir seridir, bu
nedenle paylaşılabilir.
Eğer bu kitaptaki konu içeriğini okumak, anlamak, öğrenmek ve iyice ve derinlemesine
kazanmak istiyorsanız, gün boyu süren bir etkinlik için en az 2 ay yatırım gerekiyor,
yada her gün biraz alıştırma yaparsanız en azından 4-5 ay yatırım gerekiyor.
Derinlemesine programlama temellerini kavramanın mümkün olacağı minimum zaman
miktarı bu kadardır.
Bu miktardaki derslerin gerekliliği Telerik Yazılım Akademisi tarafından verilen serbest
eğitim ile gerçekte doğrulanmıştır (http://academy.telerik.com). Bu kitaptaki derslere
dayalı eğitimlere katılan öğrencilerin yüzlercesi genellikle tam zamanlı çalışma ile 3-4 ay
içinde bu kitabın konularının hepsini öğrenir. Her yıl binlerce öğrenci bu kitabın alıştırma
problemlerini çözüyor ve kitabın içeriğini kapsayan programlama sınavlarını başarıyla
geçiyor. İstatistikler gösteriyor ki, öncesinde programlamaya maruz kalmayan herhangi
bir kimse Telerik Akademisi'nde verilen derslere karşılık gelen ve bu kitap ellerindeyken
3-4 ay eşdeğerinde bir aktiviteyi kapsayan tam gün süre ile zaman geçirmiyorsa,
bahsi geçen sınav veya sınavlarda başarısız karne alıyor.
C# ile Bilgisayar Programlama Temelleri
19
Kitaptaki ana konu 1100 sayfada sunulmuştur, günlük bir sayfa olmak üzere okursanız
sadece dikkatle okumanız ve örnek programları test etmeniz bir ay alacaktır. Elbette,
alıştırmalar için yeterli zaman (birkaç ay daha fazla) harcamak zorundasınız; onlar
olmadan programlamayı öğrenmenizin işlerlik kazanması zorlaşır ve değeri azalır.
0.20 Karmaşık veya Kolay?
Kitaptaki alıştırmalar zorluk dereceleri değişen yaklaşık 350 problemden oluşur.
Bunlardan bazılarının çözümü için birkaç dakika, diğerleri için birkaç saat (yardım
olmadan tüm bunları çözebilirseniz) gerekebilir. İhtiyacınız olan zaman tam günlü bir
veya iki aylık bir çalışma veya günde daha az çalışıyorsanız birkaç ay daha ek çalışma
olarak özetlenebilir.
Her bölümün alıştırmaları zorluk düzeyi artarak sıralanmıştır. İlk birkaç alıştırma
bölümdeki örneklere benzer şekilde nispeten kolaydır. Son birkaç alıştırma genellikle
karmaşıktır. Bunları çözmek için dış kaynakları (Wikipedia bilgileri gibi) kullanmanız
gerekebilir. Bilinçli olarak, her bölümdeki son birkaç alıştırma bölümde verilen bilgileri
aşar ve çözümü bunun dışında sizin becerinize dayanır. Favori arama motorunda
arama gerçekleştirmek için sizi motive etmek istiyoruz. İnternette aramayı
öğrenmeniz gerekir! Bu herhangi bir programcı için temel bir beceridir. Öğrenmeyi
öğrenmeniz gerekir. Programlama her gün öğrenmek ile ilgilidir. Teknoloji sürekli
değiştiği için her şeyi bilemezsiniz. Bir programcı olmak her gün yeni API'ler,
platformlar, teknolojiler ve araçlar öğrenmekle eşdeğerdir. Sadece kendinizi
hazırlayın, kaçınılması mümkün değildir. Alıştırmaları çözerken sizi İnternet’te aramaya
yöneltecek pek çok problem bulabilirsiniz. Kimi alıştırmalarda bir sonraki bölümde işlenen
konuları okumanız gerekebilir, bu nedenle kişisel yetenek gerekiyor. Tanınmış
algoritmalar, veya başka bir şey sizin çözüm bulmanıza yarayabilir, ancak İnternet’te
arama gerçekleştirmek her durumda vazgeçilmez temel bir beceridir.
Kitapta kapsanan alıştırmaları çözmeniz gerçekten birkaç aydan az almaz. Eğer
kendinize ayıracağınız bu kadar zamana sahip değilseniz, üzülmeyin gerçekten
programlamayı sürdürmek istediğiniz önemlidir. Bu büyük çabaları içeren gerçekten çok
ciddi bir girişimdir. Eğer sürekli ve programlamayı iyi bir seviyede öğrenmek istiyorsanız,
zaman çizelgesi hazırlayın ve kitap yada buna dayalı video derslerini izleyin.
C# ile Bilgisayar Programlama Temelleri
20
0.21 Neden Veri Yapıları ve Algoritmaların Önemi
Belirtilmiştir?
Bu kitap, programlama temel bilgilerine ek olarak, uygun algoritmik düşünme ve
programlamanın temel veri yapılarını kullanmayı size öğretir. Veri yapıları ve
algoritmalar, bir programcının en önemli temel becerileridir! Onları iyi kavrarsanız,
yazılım teknolojisinde, geliştirme aracı, platform veya API konularında yeterli olmak
yolunda bir probleminiz olmaz. En ciddi yazılım şirketlerinin çalışanlarını işe alırken dikkat
ettikleri en önemli kriter budur. Bunun kanıtı, Google ve Microsoft gibi büyük şirketlerde
yapılan ve sadece temel veri yapıları ve algoritmalar ile algoritmik düşünmeye
dayanan iş görüşmeleridir.
Aşağıdaki bilgiler 2007-2008 Microsoft ve Google'da yazılım mühendisliği iş
görüşmelerinden başarıyla geçmiş bulunan ve bu kitabın önde gelen yazarı Svetlin
Nakov’dan geliyor. Nakov kendi deneyimlerini paylaşıyor.
0.22 Google'da İş Görüşmeleri
Zürih Google'da yazılım mühendisliği iş görüşmelerine ait soruların %100 ‘ü veri
yapıları, algoritmalar ve algoritmik düşünmeye dayalı konuları içerir. Böyle bir
görüşmeye girdiğinizde, beyaz bir tahta üzerinde bağlantılı liste uygulaması yapmanız
istenebilir. (bkz. "Doğrusal Veri Yapıları") veya çeşitli renklerle dolu olan GIF görüntüsü
bir taramalı çokgeni doldurmak için bir algoritma yazmanız da beklenebilir. (bkz."Ağaçlar
ve Grafikler" in enine-arama bölümü) Google algoritmik düşünebilen ve temel veri
yapıları ve bilgisayar algoritmaları kavrayışına sahip insanlarla ilgileniyor gibi görünür.
Adaylar daha sonra kendi çalışmaları doğrultusunda kullanmak istedikleri herhangi bir
teknolojiyi hızla öğrenebilir. Söylemeye gerek duymalıyız ki, bu kitap Google'da bir iş
görüşmesinden geçmek için size gerekli bilgi ve becerilerin hepsini verecek kadar çok
beceri vaat etmiyor. Kitaptaki bilgiler kesinlikle gerekli bir minimumdur, ancak tamamen
yeterli değildir. Bu sadece ilk adımları teşkil eder.
C# ile Bilgisayar Programlama Temelleri
21
0.23 Microsoft'ta İş Röportajları
Dublin Microsoft’da yazılım mühendisliği iş görüşmelerinde bir çok soru, veri yapıları,
algoritmalar ve algoritmik düşünmeye odaklanmıştır. Örneğin, bir dize sözcüğü
tersten yazmanız (bkz. "Dizeler ve Metin İşleme" Bölümü) yada yönsüz grafikte topolojik
arama gerçekleştirmeniz (bkz. "Ağaçlar ve Grafikler" Bölümü) istenebilir. Google'ın
aksine, Microsoft yazılım mimarileri, çoklu, güvenli kod yazma, büyük miktarda veri ile
çalışma ve yazılım testi ile ilgili bir çok mühendislik sorusu sorar. Bu kitap Microsoft'a
başvurmak için gerekli yeterlilikten uzaktır, ancak içerdiği bilgiler kesinlikle soruların
çoğunluğu için size faydalı olacaktır.
0.24 LINQ Teknolojisi Hakkında
Kitapta sorgular çalıştırılmasına izin veren popüler .NET LINQ teknolojisi (Language
Integrated Query) hakkında bir bölüm vardır. Bu sorgular arasında dizi, liste yada diğer
nesneler için (örneğin arama, sıralama, toplam alma ve diğer grupsal işlemler, vb.)
bulunmaktadır. Bu veri yapıları ve algoritmaların karmaşıklığı bölüm sonrasında
önceden açıklamış olduğumuz tercih nedeniyle sona doğru yerleştirilmiştir. Bir listeyi
sıralamak veya kriterlere göre arama yapmak isteyen bir programcının bu algoritmalar
esnasında hangi mekanizmaların işlediğini bilmelidir, örneğin kaç adet atomik eylem bu
işlem sonucunu hesaplar, vb. LINQ kullanılması halinde belirli bir sorgunun çalıştığını ve
ne kadar zaman aldığını bilemeyiz. LINQ çok güçlü ve yaygın olarak kullanılan bir
teknolojidir, ancak daha sonraki aşamalarda uzmanlaşmak temel algoritmalar ve veri
yapıları gibi programlamanın ana konularında belirgin bir temel kazandıktan sonra
(kitabın sonunda) mümkün olacaktır. Aksi takdirde nasıl çalıştığının farkındalığını
bilincinize indirmeden verimsiz kod yazmayı öğrenme riskiyle karşılaşabilirsiniz ve arka
planda kaç işlem gerçekleştiğini ancak tahmin edersiniz.
0.25 Gerçekten bir Programcı olmak ister misiniz?
Bir programcı olmak istiyorsanız, gerçek programcıların ciddi, ağırbaşlı, düşünme ve
sorgulama yetenekleri olduğunu kavramalısınız. Onlar için hızlı bir şekilde tüm modern
veya eski platformlar, teknolojiler, kütüphaneler, programlama araçları, programlama
dilleri ve geliştirme araçları önemlidir, ve hayatlarının bir parçası olarak programlamayı
hissederler.
C# ile Bilgisayar Programlama Temelleri
22
İyi programcılar kendi mühendislik becerilerini ilerleyen zaman bağlamında
ortaya koyar, yeni teknolojiler, yeni programlama dilleri ve paradigmaları öğrenmeye
çalışır, işte yeni yollar takip eder, her gün yeni platformlar ve yeni geliştirme araçları
hayal eder. Mantıksal düşünme yeteneğine sahip olup; sorunlar üzerinde akıl yürütüp
bunları çözmek için algoritmalar dile getirmekle kalmayıp; çözüm olarak ardı sıra gelen
bir aşama dizisi belirtirler; teknolojik araçlar kullanarak çevre dünya modellenir; kendi
fikirlerini ifade etmek için kod yazmak yada program bileşenleriyle oynamak yerinde bir
davranıştır; kendi algoritmalarını ve programlarını sorunları görmek için haklarında
gelebilecek istisnai durumları öngörerek test ederler; ve bunları hallederler, daha
deneyimli insanların tavsiyesini dinler; ve kullanıcı ihtiyaçlarına uygun olarak onların
uygulamaları için kullanıcı arayüzünü uyarlayabilirler, kendi algoritmalarını robot
endüstrisinde kullanabilirler, ve tıp alemi gibi diğer alanlarda çalıştırabilir ve etkileşim
haline geçebilirler.
İyi programcılar sürekli kitap okur, programlama üzerine makaleler veya bloglar
okur ve yeni teknolojilerle ilgilenir; sürekli bilgi ve görgü kazanırlar, ve sürekli çalışma
biçimlerini yenileştirirler, buna yazılım kalitesi diyorlar. Bazıları ciddi bir sorun ile
yüzleştiklerinde yemek yada uyumak ihtiyaçları bile baskılanıyor, saplantı
hissedebiliyorlar, yada sadece bazı ilginç ders veya sunumdan ilham alarak vakit
geçirebiliyorlar, bu da depresif risk taşıyor. O zaman programlamak sizin için video
oyunlarına takılmak olabilir, daha bilinçli öğrenilmesi ve sınırların daraltılması bir çözüm
olarak görünse de geçici heveslere kapılmak çok kolaydır. Kendinizi programlamaya çok
eğilimli görebilirsiniz, ancak bulunduğunuz ortam sizin bu gelişiminizi kösteklemiş olabilir.
İyi programcıların bir veya daha fazla bilgisayarı vardır, Internet bağlantısı ve
teknolojilere sürekli ulaşılabilecek mekanlarda vakit geçirirler. Düzenli olarak web
sitelerini ve yeni teknolojiler ile ilgili blogları ziyaret ederler, kendi meslektaşları ile
günlük iletişim kurarlar, şu anda gerekli olmayan teknoloji derslerini, seminer ve diğer
etkinlikleri ziyaret ederler. Deneme yada yazılımın bir parçasını yapmak için yeni araçlar
ve yeni yollar araştırırlar yada işin bir parçası olarak. Yeni kütüphaneleri incelerler, yeni
diller öğrenirler, yeni platformlar denerler ve yeni geliştirme araçlarını bilgilerini
pekiştirmek için kullanırlar. Bu yardımlaşma ile beceriler unutulmaz ve sunum için
gerekli olan farkındalık, yetkinlik ve profesyonellik işlerlik kazanır.
Gerçek programcılar kendi mesleklerini asla tam aklımla biliyorum demez. Onların
öğrenmek zorunda oldukları inancı vardır. Programcılıkta merak daha etkindir,
analog saatin GPS sistemi ile nasıl aynı fonksiyonu hatta daha fazlasıyla entegre
C# ile Bilgisayar Programlama Temelleri
23
olduğunu hepimiz biliriz. Okuyucunun bilgisayar bilimlerini idrak etmesi için örnekler
çoğaltılabilir : İnternet teknolojisi, programlama dilleri, işletim sistemleri, derleyiciler,
bilgisayar grafikleri, oyun, donanım, yapay zeka ve her şey aynı programcılığın ürünüdür.
Var olmaları için teknoloji gerekir; böylece endüstri doğar.
Programcı tam özveri gerektiren bir meslektir. Programcı demek yetenekli ve
standart dışı durumlarla başa çıkmak mümkün, yetkili, bilgili, düşünme, bilerek akıl
yürütme demektir. Meslek halini alması yıllar alabilir. Eğer hala her gün yeni bir
şeyler öğrenmek ve teknolojiler ile rekabet etmek istiyorsanız, programcılığa başlamanız
uygundur. Ancak emekli olmayı beklemeyin, zira rekabet o kadar çetindir ki sizi ezip
geçebilir, başka bir mesleği öğrenmek isteyebilirsiniz. Azim ve sebatınız iş yapma
gücünüzle doğru orantılı olmalıdır. Parasal kaygılarla işe başlamak pek çok başarılı genç
adayın kafasındaki ana fikirdir. Ancak bu gerçekleştiğinde teknoloji ilerleyeceği için siz
geri kalırsınız. Bu da meslek etiketleri yerine yıllar boyu gerçekliği kanıtlanmış doğrularla
yola çıkmayı ve sonuçlarından yararlanmayı beraberinde getirir. Hiç şüpheniz olmasın, bu
zevk sizi yeterince tatmin edecektir.
0.26 Bir Programcı Olmak İçin Motive Olun yada Bir
Başka İş Bulun!
İyi programcı olmak veya programlamanın sırlarını bilmekten vazgeçmemişseniz, ve
yazılım geliştirme, bilgisayar bilimi ve yazılım teknolojileri uzmanı olarak önümüzdeki
aylar ve yıllar boyunca sabit gayretli olarak bağlılıkla çalışmaya söz verdiyseniz, bu
konuda derin bir anlayış geliştirdiyseniz, birçok kitap veya başka öğretiler size öz
motivasyon ve belirgin hedefler verecektir. Programcı olduğunuzu veya olmayı
başardığınızı düşünün, varsayın ki programlamayla her gün meşgul oluyorsunuz,
programcılık sizin mesleğinizdir. Dünyadaki tüm yazılımları yazabiliyorsunuz (eğer yeterli
zamanınız varsa); deneyimli programcıların çözebildiği her türlü sorunu çözebiliyorsunuz.
Sürekli ve durmadan amacınızı düşünüyorsunuz. Hatta bazen yüksek sesle, kendinize
sesleniyorsunuz: "Ben iyi bir programcı olmak istiyorum ve bunun için çok çalışmak
zorundayım, çok okumak ve çok şey öğrenmek zorundayım, her gün, sürekli ve özenle
bir çok problem çözmek zorundayım.” Çevrenizdeki her yere programlama kitapları
koyuyorsunuz. "Ben iyi bir programcı olacağım” diye asılı bir mottoyu her akşam
uyumadan önce ve her sabah uyandığınızda görebileceğiniz şekilde yatağınıza
iliştiriyorsunuz. Her gün (istisnasız!) programlıyorsunuz, yeni teknolojileri
öğreniyorsunuz, eğleniyorsunuz, sorunları çözüyorsunuz, oyun yazıyorsunuz, bir web
sitesi hazırlıyorsunuz, derleyici, veritabanı ve diğer yüzlerce program yapmak için orijinal
C# ile Bilgisayar Programlama Temelleri
24
fikirler geliştiriyorsunuz. İyi programcı olmak için her gün programlıyorsunuz ve her
gün programlamayı ve mükemmel bir programcı olacağınız gelecek zamanı
düşünüyorsunuz. Bunu derinden inandığınız için yapabildiniz! Herkes inandığı ve
vazgeçmediği ölçüde bunu gerçekleştirebilir. Bu kitabın ilk adım olduğunu ve her şeyin
size bağlı olduğunu unutmayarak motivasyonunuzu artırın.
Gerçekten programlama öğrenmek için iyi bir başlangıç bir yıl
boyunca her gün programlamaktır. Eğer (istisnasız) her gün
programlarsanız
ve uzun bir süre için bunu yaparsanız
(örneğin bir yada iki yıl) bir programcı olmamak için hiçbir
yol yoktur. Yıllardır programlamayı uygulayan herkes bir gün
çok iyi olacaktır. Diğer yeteneklerin geliştirilmesi de bu yolu
takip eder. Öğrenmek istiyorsanız, sadece uzun bir süre
boyunca her gün alıştırma yapmalısınız.
0.27 Kitabın İçindekilerine Bir Bakış
Kitabın sonraki bölümlerinde karşımıza çıkacak içeriğin bölüm bölüm özetini veren
öğrenilecekler birkaç cümle ile bundan sonraki bölümlerde anlatılacak.
0.27.1 Bölüm 0: Önsöz
Önsöz (güncel bölüm) kitabın içeriğini, okuyucunun öğreneceklerini, beklentilerinin
neler olması gerektiğini, kitabı nasıl okuması gerektiği, neden C# dilini kullandığımızı,
neden veri yapıları ve algoritmalara, vb. odaklandığımızı okuyuculara tanıtır. Önsöz aynı
zamanda kitabın tarihini de anlatır, bölümlerin içeriğini, Bulgarca’dan İngilizce’ye
yazarlar, editörler ve çevirmenleri takım olarak tanıtır. Tüm dünyada Microsoft, Google,
SAP, VMware, Telerik ve diğer önde gelen yazılım şirketlerinden ünlü yazılım mühendisleri
tarafından yazılmış tam gözden geçirmeleri içeriyor.
Önsöz yazarı Svetlin Nakov’dur (Veselin Kolev ve Mihail Stoynov’un çok az katkısı ile)
İngilizce’ye Ivan Nenchovski tarafından çevrilmiş ve Mihail Stoynov, Veselina Raykova,
Yoan Krumov ve Hristo Radkov tarafından düzenlenmiştir.
0.27.2 Bölüm 1: Programlamaya Giriş
C# ile Bilgisayar Programlama Temelleri
25
"Programlamaya Giriş" Bölümü’nde, programlamanın temel terminolojisine göz atacağız
ve ilk programımızı yazacağız. Programlama nedir sorusuna kendimizi alıştıracağız ve
bilgisayarlar ve programlama dilleri ile bağlantı kuracağız. Kısaca yazılım geliştirmenin
ana aşamalarını gözden geçireceğiz, C# dilini, .NET platformu ve yazılım geliştirmede
kullanılan farklı Microsoft teknolojilerini tanıtacağız. C# programlama için gereken
yardımcı araçları inceleyeceğiz ve ilk bilgisayar programımızı yazmak için C# dilini
kullanarak derleyeceğiz ve komut satırını ve bunun yanı sıra Microsoft Visual Studio
tümleşik geliştirme ortamını kullanarak çalıştıracağız. .NET Platformu için belgeleme
olarak düşünülmüş MSDN Kitaplığı’na kendimizi alıştıracağız, bu dilin yetenekleri ile ilgili
çalışmamızda bize yardımcı olacaktır.
Teodor Bozhikov ve Svetlin Nakov tarafından düzenlenen bölüm Pavel Donchev
tarafından yazılmıştır. Bölümün içeriği "Java ile Programlamaya Giriş" kitabının Luchesar
Cekov tarafından yazılmış çalışmalarına biraz dayanmaktadır. Atanas Valchev tarafından
İngilizce’ye çevrilmiştir.
C# ile Bilgisayar Programlama Temelleri
26
0.27.3 Bölüm 2: Temel Tipler ve Değişkenler
"Temel Tipler ve Değişkenler" Bölümü’nde, C# temel tipleri ve değişkenlerinin ne
oldukları ve onlarla nasıl çalışılacağını inceleyeceğiz. Öncelikle, veri tipleri üzerinde
duracağız – tamsayı tipleri, gerçek kayan nokta tipleri, Boole, karakter tipleri, dizeler ve
nesne tipleri. Değişkenlerin ne oldukları ve özellikleri hakkında devam edeceğiz,
değişkenlerin bildirimi, onlara değer ve ilk değer atanması. C# veri tiplerinin ana
kategorilerini tanıtacağız – değer ve referans tipleri. Son olarak, kalıp deyimler üzerinde
duracağız – kalıp deyimlerin ne oldukları ve çeşitleri hakkında.
Nikolay Vasilev tarafından düzenlenen bölüm Veselin Georgiev ve Svetlin Nakov
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Hristo Todorov ve Svetlin Nakov tarafından yazılmış çalışmalarına dayanmaktadır. Lora
Borisova tarafından İngilizce’ye çevrilmiştir (Angel Angelov ve Hristo Radkov tarafından
düzenlenmiştir).
0.27.4 Bölüm 3: İşleç ve İfadeler
"İşleç ve İfadeler" Bölümü’nde, C# işleçlerini ve çeşitli veri tipleri üzerinde
gerçekleştiren işlemleri tanıtacağız. İşleçler arası öncelikleri açıklığa kavuşturacağız ve
işleçlerin tiplerini aldıkları argüman sayısı ve yaptıkları işlem sayımına göre tanıyacağız.
Tip zorlamalarının neden gerekli olduğunu ve nasıl çalışmak gerektiğini inceleyeceğiz.
Son olarak, ifadeleri açıklayacağız ve nasıl kullanılacağını anlatacağız.
Marin Georgiev tarafından düzenlenen bölüm Dilyan Dimitrov ve Svetlin Nakov
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Lachezar Bozhkov tarafından yazılmış çalışmalarına dayanmaktadır. Angel Angelov
tarafından İngilizce’ye çevrilmiştir (Martin Yankov ve Hristo Radkov tarafından
düzenlenmiştir).
0.27.5 Bölüm 4: Konsol Giriş ve Çıkış
"Konsol Giriş ve Çıkış" Bölümü’nde, veri girişi ve çıkışı için bir araç olarak konsola aşina
olacağız. Konsolun ne olduğunu, ne zaman ve nasıl kullanıldığını, konsola erişmek için
geliştirilen birçok programlama dillerine ait kavramları açıklayacağız. Kullanıcı etkileşimi
için bazı C# özelliklerini tanıtacağız ve giriş-çıkış işlemleri için ana akımları, Console.In,
C# ile Bilgisayar Programlama Temelleri
27
Console.Out ve Console.Error, Console sınıfını ve çeşitli biçimlerde veri yazdırmak için
biçim dizelerinin kullanımını inceleyeceğiz. Bir metni sayıya nasıl dönüştüreceğinizi
göreceksiniz (ayrıştırma), çünkü C# sayıları bu şekilde girilir.
Svetlin Nakov tarafından düzenlenen bölüm Iliyan Murdanliev tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Boris Valkov tarafından
yazılmış çalışmalarına dayanmaktadır. Lora Borisova tarafından İngilizce’ye çevrilmiştir
(Dyanko Petkov tarafından düzenlenmiştir).
0.27.6 Bölüm 5: Şartlı İfadeler
"Şartlı İfadeler" Bölümü’nde, durumlara bağlı olarak farklı eylemleri yürütmek için
kullanabileceğiniz C# şartlı ifadelerini ele alacağız. Şartlı işleçlerin sözdizimini
açıklayacağız: Çeşitli örneklerle if ve if-else ve seçim kontrolü olan switch işlecinin
pratik uygulamalarını açıklayacağız. Şartlı ifadelerin iç içe ya da diğer tiplerini kullanırken
daha iyi bir programlama tarzı elde etmek için takip edilmesi gereken en iyi uygulamalar
üzerinde duracağız.
Marin Georgiev tarafından düzenlenen bölüm Svetlin Nakov tarafından yazılmıştır. Tüm
bölümün içeriği "Java ile Programlamaya Giriş" kitabının Marin Georgiev tarafından
yazılmış çalışmalarına dayanmaktadır. George Vaklinov tarafından İngilizce’ye çevrilmiştir
(Momchil Rogelov tarafından düzenlenmiştir).
0.27.7 Bölüm 6: Döngüler
"Döngüler" Bölümü’nde, bir kod parçasını tekrar tekrar yürütebileceğiniz döngü
mekanizmalarını inceleyeceğiz. Şartlı tekrarların (while ve do-while döngüleri) nasıl
uygulandığını ve for döngüleri ile nasıl çalışılacağını tartışacağız. Bir döngü tanımlamak,
yapılandırmak ve anahtar uygulamalarından bazıları için çeşitli yollarla örnekler
verilecektir. Son olarak, birbiri içinde birden çok döngünün nasıl kullanılacağını (iç içe
döngüler) göreceğiz.
Svetlin Nakov tarafından düzenlenen bölüm Stanislav Zlatinov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Rumyana Topalska
tarafından yazılmış çalışmalarına dayanmaktadır. Angel Angelov tarafından İngilizce’ye
çevrilmiştir (Lora Borisova tarafından düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
28
0.27.8 Bölüm 7: Diziler
"Diziler" Bölümü’nde, aynı tip elemanlar ile çalışmak için bir araç olan dizileri
tanıtacağız. Ne olduklarını, nasıl bildirileceklerini, oluşturulacaklarını ve elemanlarına nasıl
erişim sağlanacağını anlatacağız. Tek boyutlu ve çok boyutlu dizileri inceleyeceğiz. Bir
dizi elemanları üzerinden yineleme yapmak, standart girdiden okumak ve standart çıktıya
yazmak için çeşitli yollar öğreneceksiniz. Örnek olarak dizileri kullanarak çözebileceğiniz
birçok alıştırma vereceğiz, ve onların ne kadar yararlı olduğunu göstereceğiz.
Radoslav Todorov tarafından düzenlenen bölüm Hristo Germanov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Mariyan Nenchev tarafından
yazılmış çalışmalarına dayanmaktadır. Boyan Dimitrov tarafından İngilizce’ye çevrilmiştir
(Radoslav Todorov ve Zhelyazko Dimitrov tarafından düzenlenmiştir).
0.27.9 Bölüm 8: Sayısal Sistemler
"Sayısal Sistemler" Bölümü’nde, çeşitli sayı sistemleri ve bunların sayı gösterimi ile
çalışmak için var olan araçlara bir göz atacağız. Sayıların ondalık, ikili ve onaltılı sayı
sistemleri ile temsil edilmesine özellikle önem vereceğiz, çünkü bilgisayar, iletişim ve
programlamada yaygın olarak kullanılmaktadır. Buna ek olarak, sayısal verileri bir
bilgisayarda kodlama yöntemlerini ve kodlama türlerini, yani işaretli büyüklükler, bir’in
tümleyeni, iki’nin tümleyeni ve ikili kodlanmış ondalıkları açıklayacağız.
Mihail Stoynov tarafından düzenlenen bölüm Teodor Bozhikov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Petar Velev ve Svetlin
Nakov tarafından yazılmış çalışmalarına dayanmaktadır. Atanas Valchev tarafından
İngilizce’ye çevrilmiştir (Veselina Raykova tarafından düzenlenmiştir).
0.27.10 Bölüm 9: Yöntemler
"Yöntemler" Bölümü’nde, programlamada altyordamların ayrıntılarını bileceğiz. Bu
altyordamlara C# dilinde yöntemler deniyor. Ne zaman ve neden yöntemlerin
kullanılacağını açıklayacağız; yöntemlerin nasıl bildirileceğini göstereceğiz ve bir yöntemin
imzası nedir açıklayacağız. Özel bir yöntemi nasıl oluşturacağımızı ve daha sonra
kullanmak için nasıl çağrılacağını öğreneceğiz ve yöntemlerde parametreleri nasıl
kullanacağımızı ve bir yöntemden sonuç döndürmeyi göstereceğiz. Son olarak,
C# ile Bilgisayar Programlama Temelleri
29
yöntemler ile çalışırken bazı yerleşik uygulamaları tartışacağız. Tüm bunlar detaylı bir
şekilde açıklanan örneklerle ve ekstra alıştırmalar ile pekiştirilmiş olacak.
Radoslav Todorov ve Nikolay Vasilev tarafından düzenlenen bölüm Yordan Pavlov
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Nikolay Vasilev tarafından yazılmış çalışmalarına dayanmaktadır. Ivaylo Dyankov
tarafından İngilizce’ye çevrilmiştir (Vladimir Amiorkov ve Franz Fischbach tarafından
düzenlenmiştir).
0.27.11 Bölüm 10: Özyineleme
"Özyineleme" Bölümü’nde, özyineleme ve uygulamalarını tanıtacağız. Güçlü bir
programlama tekniği olan özyinelemeyi kullanan bir yöntem kendi kendisini çağırır.
Özyineleme sayesinde kolayca farklı yapılandırma kombinasyonlarını çıkarabileceğimiz
karmaşık kombinasyon problemlerini çözebiliriz. Özyinelemenin doğru ve yanlış
kullanımlarından pek çok örnek göstereceğiz ve sizi bunların nasıl yararlı olabileceğine
ikna edeceğiz.
Svetlin Nakov tarafından düzenlenen bölüm Radoslav Ivanov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Radoslav Ivanov ve Svetlin
Nakov tarafından yazılmış çalışmalarına dayanmaktadır. Vasya Stankova tarafından
İngilizce’ye çevrilmiştir (Yoan Krumov tarafından düzenlenmiştir).
0.27.12 Bölüm 11: Nesneleri Oluşturmak ve Kullanmak
"Nesneleri Oluşturmak ve Kullanmak" Bölümü’nde, nesne yönelimli programlamanın
temel kavramlarını öğreneceğiz – sınıflar ve nesneler – ve .NET Platformu’nun standart
kütüphanelerinden sınıfları nasıl kullanacağımızı açıklayacağız. Bazı sık kullanılan
sistem sınıfları üzerinde duracağız ve bunların örnekleri (nesneleri) nasıl oluşturacağınızı
ve kullanacağınızı göstereceğiz. Bir nesnenin özelliklerine nasıl erişileceğini,
kurucuların nasıl çağrılacağını ve sınıflarda statik alanlar ile nasıl çalışılacağını
tartışacağız. Son olarak, "ad alanları" üzerinde odaklanacağız – bize nasıl yardımcı
olurlar, nasıl dahil edilir ve nasıl kullanılırlar.
Stefan Staev tarafından düzenlenen bölüm Teodor Stoev tarafından yazılmıştır. Tüm
bölümün içeriği "Java ile Programlamaya Giriş" kitabının Teodor Stoev ve Stefan Staev
C# ile Bilgisayar Programlama Temelleri
30
tarafından yazılmış çalışmalarına dayanmaktadır. Vasya Stankova tarafından İngilizce’ye
çevrilmiştir (Todor Mitev tarafından düzenlenmiştir).
0.27.13 Bölüm 12: Ayrıksı Durum İşleme
"Ayrıksı Durum İşleme" Bölümü’nde, nesne yönelimli programlama ve özellikle C#
dilindeki ayrıksı durumları tanıyacaksınız. try-catch cümlesini kullanarak ayrıksı
durumları nasıl yakalayacağınızı, çağrılan yöntemlere onları nasıl geçireceğinizi ve
throw deyimini kullanarak standart, özel veya yakalanan ayrıksı durumları nasıl
atacağınızı öğreneceksiniz. Kullanımlarına dair örnekler vereceğiz, ayrıksı durum
türlerine ve .NET Platformu’nda oluşturulan ayrıksı durum hiyerarşisine bakacağız.
Son olarak, ayrıksı durumları kullanmanın avantajlarına ve bunların belirli durumlara nasıl
uygulanacağına bakacağız.
Radoslav Kirilov tarafından düzenlenen bölüm Mihail Stoynov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Luchesar Cekov, Mihail
Stoynov ve Svetlin Nakov tarafından yazılmış çalışmalarına dayanmaktadır. Dimitar
Bonev ve George Todorov tarafından İngilizce’ye çevrilmiştir (Doroteya Agayna
tarafından düzenlenmiştir).
0.27.14 Bölüm 13: Dizeler ve Metin İşleme
"Dizeler ve Metin İşleme" Bölümü’nde, dizeleri tanıtacağız: C# dilinde nasıl uygulandığını
ve metin içeriğini nasıl işleyebileceğimizi. Metin işlemek için farklı yöntemler üzerinde
ayrıntılı olarak duracağız; ve geçirilen parametrelere göre alt dizeleri ayıklamayı,
anahtar kelimeler için nasıl arama yapılacağını, bunun yanı sıra ayırıcı karakterleri
kullanarak bir dizenin nasıl bölüneceğini öğreneceğiz. Düzenli ifadeler hakkında
yararlı bilgiler vereceğiz ve belirli bir örüntü ile eşleşen veriyi nasıl ayıklayacağımızı
öğreneceğiz. Son olarak, konsolda metin içeriğinin daha şık ve sıkı biçimlendirmesini
elde etmek için gerekli yöntemler ve sınıflara, sayılar ve tarihlerin baskısını almak için
çeşitli yollara bir göz atacağız.
Radoslav Todorov tarafından düzenlenen bölüm Veselin Georgiev tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Mario Peshev tarafından
yazılmış çalışmalarına dayanmaktadır. Vesselin Georgiev tarafından İngilizce’ye
çevrilmiştir (Todor Mitev ve Vladimir Amiorkov tarafından düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
31
0.27.15 Bölüm 14: Sınıfları Tanımlamak
"Sınıfları Tanımlamak" Bölümü’nde, özel sınıfları nasıl tanımlayabileceğimizi ve bir
sınıfın elemanlarının neler olduğunu göstereceğiz. Sınıfların veri alanlarını,
kurucularını ve özelliklerini bildirmeyi öğreneceğiz ve yöntemin ne olduğunu yine
hatırlayacağız, ancak yöntemler ve bunların erişim niteleyicileri hakkındaki bilgimizi
genişleteceğiz. Kurucuların özellikleri üzerinde odaklanacağız ve program nesnelerinin
yığın (dinamik bellek) içinde nasıl var olduklarını ve alanlarının nasıl ilk değer atayarak
başlatıldığını detaylı olarak açıklayacağız. Son olarak, sınıfın statik elemanlarının ne
olduğunu – veri alanları (sabitler dahil), özellikler ve yöntemleri – ve bunların nasıl
kullanılacağını açıklayacağız. Bu bölümde, genel özellikleri olan tipleri, dökümlü tipleri
ve iç içe sınıfları da tanıtacağız.
Bu bölüm Nikolay Vasilev, Svetlin Nakov, Mira Bivas ve Pavlina Hadjieva
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Nikolay Vasilev tarafından yazılmış çalışmalarına dayanmaktadır. Radoslav Todorov, Yoan
Krumov, Teodor Rusev ve Stanislav Vladimirov tarafından İngilizce’ye çevrilmiştir
(Vladimir Amiorkov, Pavel Benov ve Nencho Nenchev tarafından düzenlenmiştir). Bu
bölüm kitaptaki en geniş bölümdür, yani sizin için yüksek kalite standardında
hazırlanması için birçok yazar katkıda bulunarak üzerinde çalıştı.
0.27.16 Bölüm 15: Metin Dosyaları
"Metin Dosyaları" Bölümü’nde .NET Platformu’ndaki metin dosyaları ile çalışmayı
tanıtacağız. Bir dosyayı kesintisiz olarak iletmenin ne olduğunu, amacını ve nasıl
kullanıldığını açıklayacağız. Bir metin dosyasının ne olduğunu ve metin dosyalarındaki
verilerin nasıl okunacağını ve yazılacağını açıklayacağız ve metin dosyaları ile
çalışırken özel durumları yakalamanın ve işlemenin en iyi uygulamalarını ayrıntılı olarak
sunacağız. Doğal olarak, tüm bunları bir sürü örnekler ile uygulayarak görselleştireceğiz
ve göstereceğiz.
Stanislav Zlatinov tarafından düzenlenen bölüm Radoslav Kirilov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Danail Alexiev tarafından
yazılmış çalışmalarına dayanmaktadır. Nikolay Angelov tarafından İngilizce’ye çevrilmiştir
(Martin Gebov tarafından düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
32
0.27.17 Bölüm 16: Doğrusal Veri Yapıları
"Doğrusal Veri Yapıları" Bölümü’nde, programlamada bazı temel veri gösterimlerini ve
doğrusal veri yapılarını tanıtacağız, çünkü çoğu kez belirli bir sorunu çözmek amacıyla,
bir dizi eleman ile çalışmamız gerekir. Örneğin, bu kitabı okumak için ardışık olarak her
sayfayı okumak zorundayız, yani sayfaları oluşturan her bir elemanı atlamadan dikkatle
incelemek zorundayız. Belirli bir problem için bazı veri yapılarının diğerine göre nasıl daha
verimli ve kullanışlı olabileceğini göreceğiz. Sonra "liste", "yığıt" ve "kuyruk" doğrusal
yapılarını ve onların uygulamalarını inceleyeceğiz ve bu yapıların bazı uygulamalarının
detaylarını tanıyacağız.
Dilyan Dimitrov ve Svetlin Nakov tarafından düzenlenen bölüm Tsvyatko Konov
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Tsvyatko Konov ve Svetlin Nakov tarafından yazılmış çalışmalarına dayanmaktadır. Vasya
Stankova tarafından İngilizce’ye çevrilmiştir (Ivaylo Gergov tarafından düzenlenmiştir).
0.27.18 Bölüm 17: Ağaçlar ve Grafikler
"Ağaçlar ve Grafikler" Bölümü’nde, ağaç-benzeri diye anılan veri yapılarına, yani
ağaçlara ve grafiklere bakacağız. Bu yapıların özelliklerinin bilinmesi modern
programlama için önemlidir. Bu yapıların her biri gerçek hayat problemlerinin
modellenmesi ve onların yardımı ile verimli olarak çözülebilmesi için kullanılmaktadır.
Ağaç-benzeri veri yapılarının ne olduğunu ayrıntılarıyla inceleyeceğiz ve onların birincil
avantajları ve dezavantajlarını göstereceğiz. Aynı zamanda, onların pratik kullanımını
gösteren örnek uygulamalar ve alıştırmalar vereceğiz. Ayrıca, ikili ağaçlar, ikili arama
ağaçları ve dengeli ağaçları ve daha sonra "grafik" veri yapısını, grafiklerin türlerini
ve bunların kullanımını dikkatle inceleyeceğiz. .NET Platformu’nun hangi parçalarının ikili
arama ağaçlarından faydalandığını göstereceğiz.
Iliyan Murdanliev ve Svetlin Nakov tarafından düzenlenen bölüm Veselin Kolev
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Veselin Kolev tarafından yazılmış çalışmalarına dayanmaktadır. Kristian Dimitrov ve Todor
Mitev tarafından İngilizce’ye çevrilmiştir (Nedjaty Mehmed ve Dyanko Petkov tarafından
düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
33
0.27.19 Bölüm 18: Sözlükler, Karma Tabloları ve Kümeler
"Sözlükler, Karma Tabloları ve Kümeler" Bölümü’nde, sözlük ve kümeler gibi daha
karmaşık veri yapılarını, buna ilaveten karma tablolar ve dengeli ağaçları kullanarak
bunların uygulamaları analiz edeceğiz. Karma tablolarının ve karma fonksiyonunun ne
demek olduğunu ve neden programlamanın o kadar önemli parçaları olduğunu
detaylarıyla açıklayacağız. “Çarpışmalar” kavramını ve karma tabloları uygularken
çarpışmaların nasıl oluşabileceklerini tartışacağız. Onları çözmek için çeşitli yaklaşımlar
önereceğiz. “Küme” soyut veri yapısına bakacağız ve bir sözlük yada dengeli ağaç ile
nasıl gerçekleştirilebileceğini açıklayacağız. Günlük pratikte bu veri yapılarının
uygulamalarını gösteren örnekler vereceğiz.
Tsvyatko Konov ve Svetlin Nakov tarafından düzenlenen bölüm Mihail Valkov tarafından
yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Vladimir Tsanev
(Tsachev) tarafından yazılmış çalışmalarına dayanmaktadır. George Mitev ve George K.
Georgiev tarafından İngilizce’ye çevrilmiştir (Martin Gebov ve Ivaylo Dyankov tarafından
düzenlenmiştir).
0.27.20 Bölüm 19: Veri Yapıları ve Algoritma
Karmaşıklığı
"Veri Yapıları ve Algoritma Karmaşıklığı" Bölümü’nde, şimdiye kadar öğrendiğimiz veri
yapılarını, temel işlemler (ekleme, arama, silme, vb.) için performanslarına dayalı
olarak karşılaştıracağız. Belirli durumlara en uygun veri yapıları için öneriler vereceğiz. Bir
kümeyi, bir karma tablo, bir dizi, bir dinamik dizi, bir karma tablo veya dengeli
ağaç kullanarak uygulamanın ne zaman daha iyi ve tercih edilebilir olduğunu
açıklayacağız. Bu yapıların her biri için .NET Platformu’nda bir uygulama vardır. Biz
sadece belirli bir veri yapısını ne zaman kullanmamız gerektiğini öğrenmek zorundayız ki
böylece verimli ve güvenilir bir kaynak kodu yazabilelim.
Veselin Kolev tarafından düzenlenen bölüm Nikolay Nedyalkov ve Svetlin Nakov
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Svetlin Nakov ve Nikolay Nedyalkov tarafından yazılmış çalışmalarına dayanmaktadır.
George Halachev ve Tihomir Iliev tarafından İngilizce’ye çevrilmiştir (Martin Yankov
tarafından düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
34
0.27.21 Bölüm 20: Nesne Yönelimli Programlamanın
İlkeleri
"Nesne Yönelimli Programlamanın İlkeleri" Bölümü’nde, nesne yönelimli programlamanın
(OOP) ilkelerini tanıtacağız: sınıf kalıtımı, arayüzlerin gerçekleştirimi, veri ve davranış
soyutlama, veri sarmalama ve uygulama detaylarını gizleme, çokbiçimlilik ve sanal
yöntemler. Uyum ve bağlaşım ilkelerini detaylı olarak açıklayacağız. Kısaca nesne
yönelimli modellemeyi ve belirli bir iş problemine dayanan nesne modeli oluşturmayı da
açıklayacağız ve nesne yönelimli modellemede UML ve rolünü tanıyacağız. Son
olarak, kısaca tasarım desenlerini tartışacağız ve pratikte sık kullanılan tasarım desenleri
için örnekler vereceğiz.
Mihail Valkov tarafından düzenlenen bölüm Mihail Stoynov tarafından yazılmıştır. Tüm
bölümün içeriği "Java ile Programlamaya Giriş" kitabının Mihail Stoynov tarafından
yazılmış çalışmalarına dayanmaktadır. Vasya Stankova ve Momchil Rogelov tarafından
İngilizce’ye çevrilmiştir (Ivan Nenchovski tarafından düzenlenmiştir).
0.27.22 Bölüm 21: Yüksek Kalite Programlama Kodu
"Yüksek Kalite Programlama Kodu" Bölümü’nde, yüksek kaliteli programlama kodu
yazmanın temel kurallarına göz atacağız. Program elemanları (değişkenler, yöntemler,
sınıflar ve diğerleri) için adlandırma kuralları, biçimlendirme ve kod yerleşimi
yönergeleri, sınıf ve yöntemleri yüksek kaliteli oluşturmak için en iyi uygulamalar, ve
yüksek kaliteli kod belgelemenin ilkeleri üzerinde duracağız. Yüksek kaliteli ve düşük
kaliteli birçok kod örnekleri verilecektir. Çalışma esnasında, bir tümleşik geliştirme
ortamının, bazı işlemleri (biçimlendirme ve mevcut kodun yeniden yapılandırılması
gibi) otomatik hale getirmek için gerektiğinde nasıl kullanılacağı açıklanacaktır. Otomatik
test yapmak için endüstriyel bir yöntem olarak bilinen birim testleri de ele alınacaktır.
Pavel Donchev tarafından düzenlenen bölüm Mihail Stoynov ve Svetlin Nakov
tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının
Mihail Stoynov, Svetlin Nakov ve Nikolay Vasilev tarafından yazılmış çalışmalarına
dayanmaktadır. Blagovest Buyukliev tarafından İngilizce’ye çevrilmiştir (Dyanko Petkov,
Mihail Stoynov ve Martin Yankov tarafından düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
35
0.27.23 Bölüm 22: Lambda İfadeleri ve LINQ
"Lambda İfadeleri ve LINQ" Bölümü’nde, C# dilinin daha gelişmiş ve ileri yeteneklerinden
bazılarını tanıtacağız. Daha kesin olmak gerekirse, lambda ifadeleri ve LINQ kullanarak
koleksiyonlara sorguların nasıl yapıldığının açıklığa kavuşturulması için özel dikkat
vereceğiz. Zaten yaratılmış sınıflara uzantı yöntemlerini kullanarak nasıl işlevsellik
ekleneceğini açıklayacağız. Anonim türleri tanıtacağız ve kısaca onların doğasını ve
kullanımını tanımlayacağız. Lambda ifadeleri de tartışacağız ve pratikte yerleşik lambda
fonksiyonlarının çoğunun nasıl çalıştığını göstereceğiz. Daha sonra C# parçası olan LINQ
sözdizimi içine dalacağız. ne olduğunu, nasıl çalıştığını ve bunu kullanarak ne tür sorgular
yapabileceğimizi öğreneceğiz. Son olarak, LINQ anahtar kelimelerini tartışacağız, onların
anlamı ve birçok örnek ile yeteneklerini ortaya koyacağız.
Veselin Kolev tarafından düzenlenen bölüm Nikolay Kostov tarafından yazılmıştır.
Nikolay Kostov tarafından İngilizce’ye çevrilmiştir (Zhasmina Stoyanova ve Mihail
Stoynov tarafından düzenlenmiştir).
0.27.24 Bölüm 23: Problem Çözme Metodolojisi
"Problem Çözme Metodolojisi" Bölümü’nde, programlama problemlerinin çözümü için
tavsiye edilebilir bir yaklaşımı tartışacağız ve biz somut örnekler ile göstereceğiz.
Problemleri çözerken izlememiz gereken mühendislik ilkelerini (büyük ölçüde matematik,
fizik ve diğer disiplinlerdeki sorunlara uygulanan) görüşeceğiz ve uygulama halinde onları
göstereceğiz. Birkaç örnek problem çözerken geçmemiz gereken adımları anlatacağız ve
bu adımları takip etmezsek yapabileceğimiz hataları göstereceğiz. Problem çözmenin
genellikle atlanan bazı önemli adımlarını (örneğin test etmek gibi) dikkate alacağız.
Veselin Georgiev tarafından düzenlenen bölüm Svetlin Nakov tarafından yazılmıştır.
Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Svetlin Nakov tarafından
yazılmış çalışmalarına dayanmaktadır. Ventsi Shterev ve Martin Radev tarafından
İngilizce’ye çevrilmiştir (Tihomir Iliev ve Nedjaty Mehmed tarafından düzenlenmiştir).
C# ile Bilgisayar Programlama Temelleri
36
0.27.25 Bölüm 24, 25, 26: Örnek Programlama Sınavı
"Örnek Programlama Sınavı (Konu # 1, Konu # 2 ve Konu # 3)" Bölümü’nde, üç örnek
programlama sınavından dokuz örnek problemin açıklamalarına bakacağız ve
çözüm önereceğiz. Onları çözme yolunda, "Problem Çözme Metodolojisi"nde açıklanan
metodolojiyi uygulamaya koyacağız.
Radoslav Todorov, Radoslav Ivanov ve Teodor Stoev tarafından düzenlenen bölüm
Stefan Staev, Yosif Yosifov ve Svetlin Nakov tarafından yazılmıştır. Tüm bölümün
içeriği "Java ile Programlamaya Giriş" kitabının Stefan Staev, Svetlin Nakov, Radoslav
Ivanov ve Teodor Stoev tarafından yazılmış çalışmalarına dayanmaktadır. Stanislav
Vladimirov, Ivaylo Gergov, Ivan Nenchovski ve Ivaylo Gergov tarafından İngilizce’ye
çevrilmiştir (Tihomir Iliev ve Nedjaty Mehmed tarafından düzenlenmiştir).
0.27.29 Bölüm 28: Sonuç
Sonuç olarak uzman bir yazılım mühendisi olarak bu kitaptan sonraki gelişiminize
devam etmek için daha fazla bilgi vereceğiz. Telerik Yazılım Akademisi'nde –
Bulgaristan'da yazılım geliştirme uzmanları için en büyük eğitim merkezinde – verilen
ücretsiz kurslardan, nasıl uygulanacağından, ne öğreneceğinizden, nasıl bir kariyer yolu
seçeceğinizden ve diğer birkaç kaynaktan söz edeceğiz.
Bölüm Svetlin Nakov tarafından yazılmıştır. Ivan Nenchovski tarafından İngilizce’ye
çevrilmiştir (Svetlin Nakov tarafından düzenlenmiştir).
Download

C# İLE BİLGİSAYAR PROGRAMLAMA TEMELLERİ