C# Dersleri – 2: Programcılığa giriş

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
kwamanda
Süper Üye
Katılım
19 Eki 2016
Mesajlar
1,118
Çözümler
18
Tepki puanı
450
Ödüller
10
9 HİZMET YILI
Önceki yazımda C# dilinin temelinde yer alan .NET çatısının yapısını incelemiş, 2000’li yıllardan sonraki tarihi süreci sizlere aktarmıştım. Söz dizimi C/C++ dillerine benzeyen C# özellikle bu dillerden birini veya JAVA kullanmış deneyimli programcılar için alışması çok kolay bir dil. Bu sebeple daha önceden farklı dillerde program yazmış okurlarımız söz dizimine alıştıktan sonra .NET çatısının bizlere sunduğu kütüphaneleri kullanarak farklı uygulamalar geliştirmeye kolayca başlayabilirler. Ancak biz yazı dizimizde programlama dünyasına yeni adım atacak okurlarımızı da düşünerek sayfalarımızda programlama dilinin detaylarına da değinmeye çalışacağız.

İlerideki eğitimlerimizde Windows Forms uygulamaları geliştirerek grafik arayüze sahip (GUI – Graphical User Interface) programların C# kullanarak ne kadar kolay hazırlayabileceğimize şahit olacağız. Ancak bu safhaya gelmeden önce temel programlama içeriğini işlerken genelde konsol uygulamaları üzerinden örnekler geliştireceğiz. DOS işletim sistemine aşina okurlarımızı eski zamanlara götürecek bu tür uygulamalar Windows Komut İstemi altında çalışan temel projeler. Eğitimlerimizi takip edenlerin hatırlayacağı gibi, Visual Studio altında yeni proje oluştururken “Console Application”’u seçerek bu türde uygulama hazırlamaya başlayabiliriz. Uygulamamızı derlemeden önce Ctrl+F5 tuşlarına basarak çalıştırabiliyoruz. Geliştirme ortamımızı anlattıktan sonra C# ile program yazmaya hazırız demektir.
İlk yazımızda C#’ın bir süslü parantez ( { } )  dili olduğundan bahsetmiştik. Aslında söylemek istediğimiz bu parantezler arasında kod blokları oluşması, fonksiyon ve kontrollerin içerisindeki kodların yine bu parantezler arasında yer almasıdır. Bu kod blokları arasında gerçekleştireceğimiz bütün eylemlerin sonuna noktalı virgül “;” koyarak komutu tamamlamayı unutmamalıyız. Yazdığımız her program çalışmak için “Main” olarak isimlendirilen ana fonksiyona başvurur. Yeni proje açtığınızda oluşturulan Program.cs dosyası içerisindeki Main fonksiyonu altındaki kod bloğunun sahip olduğu süslü parantezler ( { } ) arasına hazırladığımız örnek kodları yazabilirsiniz. Bunun yanında, derleyici tarafından dikkate alınmayan, sadece not tutmak için kullanılan yorum satırları oluşturmak için tek satırlık // karakterlerini kullanabilir, ya da satır sınırlaması olmayan yorum bölümlerini /* ve */ arasına metin yazarak oluşturabilirisiniz.
DEĞİŞKENLER
Matematik derslerinde denklemler ile hayatımıza giren değişken ifadesi, programlamada en çok kullandığımız yapıların başında geliyor. Belirli bir değeri bilgisayarın belleğinde (Random Access Memory – RAM) tutmak istediğimizde bir değişken tanımlıyor ve yeri geldiğinde tanımladığımız bu değişkenin değerini istediğimiz gibi değiştirebiliyoruz. Mantıksal, sayısal ve karaktersel değerler alan değişkenler için bellekte sabit bir yer ayrılmakta. Ancak bir değişken kullanıldığı yere göre daha az veya fazla bellek alanına ihtiyaç duyabilir. Örneğin bellekte tutulan sayısal değerleri düşünün. İkili sistem ile bellekte tutulan sayı değerleri, sayının büyüklüğüne göre farklı bellek alanı işgal edecektir. Bu durumda bir basamaklı bir sayı için en fazla 5 bitlik bir alan ayrılması yeterliyken, basamak sayısı arttıkça ihtiyaç duyulan bellek miktarı da artmakta. Eğer biz bir değişkende tek basamaklı bir sayı tutacaksak, o sayı için bellekte 32 bitlik bir alan ayırmamız halinde belleği etkin kullanmamış oluruz. Etkin bellek kullanımını sağlamak amacıyla programlama dilleri içerisinde farklı boyutlarda değişken türleri mevcuttur.
Tablo 1’de (yazının sonunda) görebileceğiniz değişken türleri arasında sayı değeri tutan tiplere bakacak olursanız “short” tipi bir değişken 16 bit olup en fazla 5 basamaklı bir sayı tutabilirken, “integer” 10, “long” 19 basamaklı sayılara kadar veri saklayabilir. Bu sayılar negatif değer alabiliyorken, işareti olmayan “unsigned” tipler sadece pozitif değer alabilmekte, böylelikle daha fazla basamaklı sayıları aynı miktarda bellek harcayarak tutabilmektedir (uint, ulong gibi). Sayılar konusunda diğer bir önemli nokta, ondalık değerlere dikkat etmenizin gerekmesi. Ondalık değerleri bellekte tutmak için, boyutları değişen “float” ve “double” tipi değişkenler kullanıyoruz.
Mantıksal değişkenler ise, sadece doğru (True)  ya da yanlış (False) değerini tutabilen 1-bit boyutunda veri tipleridir. Yine ortaöğrenim sırasında mantık derslerinden aşina olduğunuzu düşündüğüm bu yapılar, Boolean değişkenler olarak adlandırılır. Tutulan bu mantıksal değerler, program akışında gidilen yolu değiştiren koşullar içerisinde kullanılır. Diğer dillerden farklı olarak bu değişkenleri tanımlamak için kısaca “bool” yazıyoruz. Ayrıca true ve talse değerlerinin baş harflerinin küçük olması önemli.
qE7O1q.png

