C# Değişkenler (Variables)

C#

Zonguldak Bülent Ecevit Üniversitesi | Öğr.Gör.Tahsin ÇİLOĞLU

🤔 Düşün & Tartış

Programlama değişkenleri hakkında düşündürücü sorular ve tartışma konuları...

Rastgele bir soru görmek için aşağıdaki butona tıklayın...

C# Nedir?

C#, Microsoft tarafından geliştirilen, modern, nesne yönelimli ve tip güvenli bir programlama dilidir.

Masaüstü, mobil, web, oyun ve IoT gibi çok çeşitli platformlarda uygulama geliştirmek için kullanılır.

C# Programlama Dili ile Neler Yapılır?

🌐 Web

Profesyonel ve dinamik siteler

📱 Mobil

iOS ve Android uygulamaları

🎮 Oyun

Unity ile oyun geliştirme

⚙️ DLL

Dinamik kütüphaneler

1. Web Geliştirme

.NET Platformu

C#, web geliştirmede oldukça popülerdir. .NET platformu üzerinde profesyonel ve dinamik web siteleri geliştirmek için kullanılır.

Avantajı:
C# ile oluşturulan web hizmetleri hızlı ve güvenilirdir.

2. Mobil Uygulama Geliştirme

Tek bir dil ile tüm platformlara uygulama geliştirmek mümkün!

Xamarin Platformu

Xamarin kullanarak C# ile iOS, Android ve Windows için modern mobil uygulamalar geliştirebilirsiniz.

3. Oyun Geliştirme

Oyun dünyasının en popüler dillerinden biri C#'tır.

Unity Oyun Motoru

770 milyondan fazla kullanıcısı olan Unity, C# ile sorunsuz çalışır.

Bağımlılık yapan, popüler oyunlar geliştirmek istiyorsanız C# öğrenmek kesinlikle doğru bir seçenektir.

4. DLL Yazma

DLL Nedir?

Dinamik Bağlantı Kitaplığı (Dynamic Link Library)

Aynı anda birden fazla program tarafından kullanılabilen işlevler ve kodlar içeren kitaplıklardır. DLL dosyalarını C# ile kodlamak mümkündür.

Neden C# Tercih Edilir?

Yeni bir dil öğrenmeden önce onu diğerlerinden ayıran özellikleri bilmek önemlidir.

✅ Kolay

Öğrenmesi nispeten kolaydır.

🔓 Açık Kaynak

Esnek ve geliştirilebilir.

🚀 Hızlı

Yüksek performanslı.

C# Avantajları: Öğrenme Kolaylığı

Debugger Desteği

"Syntax" hatalarının kolayca tespitini yapar. Sorunlar hakkında endişelenmenize gerek kalmaz.

Zengin Kütüphaneler

Kod yazmayı daha hızlı ve kolay hale getiren hazır kitaplıkları mevcuttur.

Sıfırdan öğrenenler için bile son derece erişilebilir bir dildir.

C# Avantajları: Açık Kaynak

C#, açık kaynak kodlu (open source) bir programlama dilidir.

  • Esnek yapıdadır.
  • Herkes tarafından geliştirilebilir.
  • Program geliştirme ve bakım işlemleri daha kolaydır.

C# Avantajları: Hız ve Performans

C# ile hızlı kod yazmak diğer dillere göre daha kolaydır.

Yüksek performans gerektiren uygulamaları hızlı bir şekilde C# ile oluşturabilirsiniz.

C# Geliştiricilerine Talep Artıyor

C# iyi bir kariyer seçimi midir?

📈 Yüksek Talep

Web ve mobil uygulamalara ihtiyaç arttıkça C# geliştiricilerine talep de artıyor.

💼 İş Fırsatları

C# öğrenmek, kariyeriniz boyunca size büyük fayda sağlayacaktır.

Konu: Değişken Nedir?

Değişkenler, programlama dillerinde veri saklamak için kullanılan isimlendirilmiş hafıza alanlarıdır.

  • Bir değişken, belirli bir veri türüne sahip olabilir.
  • Bu veri türü, değişkenin ne tür bilgileri saklayabileceğini belirler.
  • Değişkenler, programın çalışması sırasında farklı değerler alabilir ve bu değerler üzerinde işlemler yapılabilir.

C#’ta Değişken Tanımlama

C# dilinde bir değişken tanımlarken, genellikle şu sözdizimi kullanılır:

