Ana içeriğe atla

C# öğrenmek 101: Temel

C# öğrenmek 101: Temel

C#’a temelden başlayacağız. C# kullanılan ve bilinen dillerden biri. Öğrenilmesi korkulan bir dillerden ama göz korktucudur fakat hiçbir dil öğrenilmek isteyecek ve öğrenilmeyecek düzeyde değildir.

C# birçok yönde kullanılan bir dil, backend, backend web, frontend web, mobil, form, oyun uygulamaları ve daha fazlası..

Başlayalım.

Çalıştırma Ortamı

İlk önce c#’ı deneyecek bir ortam lâzım. Bilgisayarınıza dotnet veya Visual Studio indirip bilgisayarınıza kurabilirsiniz.

Kurmayıp, internet üzerinden “c# online compiler” ile de kodları deneyebilirsiniz.

Visual Studio var ise oradan Console App’ı seçip kurun.

Eğer dotnet ile kuracaksanız ise terminal’i açıp, dotnet new console -n ConsoleAppName yazmanız gerekiyor.

Çalıştırmak için ise klasörün bulunduğu terminale dotnet run watch yazmanız yeterli.

Csharp (Görsel, I.)

Merhaba dünya!

Konsola bir yazı yazdıralım:

Console.WriteLine("Merhaba dünya!");

Değişken ve Tipler

Değikenleri ve tipleri öğrenelim:

string adi = "Burak"; // yazıları genelde tutar

int yasi = 24; // sayıları tutar

double ondalikliSayi = 10.5; // ondalıklı sayı

bool onayliMi = false; // true ya da false alır doğru veya yanlış..

Gelin bu adi değişkenini ekrana bastıralım:

Console.WriteLine(adi);

Meselâ iki tipi toplayalım:

int sayi1 = 5;
int sayi2 = 10;

Console.WriteLine(sayi1+sayi2);

Consol methodları

Konsolun direkt kapanmaması için şu komutu yazmanız gerekiyor:

Console.ReadKey();

Şimdi konsoldan veri gireceğiz ve aldığımız verileri toplayacağız:

int sayi1 = Console.ReadLine("Sayı 1 giriniz: ");
int sayi2 = Console.ReadLine("Sayı 2 giriniz: ");
int sonuc = sayi1+sayi2;

Console.WriteLine("Sayıların toplamı: " + sonuc);

Şart blokları kullanımı:

int yas = 18;

if(yas == 18){
Console.WriteLine("18 yaşına eşit, reşit.");
}

else if(yas > 18){
Console.WriteLine("18 yaşından büyük, reşit.");
}

else{
Console.WriteLine("18 yaşından küçük, reşit değil.");
}

Burada reşit mi değil mi kodu yazdık. 3 durum var. Ona göre de kodları yazdık.

Ayrıca şart bloklarından switch var:

int sayi = 1;
switch(deger){
case 1:
Console.WriteLine("1 seçildi");
break;

case 2:
Console.WriteLine("2 seçildi");
break;

default:
Console.WriteLine("bir numara seçildi");
break;
}

Veri türlerini dönüştüreceğiz, 3 türlü dönüştürme var.

Convert.ToInt16("15");  // değer int olacaktır.
// tipleri kontrol için: typeof() kullanabiliriz.

typeof(degisken);

// veya

int.Parse(degisken);

// string için özel

degisken.ToString();
Convert.ToString(degisken); //aynı

Fonksiyon kullanımı:

static int Topla(int sayi1, int sayi2)
{
return sayi1 + sayi2;
}

static void MesajGoster(string mesaj)
{
Console.WriteLine(mesaj);
}

// kullanım:

int sonuc = topla(4,5);
MesajGoster(sonuc);

Neden static kullanıyoruz? Çünkü direkt olarak çağırabiliyoruz.

void fonksiyonlarda ise geriye bir şey döndürmüyoruz. return yok.

Ayrıca topla fonksiyonunda int dedik, bu int bize dönecek değerin tipini temsil ediyor.

Bide override dediğimiz bir tür var, bu tür basittir. 2 fonksiyonuz var ama parametreler farklı ya da tipleri ama adları aynı buna işte override diyoruz, bakınız:

static int Topla(int x, int y)
{
return x + y;
}

static double Topla(double x, double y)
{
return x + y;
}

Fonksiyonlar hakkında bilmeniz gerekenler bunlar.

Liste oluşturmak:

// 3 Tip array oluşturabiliriz.
string[] arabalar = { "Volvo", "BMW", "Ford", "Mazda" };

List<string[]> data = new List<string[]>() { arabalar, kisiler };

// 2 boyutlu
string[,] kisiler = { {"burak", "istanbul" },{ "ümit", "adana"} };

Liste içindekileri ekrana bastırmak:

foreach (string araba in arabalar){
Console.WriteLine(araba);
}

Listeye, item eklemek:

ArrayList arr = new ArrayList()
arr.Add("Burak")

//veya

List<string> arr = new List<string>()
arr.Add("Burak")

// daha kullanışlı bir List
BindingList<string> arr = new BindingList<string>()
arr.Add("Burak")

Sözlüğe item ekleme:

Dictionary<string, string> dict = new Dictionary<string, string>()
arr.Add("key", "value")

Sınıflara giriş yapalım, bir sınıf oluşturalım ve bu sunuf kişi sınıfı olsun:

public class User
{
public int Id { get; set; }
public string Adi{ get; set; }
public int Yasi { get; set; }

public void Add() {
Console.WriteLine($"Kişi Eklendi: Id = {Id}, Adı = {Name}, Yaşı = {Age}");
}
}

Bu sınıfı çağırıp kullanalım:

 User user1 = new User { Id = 1, Name = "Burak", Age = 24 };

Sınıflar, public, private, protected diye ayrılır.

private, sadece bulunduğu classdan erişilebilir. protected ise alt classlardan erişilebilir. public, her yerden erişilir.

C#’in asıl özelliği, OOP tabanlı yani Türkçesi Nesne Yönelimli Programlamadır.

Interface oluşturalım:

public interface IHayvan
{
void SesCikar(); // Bir metodun imzası
void HareketEt(); // Diğer bir metodun imzası
}

Kullanalım:

public class Kedi : IHayvan
{
public void SesCikar()
{
Console.WriteLine("Kedi: Miyav!");
}

public void HareketEt()
{
Console.WriteLine("Kedi hareket ediyor.");
}
}

Abstract Sınıf:

public abstract class Hayvan
{
public abstract void SesCikar(); // Soyut metot
public void HareketEt() // Normal metot
{
Console.WriteLine("Hayvan hareket ediyor.");
}
}

public class Kedi : Hayvan
{
public override void SesCikar()
{
Console.WriteLine("Kedi miyavlıyor.");
}
}

Enum oluşturmak:

enum Gunler { Cuma, Cumartesi, Pazar, Pazartesi };

get, set kullanımı:

class User
{
private string adi;
public string Adi
{
get { return adi; }
set { adi = value; }
}
}

class Program
{
static void Main(string[] args)
{
User burak = new Person();
burak.Adi = "Burak Behlül";
Console.WriteLine(burak.Adi);
}
}

Abstraction kullanımı:

// Soyut bir Hayvan sınıfı
public abstract class Hayvan
{
public string Ad { get; set; } // Hayvanın adı
public int Yas { get; set; } // Hayvanın yaşı

// Soyut bir metot
public abstract void SesCikar(); // Her hayvanın kendine özgü sesi olacak
}

Inheritance kullanımı:

// Köpek sınıfı, Hayvan sınıfını miras alır
public class Kopek : Hayvan
{
public string Tur { get; set; } // Köpeğin türü (ör. Golden Retriever)

// Ses çıkar metodu
public override void SesCikar()
{
Console.WriteLine($"{Ad}: Hav Hav!");
}
}

// Kedi sınıfı, Hayvan sınıfını miras alır
public class Kedi : Hayvan
{
public string Renk { get; set; } // Kedinin rengi

// Ses çıkar metodu
public override void SesCikar()
{
Console.WriteLine($"{Ad}: Miyav Miyav!");
}
}

Polymorphism örneği:

using System;
using System.Collections.Generic;

public class Program
{
public static void Main(string[] args)
{
// Hayvan listesi
List<Hayvan> hayvanlar = new List<Hayvan>
{
new Kopek { Ad = "Karabaş", Yas = 5, Tur = "Golden Retriever" },
new Kedi { Ad = "Mırmır", Yas = 3, Renk = "Siyah" }
};

// Tüm hayvanların sesini çıkar
foreach (var hayvan in hayvanlar)
{
Console.WriteLine($"Ad: {hayvan.Ad}, Yaş: {hayvan.Yas}");
hayvan.SesCikar();
}
}
}

Açıklamaları ekledim ki, daha iyi anlayabilesiniz diye. Yeni başlayanlar için OOP biraz karışık gelebilir fakat proje yaptıkça ve kullandıkça hem anlaması hem de niye kullanıldığını anlamak kolay ve açıklayıcı gelecektir.

Promise yapısı:

try 
{
// kod
}
catch (Exception e)
{
// hatalar
}
finally {
// en son çalışacak kodlar
}

async/await yapısı:

public async Task VeriGetir(string url)
{
return await beklenenIslem();
}

Bu eğitiminde sonuna geldik. En kullanılan kod yapılarını size verdim, en kolay şekilde açıkladım ve koydum.