CHAR  vs. STRING

Karakter tutan “char” veri tipi, C/C++ zamanından günümüzü yapısını bozmadan gelmeyi başarmış. Öncelikle sadece ikili tabanda sayı saklayabilen bilgisayar belleklerinin karakterleri nasıl hafızasında tutabildiğinden bahsedelim. Noktalama işaretleri, rakamlar ve harflerden oluşan karakter dizisi elemanları, ASCII kodu adı verilen bir sayıya eşitlenmiştir. Büyük ve küçük harfler için farklı olmak üzere bütün bu elemanların 
Bağlantıları görmek için lütfen Giriş Yap
adresinde inceleyebileceğiniz gibi bir sayı değeri vardır. İşte char veri tipi, programcının kendine atadığı bir karakteri bu sayı değerine eşitleyerek bellekte saklar. Burada programcı olarak sizin yapmanız gereken, kod içerisinde tanımladığınız değişkenin karakter olduğunu belirtmek için onu tek tırnak ( ‘’ ) içerisine almanız.

Ancak tek karakterin bellekte saklanması her zaman sizin için yeterli değildir. Bir kelime ya da cümleyi değişken içerisinde saklamak istediğinizde eski programlama dillerinde karakter dizileri oluşturmanınapıyorlar. Böylelikle belirli bir metni tırnak işaretleri (“”) arasına yazarak değişken içerisinde saklayabiliyorsunuz. Aklınıza bu metin içerisinde tırnak işareti kullanmak geldiyse, onun için kaçış işlemi uygulamanız gerekmekte. String değişkenlerine özgü bu işlemde kullanmanız sakıncalı olan karakterlerin başına “\” işareti koyarak metnin içerisinde bulunmasını sağlayabilirsiniz. Mevcut kaçış işlemlerinin yapılabildiği karakterler: ‘ (tek tırnak), “(çirt tırnak), \(ters eğik çizgi), n (yeni satır), t (sekme). Aslında birçok char değişkeninin birleşiminden oluşan string, değişken gibi kullanılsa da bir veri yapısından ibarettir. Bu yüzden string değişkenlerinin bellekte kaplayacağı sabit bir boyut bulunmaz.
9GkZXo.png