tip isim = değer;

tip

Değişkenin veri türünü belirtir (örn: int, double).

isim

Değişkenin adıdır.

değer

Değişkene atanan başlangıç değeridir (isteğe bağlı).

2. C# Değer Tipleri (Value Types)

Değer tipleri bellekte doğrudan değeri saklar.

int

-2 milyar ile +2 milyar arasındaki tam sayı değerlerini saklar. 32-bit (4 Byte) yer kaplar. En sık kullanılan sayısal veri tipidir. Standart tam sayı tipidir. Döngü sayaçlarında ve matematiksel işlemlerde varsayılan olarak tercih edilir.

long

int tipinin yetersiz kaldığı çok büyük tam sayılar için kullanılır. 64-bit (8 Byte) yer kaplar. Sayı çok büyükse sonuna 'L' eklenebilir. T.C. Kimlik No, dosya boyutları (byte) veya zaman damgası (timestamp) gibi int sınırlarını aşan büyük veriler için kullanılır.

short

Küçük aralıktaki (-32,768 ile 32,767) tam sayılar için hafıza dostu bir tiptir. 16-bit (2 Byte) yer kaplar. Bellek tasarrufu sağlamak için küçük döngülerde veya yaş, gün, ay gibi 32.000 sınırını aşmayacak küçük verilerde kullanılır.

float

Ondalıklı (virgüllü) sayılar için kullanılır. Hızlıdır ancak hassasiyeti düşüktür. 4 Byte yer kaplar. Değerin sonuna 'f' harfi konulmalıdır. Oyun motorlarında (Unity gibi) fizik ve grafik hesaplamalarında performansı artırmak için sıkça tercih edilir.

double

Yüksek hassasiyetli ondalıklı sayılar için kullanılır. Varsayılan ondalık tiptir. 8 Byte yer kaplar. Bilimsel hesaplamalarda tercih edilir. C# matematik kütüphanesindeki (Math) fonksiyonların çoğu varsayılan olarak double döndürür.

decimal

Parasal ve finansal veriler için özel olarak tasarlanmıştır. Hata payı en düşüktür. 16 Byte yer kaplar. Değerin sonuna 'm' harfi konulmalıdır. Finansal uygulamalar, muhasebe yazılımları ve kritik parasal hesaplamalar için zorunludur. Yuvarlama hatalarını sıfıra indirir.

bool

Sadece iki ihtimali saklar: 'true' (doğru) veya 'false' (yanlış). Karar yapılarında ve mantıksal kontrollerde kullanılır. Programın akışını kontrol etmek (if-else), döngüleri yönetmek ve durum kontrolü (açık/kapalı, başarılı/başarısız) için kullanılır.

char

Yalnızca tek bir karakteri (harf, rakam, sembol) saklar. Tek tırnak işareti (' ') içinde yazılır. Unicode destekler. Metin şifreleme algoritmalarında, dosya okuma işlemlerinde veya string parçalamada karakter bazlı kontrol için kullanılır.

string