OOP yapısına mutlaka çalışın ve öğrendiklerinizi pratik edin.

C#’ın diğer alanlarınla ilgili de yazı gelecek.

Takipte kalın.

İyi kodlamalar!

Yorumlar

Bu blogdaki popüler yayınlar

Filistin’in iki yüzü: PKK ve ASALA

  Filistin’in iki yüzü: PKK ve ASALA Diyeceksiniz ki: “ Ama insanlar ölüyor, yazık değil mi! Ne acımasızsın! ” falan filan.. Hayır efendim, hayır! Elbette çocukların ölmesine üzülüyorum, bende bir insanım lâkin FKÖ’nün eğittiği PKK’nın kaç Türk çocuğunun canını aldığını ez mi geçiceğiz? Burada Suriye’nin PKK’ya verdiği desteği yazmayacağım çünkü zâten blogu’mda “ Sosyalist Bedevî: Esad ailesi, atalarının izinde ” diye bir yazı yazıp detaylıca anlatmıştım. Ayrıca FKÖ’nün kurucularından ve Filistin devlet başkanı Mahmut Abbas hakkında da burada bahsetmeyeceğiz. Çünkü daha önce bahsetmiştik, bakınız: “ Solcu bir Bedevî: Mahmud Abbas ” Gelgelelim, Filistin ve PKK ilişkilerine, şöyle anlatayım: PKK, Suriye-Filistin-Lübnan kampların’da eğitim görmüştü. PKK, Suriye Hükûmeti tarafından Bekaa Vadisi’ne yerleştirilmişti. Burada yetişmişler burada militanlaşmışlardı. Bizzat büyük Türkiye dostu (!) Yaser Arafat tarafından desteklenmişlerdi. (1) İsrail’e karşı operasyonlar da kullanılmışla...

Yıldırım Beyazıd ve Emir Timurlenk Savaşı

YILDIRIM BEYAZID VE EMİR TİMUR LENK SAVAŞI Ankara Savaşı (28 Temmuz 1402) Cengiz Han'ın vârisi olma iddiası ile çıkan Emir Timur. Beyazı'dın egemen olmasını kabul etmiyor. Onu küçümsüyor. Timur'un tahtını ele geçirmek için isyan başlatan   ve Timur Hindistan seferinden gelince bizzat kendisi tarafından kovulan Diyarbakır Beyi İlhan Ahmet Celâyir, Osmanlı'ya sığınmıştı. Epey Timur ve Beyazıd'ın arası gergindi. Fakat Timur kendi ırkından, dininden olan Osmanlı’ya saldırmak istemiyordu.   Timur’a tabî olan Mutahharten’ın ailesini Bursa’ya esir olarak gönderen Beyazid ile Timur’un arası açılmıştı.   “ Timur, kendisini sadece dünya üzerinde ulaşabileceği yere kadar hırsını doyurmak için Allah tarafından gönderilen “Allah’ın kulu” olarak değil, Türk halkının da gerçek ve tek temsilcisi olarak görüyordu. Yörüklerin bol paçalı şalvarları içinde, başında yüksek keçe başlığı ile tam bir Türk gibi giyinirdi.. Sarayı’nda sadece Türkçe konuşulur ve Türkçe yazı yazılır...

Kürtler ve Medler

KÜRTLER VE MEDLER Kürt Tarihçilerin çoğu kendini Medlere dayandırır. Kürt dilinin gelişmesinde Medlerin rol oynadığını söylerler. (Minorsky - Kürtler, İslam Ansiklopedisi, VI. cilt, s. 1089-1114) Ve Medlerin torunlarıdır. (Amir Hassanpour - Kürdistanda Milliyetçilik ve Dil; s. 120.) » Kürtlerin tek kurduğu ulusal devlet olarak Medler İmparatorluğunu kabul ederler. (Wadie Jwaideh - Kürt Miliyetçiliğinin Tarihi , Kökenleri ve Gelişimi, s. 17.) » Ve bazı Kürt Tarihçilerde şöyle savunur: “bütün tarih boyunca Medleri Kürtlerden ayrı gösterecek bir hadise bulamazsınız.." (Zinnar Silopi - Doza Kurdistan; s. 9.) » Medler proto-Kürt’tür. (Philip Kreyenbroek & Christine Allison - Kürt Kimliği ve Kültürü, s. 25.) » “Dolaylı değil doğrudan Kürtlerin Medlerle bağlantıları vardır.” (Ali Hüseyin Kerim - Balkan Yarımadasında Kürtler, s. 49.) Medlerin İmparatorluğunu yıkan, Perslerdi. (William Aegleton - Mehabad Kürt Cumhuriyeti; s. 18.) Ve şunu söylemektedirler: Medler yıkıldık...