Tablo 1:

Değişken Tipi
Boyut
sbyte
8-bit (1-byte)
short
16-bit (2-byte)
int
32-bit (4-byte)
long
64-bit (8-byte)
byte
8-bit (1-byte)
ushort
16-bit (2-byte)
uint
32-bit (4-byte)
ulong
64-bit (8-byte)
decimal
128-bit (16-byte)
float
32-bit (4-byte)
double
64-bit (8-byte)
object
sınırsız
bool
8-bit (1-byte)
char
16-bit (2-byte)
string
sınırsız

Tablo 2:
Kod:
01

Kod:
static
[font=Consolas,][font=Consolas,]
 
[/FONT]
[/FONT]

Kod:
void

 

Kod:
Main(

Kod:
string

Kod:
[] args)

Kod:
02
[font=Consolas,]
 [/FONT]

Kod:
03

Kod:
{

Kod:
04
[font=Consolas,]
 [/FONT]

Kod:
05

Kod:
//Tek satır yorum

Kod:
06
[font=Consolas,]
 [/FONT]

Kod:
07

Kod:
/* Çoklu satır yorum */

Kod:
08
[font=Consolas,]
 [/FONT]

Kod:
09

Kod:
int
[font=Consolas,]
 
[/FONT]

Kod:
sayi1;

Kod:
10
[font=Consolas,]
 [/FONT]

Kod:
11

Kod:
sayi1 = 1;

Kod:
12
[font=Consolas,]
 [/FONT]

Kod:
13

Kod:
int
[font=Consolas,]
 
[/FONT]

Kod:
sayi2 = 10;

Kod:
14
[font=Consolas,]
 [/FONT]

Kod:
15

Kod:
Console.WriteLine(sayi1);

Kod:
16
[font=Consolas,]
 [/FONT]

Kod:
17

Kod:
Console.WriteLine(sayi2);

Kod:
18
[font=Consolas,]
 [/FONT]

Kod:
19

Kod:
double
[font=Consolas,]
 
[/FONT]

Kod:
sayi3 = 10.5;

Kod:
20
[font=Consolas,]
 [/FONT]

Kod:
21

Kod:
double
[font=Consolas,]
 
[/FONT]

Kod:
sayi4 = sayi3;

Kod:
22
[font=Consolas,]
 [/FONT]

Kod:
23

Kod:
Console.WriteLine(sayi3);

Kod:
24
[font=Consolas,]
 [/FONT]

Kod:
25

Kod:
Console.WriteLine(sayi4);

Kod:
26
[font=Consolas,]
 [/FONT]

Kod:
27

Kod:
bool
[font=Consolas,]
 
[/FONT]

Kod:
b = 

Kod:
true

Kod:
;

Kod:
28
[font=Consolas,]
 [/FONT]

Kod:
29

Kod:
Console.WriteLine(b);

Kod:
30
[font=Consolas,]
 [/FONT]

Kod:
31

Kod:
string
[font=Consolas,]
 
[/FONT]

Kod:
isim1;

Kod:
32
[font=Consolas,]
 [/FONT]

Kod:
33

Kod:
isim1 = 

Kod:
"Merhaba, "

Kod:
;

Kod:
34
[font=Consolas,]
 [/FONT]

Kod:
35

Kod:
string
[font=Consolas,]
 
[/FONT]

Kod:
isim2 = 

Kod:
"PC Magazine"

Kod:
;

Kod:
36
[font=Consolas,]
 [/FONT]

Kod:
37

Kod:
Console.WriteLine(isim1);

Kod:
38
[font=Consolas,]
 [/FONT]

Kod:
39

Kod:
Console.WriteLine(isim2);

Kod:
40
[font=Consolas,]
 [/FONT]

Kod:
41

Kod:
isim2 = 

Kod:
"yigit"

Kod:
;

Kod:
42
[font=Consolas,]
 [/FONT]

Kod:
43

Kod:
Console.WriteLine(

Kod:
"yeni isim: "
[font=Consolas,]
 
[/FONT]

Kod:
+ isim2);

Kod:
44
[font=Consolas,]
 [/FONT]

Kod:
45

Kod:
}