Metin ifadelerini saklamak için kullanılır. Karakterlerin yan yana gelmesiyle oluşur. Çift tırnak (") içinde yazılır. Referans tipidir. C# dilinde en çok kullanılan tiplerden biridir. Metin birleştirme, parçalama ve arama gibi zengin metotlara (Methods) sahiptir.

3. Referans Tipleri (Reference Types)

Referans tipleri bellekte adres (referans) tutar.

object

Tüm veri tiplerini alabilir. Evrensel veri tipidir ancak tür dönüşümü gerektirir. Tüm tiplerin 'atasıdır'. İçerisine her türlü veri atılabilir ancak tür dönüşümü (casting) gerektirdiği için performans maliyeti vardır.

array (Dizi)

Aynı türden birden fazla veriyi tek bir isim altında saklar. İndekslerle erişilir.

1. Dizi (Array) Nedir?

Dizi, aynı türden birden fazla veriyi tek bir değişken adı altında saklamamızı sağlar. Her elemanın bir indeksi (index) vardır ve 0’dan başlar.

2. Dizi Tanımlama Yöntemleri

Diziler farklı yöntemlerle tanımlanabilir: Doğrudan atama, boyut belirterek veya new anahtar kelimesiyle.

3. Dizi Elemanlarına Erişim

Dizinin elemanlarına köşeli parantez [] ve indeks numarası ile erişilir. İndeksler 0'dan başlar.

4. for Döngüsü ile Dizi

Dizinin tüm elemanlarını gezmek için for döngüsü kullanılır. Length özelliği eleman sayısını verir.

5. foreach Döngüsü ile Dizi

foreach döngüsü, diziler üzerinde gezinmenin en kolay ve okunabilir yoludur.

6. Dizi Hesaplamaları (Toplam/Max)

Diziler üzerinde matematiksel işlemler (Toplam, Ortalama, En Büyük/Küçük Bulma) yapılabilir.

7. Kullanıcıdan Veri Alma

Bir döngü kullanarak kullanıcının girdiği verileri diziye kaydedebiliriz.

8. String Dizisi Örneği

Kullanıcıdan öğrenci isimlerini alıp ekrana yazdıran örnek.

9. Çok Boyutlu Diziler (Matris)

Satır ve sütunlardan oluşan, tablo benzeri 2 boyutlu dizilerdir.

10. char Dizisi

char dizileri metinleri karakter bazlı işlemek için kullanılır.

11. Dizi Kopyalama

Array.Copy metodu, bir dizinin içeriğini başka bir diziye hızlıca kopyalar.

class

Nesne yönelimli programlamanın temel yapı taşıdır. Veri (özellikler) ve davranışları (metotlar) bir arada tutar. Referans tipidir.

Nesne Yönelimli Programlama (OOP) Temel Kavramları

1. Encapsulation (Kapsülleme)

Amaç: Veriyi korumak, dış müdahaleyi kontrol etmek.

📌 Gerçek hayat: Bankadaki bakiyeye herkes doğrudan dokunamaz.

2. Inheritance (Kalıtım)

Amaç: Ortak özellikleri tekrar yazmamak.

📌 Gerçek hayat: İnsan da bir canlıdır.

3. Polymorphism (Çok Biçimlilik)

Amaç: Aynı metot, farklı davranış.

📌 Gerçek hayat: Her hayvan ses çıkarır ama sesi farklıdır.

4. Abstraction (Soyutlama)

Amaç: Gereksiz detayı gizlemek.

📌 Gerçek hayat: Arabanın çalışması önemli, motorun içi değil.

2️⃣ YAPICI METOT (CONSTRUCTOR)

Nesne oluşturulurken otomatik çalışan metot.

📌 Avantaj: Nesne boş veya hatalı oluşmaz.

3️⃣ INTERFACE (SÖZLEŞME)

Bir sınıfa “ne yapacağını” zorunlu kılar.

📌 Büyük projelerde olmazsa olmazdır.

4️⃣ COMPOSITION (HAS-A İLİŞKİSİ)

Bir sınıf başka bir sınıfı içerir.

📌 Araba motoru miras almaz, motoru vardır.

var

Derleyicinin değişken tipini otomatik belirlemesini sağlar. Kod yazımını hızlandırır ancak okunabilirlik için dikkatli kullanılmalıdır.

const (Sabit)

Değeri program boyunca değişmeyen sabitleri tanımlar. Derleme zamanında değeri belirlenir ve performans avantajı sağlar.

nullable (?)

Değer tiplerinin null (boş) değer alabilmesini sağlar. Veritabanı işlemlerinde ve opsiyonel değerlerde kullanışlıdır.

Enum (Numaralandırma)

Sabit değerleri (günler, aylar, durumlar) anlamlı isimlerle gruplamak için kullanılır.

enum Gunler { Pazartesi, Sali, Carsamba }
Gunler bugun = Gunler.Pazartesi;

Struct

Class benzeri ama değer tipidir. Hafif veri yapıları için kullanılır (koordinat, renk vb.).

Değişken Tanımlama Kuralları

Değişken isimlendirme kuralları:

  • Türkçe karakter kullanılmaz (ğ, ü, ş, ı, ö, ç).
  • Sayı ile başlayamaz (1sayi ❌).
  • Boşluk içermez (ad soyad ❌).
  • Büyük/küçük harfe duyarlıdır (Sayi ≠ sayi).
  • Özel karakterler ($, %, &) kullanılamaz (_ hariç).
int ogrenciSayisi;   // Doğru
int 1sayi;           // Yanlış (Sayı ile başlamaz)
string ad_soyad;     // Doğru
string ad soyad;     // Yanlış (Boşluk içeremez)

Örnek Program

Tüm değişkenleri bir arada kullanan kod.

class Program
{
    static void Main()
    {
        int yas = 21;
        double ortalama = 78.5;
        bool basariliMi = true;
        string ad = "Ayşe";
        char sinif = 'A';
        decimal ucret = 1500.50m;

Console.WriteLine(ad);

Console.WriteLine(yas); Console.WriteLine(ortalama); } }

Değişkenlerin Yaşam Süresi (Scope)

Bir değişken sadece tanımlandığı blok (süslü parantezler) içerisinde yaşar ve erişilebilir.

Yerel (Local) Değişken

Metot içinde tanımlanır. Sadece o metotta geçerlidir.

Sınıf (Global) Değişken

Sınıf içinde tanımlanır. Tüm metotlardan erişilebilir.

Örnek Program 2

Değişkenler, Enum, Struct ve Class yapılarının bir arada kullanıldığı kapsamlı örnek uygulama.

Özet ve Tavsiyeler

🔑 Temel Taşı

Değişkenler, programlamanın alfabesidir. Onları anlamadan karmaşık algoritmalar kurmak imkansızdır.

🛠️ Pratik Yapın

Bol bol farklı veri tipleriyle değişken tanımlayarak ve ekrana yazdırarak pratik yapın.

📚 Araştırın

Stack Overflow ve Microsoft Docs gibi kaynaklardan sürekli yeni kullanımları inceleyin.

Unutmayın: İyi bir yazılımcı, sadece kod yazan değil, veriyi en verimli şekilde yöneten kişidir.

Bölüm Sonu Testi (20 Soru)

Kendinizi deneyin! Cevapları görmek için butona tıklayın.

1. C# programlama dili hangi firma tarafından geliştirilmiştir?

A) Google
B) Apple
C) Microsoft
D) Oracle
E) IBM

Doğru Cevap: C (Microsoft)

Açıklama: C#, Microsoft tarafından .NET platformu için geliştirilmiştir.

2. Aşağıdakilerden hangisi .NET platformunun en yaygın kullanıldığı alanlardan biridir?

A) İşletim Sistemi Çekirdeği Yazma
B) Web Geliştirme (Web Applications)
C) Donanım Sürücüsü Yazma
D) Biyomedikal Cihaz Kodlama
E) Hiçbiri

Doğru Cevap: B (Web Geliştirme)

Açıklama: .NET platformu, özellikle profesyonel ve dinamik web siteleri geliştirmek için çok yaygın kullanılır.

3. C# ile mobil uygulama geliştirmek için hangi teknoloji/platform kullanılır?

A) Flutter
B) React Native
C) Xamarin
D) Swift
E) Kotlin

Doğru Cevap: C (Xamarin)

Açıklama: Xamarin, C# kullanarak iOS ve Android uygulamaları geliştirmeye olanak tanır.

4. Oyun geliştirmede C# dili hangi popüler oyun motoru ile özdeşleşmiştir?

A) Unreal Engine
B) Unity
C) Godot
D) CryEngine
E) GameMaker

Doğru Cevap: B (Unity)

Açıklama: Unity oyun motoru, betik dili olarak C# kullanır ve dünyada çok popülerdir.

5. DLL kısaltmasının açılımı nedir?

A) Data Link Layer
B) Direct Language Library
C) Dynamic Link Dictionary
D) Dynamic Link Library
E) Digital Logic Language

Doğru Cevap: D (Dynamic Link Library)

Açıklama: Dinamik Bağlantı Kitaplığı, birden çok programın ortak kullanabildiği kod kütüphaneleridir.

6. Programdaki "syntax" (yazım) hatalarını bulmamıza yardımcı olan araç hangisidir?

A) Compiler
B) Debugger
C) Editor
D) Interpreter
E) Linker

Doğru Cevap: B (Debugger)

Açıklama: Debugger, kodun adım adım çalıştırılmasını ve hataların tespit edilmesini sağlar.

7. C# dilinin "Açık Kaynak" (Open Source) olması ne anlama gelir?

A) Kodların herkese açık olması ve geliştirilebilmesi
B) Sadece Microsoft çalışanlarının görebilmesi
C) Ücretli olması
D) İnternet olmadan çalışmaması
E) Sadece Windows'ta çalışması

Doğru Cevap: A

Açıklama: Açık kaynak, topluluk desteğine ve kodun herkesçe incelenebilmesine olanak tanır.

8. C# kod dosyalarının uzantısı nedir?

A) .cpp
B) .java
C) .py
D) .cs
E) .html

Doğru Cevap: D (.cs)

Açıklama: C Sharp dosyaları .cs uzantısı ile kaydedilir.

9. Bellekte veri saklamak için ayrılan isimlendirilmiş alanlara ne denir?

A) Sabit
B) Metot
C) Sınıf
D) Değişken
E) Dizi

Doğru Cevap: D (Değişken)

Açıklama: Değişkenler, verileri geçici olarak tutan bellek kutularıdır.

10. C# dilinde doğru değişken tanımlama sözdizimi hangisidir?

A) isim = değer;
B) tip isim = değer;
C) değişken isim = değer;
D) isim : tip = değer;
E) var isim : tip;

Doğru Cevap: B (tip isim = değer;)

Açıklama: Önce veri tipi, sonra değişken adı belirtilir (örn: int sayi = 5;).

11. "int" veri tipi hangi tür verileri saklar?

A) Metin
B) Kesirli Sayı
C) Tam Sayı
D) Doğru/Yanlış
E) Tarih

Doğru Cevap: C (Tam Sayı)

Açıklama: Integer (int) sadece tam sayıları saklar.

12. "3.14" gibi ondalıklı bir sayıyı saklamak için en uygun veri tipi hangisidir?

A) int
B) bool
C) char
D) double
E) string

Doğru Cevap: D (double)

Açıklama: Double veya float ondalıklı sayılar için kullanılır.

13. Metinsel ifadeleri (yazıları) saklamak için hangi veri tipi kullanılır?

A) char
B) string
C) text
D) word
E) metin

Doğru Cevap: B (string)

Açıklama: String, karakter dizilerini (metinleri) tutar.

14. "char" veri tipi için değer atanırken hangi işaret kullanılır?

A) Çift Tırnak (")
B) Parantez ()
C) Köşeli Parantez []
D) Tek Tırnak (')
E) Yıldız (*)

Doğru Cevap: D (Tek Tırnak)

Açıklama: Char tek bir karakterdir ve tek tırnakla tanımlanır (örn: 'A').

15. "bool" veri tipi aşağıdaki değerlerden hangisini alabilir?

A) "Evet" / "Hayır"
B) 0 / 1
C) true / false
D) null
E) Pozitif / Negatif

Doğru Cevap: C (true / false)

Açıklama: Boolean mantıksal tiptir, sadece doğru veya yanlış değerini alır.

16. Aşağıdaki değişken isimlerinden hangisi YANLIŞTIR?

A) ogrenciSayisi
B) _toplam
C) Sayi1
D) 1.Sinif
E) ad_soyad

Doğru Cevap: D (1.Sinif)

Açıklama: Değişken isimleri rakamla başlayamaz.

17. "Scope" (Kapsam) kavramı neyi ifade eder?

A) Değişkenin bellek boyutunu
B) Değişkenin erişilebilir olduğu kod bloğunu
C) Değişkenin alabileceği maksimum değeri
D) Değişkenin rengini
E) Değişkenin tipini

Doğru Cevap: B

Açıklama: Bir değişken sadece tanımlandığı süslü parantezler { } içinde geçerlidir.

18. Değeri tanımlandıktan sonra asla değiştirilemeyen değişkenler için hangi anahtar kelime kullanılır?

A) static
B) var
C) const
D) readonly
E) fix

Doğru Cevap: C (const)

Açıklama: Constant (sabit) değişkenlerin değeri program boyunca sabit kalır.

19. "var" anahtar kelimesi kullanıldığında ne olur?

A) Değişken tipsiz olur
B) Değişken her türü alabilir
C) Derleyici tipi otomatik anlar
D) Hata verir
E) Değişken null olur

Doğru Cevap: C

Açıklama: 'var' kullanıldığında derleyici atanan değere bakarak tipi kendisi belirler.

20. "int?" (Nullable int) ne anlama gelir?

A) Soru işareti içeren sayı
B) Bilinmeyen sayı
C) Hatalı sayı
D) Null (boş) değer alabilen sayı
E) Pozitif sayı

Doğru Cevap: D

Açıklama: Normalde sayılar null olamaz, ancak ? eklenerek null değer alabilir hale gelirler.

🎓

TEŞEKKÜRLER

Zonguldak Bülent Ecevit Üniversitesi

Devrek Meslek Yüksekokulu

Öğr.Gör.Tahsin ÇİLOĞLU