Tablo 3:
Kod:
01

Kod:
static
[font=Consolas,][font=Consolas,]
 
[/FONT]
[/FONT]

Kod:
void

 

Kod:
Main(

Kod:
string

Kod:
[] args)

Kod:
02
[font=Consolas,]
 [/FONT]

Kod:
03

Kod:
{

Kod:
04
[font=Consolas,]
 [/FONT]

Kod:
05

Kod:
int
[font=Consolas,]
 
[/FONT]

Kod:
a = 5;

Kod:
06
[font=Consolas,]
 [/FONT]

Kod:
07

Kod:
int
[font=Consolas,]
 
[/FONT]

Kod:
b = 10;

Kod:
08
[font=Consolas,]
 [/FONT]

Kod:
09

Kod:
int
[font=Consolas,]
 
[/FONT]

Kod:
c = ((a * 2 - 2) - 1) + ((b * 3) % 5) / 3 ;

Kod:
10
[font=Consolas,]
 [/FONT]

Kod:
11

Kod:
Console.WriteLine(c);

Kod:
12
[font=Consolas,]
 [/FONT]

Kod:
13

Kod:
string
[font=Consolas,]
 
[/FONT]

Kod:
s1 = 

Kod:
"PC Magazine."

Kod:
;

Kod:
14
[font=Consolas,]
 [/FONT]

Kod:
15

Kod:
string
[font=Consolas,]
 
[/FONT]

Kod:
s2 = 

Kod:
"Merhaba, "

Kod:
;

Kod:
16
[font=Consolas,]
 [/FONT]

Kod:
17

Kod:
string
[font=Consolas,]
 
[/FONT]

Kod:
s3 = s2 + s1;

Kod:
18
[font=Consolas,]
 [/FONT]

Kod:
19

Kod:
Console.WriteLine(s3);

Kod:
20
[font=Consolas,]
 [/FONT]

Kod:
21

Kod:
Console.WriteLine(

Kod:
"Yigit\n\n\nKiran"

Kod:
);

Kod:
22
[font=Consolas,]
 [/FONT]

Kod:
23

Kod:
}

Tablo 4:
Kod:
01

Kod:
static
[font=Consolas,][font=Consolas,]
 
[/FONT]
[/FONT]

Kod:
void

 

Kod:
Main(

Kod:
string

Kod:
[] args)

Kod:
02
[font=Consolas,]
 [/FONT]

Kod:
03

Kod:
{

Kod:
04
[font=Consolas,]
 [/FONT]

Kod:
05

Kod:
var metin = 

Kod:
"Merhaba, PC Magazine"

Kod:
;

Kod:
06
[font=Consolas,]
 [/FONT]

Kod:
07

Kod:
var sayi = 4;

Kod:
08
[font=Consolas,]
 [/FONT]

Kod:
09

Kod:
var ondalikSayi = 4.5;

Kod:
10
[font=Consolas,]
 [/FONT]

Kod:
11

Kod:
var boolean = 

Kod:
true

Kod:
;

Kod:
12
[font=Consolas,]
 [/FONT]

Kod:
13

Kod:
Console.WriteLine(metin);

Kod:
14
[font=Consolas,]
 [/FONT]

Kod:
15

Kod:
Console.WriteLine(sayi);

Kod:
16
[font=Consolas,]
 [/FONT]

Kod:
17

Kod:
Console.WriteLine(ondalikSayi);

Kod:
18
[font=Consolas,]
 [/FONT]

Kod:
19

Kod:
Console.WriteLine(boolean);

Kod:
20
[font=Consolas,]
 [/FONT]

Kod:
21

Kod:
}
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst