C# ile Kendi StartsWith Metodunu Kodlama

StartsWith metodunu kullanırken hiç kendi StartsWith metodumuzu kodlasaydık nasıl olurdu diye düşündünüz mü ? Bilgisayar Mühendisliği , Yazılım Mühendisliği öğrencisiyseniz veya C# programlama dilini öğreniyorsanız kendinizi geliştirmek adına bu metodu kendiniz kodlamayı deneyebilirsiniz. Bu tarz başka metotları kodladığımız yazılarımıza buradan ulaşabilirsiniz. Öncelikle StartsWith metodu ne işe yarar ve nasıl kullanılır sorularıyla başlayalım. StartsWith Metodu Ne İşe Yarar ? Belirlediğimiz metin, seçtiğimiz cümle veya paragrafla başlıyorsa True başlamıyorsa False döndürür. Örneğin “Algoritmik Kodla StartsWith metodunu kodluyoruz.” cümlesinin “Algoritmik” kelimesiyle başlayıp başlamadığını StartsWith metoduyla öğrenebiliriz. Sonucunda True ifadesini döndürecektir. Cümlenin “Algoritma” kelimesiyle başlayıp başlamadığını kontrol ettiğimiz zaman ise False ifadesini döndürecektir. Ayrıca sadece kelime girmek zorunda değiliz mesela cümlemiz “Algo”, “Algoritmik Kodla” gibi metinlerle de başlıyor mu diye kontrol edebiliriz. Verdiğimiz örnek basit bir örnek olsada StartsWith Metodu oldukça işe yarayan bir metottur. Uzun metinler üzerinde kullanılabilir. StartsWith Metodu Nasıl Kullanılır ? Kendi StartsWith metodumuzu kodlamaya başlamadan önce nasıl kullanabileceğimize bir göz atalım. Elimizdeki metin “Algoritmik Kodla öğreniyorum.” ve bu metinin “algoritmik” kelimesiyle başlayıp başlamadığını öğrenmek istiyorum fakat dikkat etmemiz gereken bir konu var. Bizim metnimizin “Algoritmik” kelimesindeki “A” harfi büyük yazılmışken kontrol etmek istediğimiz kelimedeki “a” harfi küçük yazılmış. Eğer büyük küçük harfler dikkate alınmasın istiyorsak kontrol metnimizden sonra virgül koyup StringComparison.OrdinalIgnoreCase ifadesini eklemeliyiz. Artık metodumuz harfin büyük veya küçük olmasını umursamayacak. Eğer büyük küçük harfi dikkate almasını istiyorsak bu ifadeyi eklemememiz yeterli olacaktır. string metin = “Algoritmik Kodla öğreniyorum.”; bool sonuc = metin.StartsWith(“algoritmik”, StringComparison.OrdinalIgnoreCase); Console.WriteLine(sonuc); Kod bloğu çalıştırıldığında True ifadesini yazdıracaktır. 1. Adım Metodun Alacağı Parametreleri Belirleyelim. Kendi StartsWith metodumuzu kodlamaya başlarken hangi parametreleri alacağını belirleyelim. StartsWith Metodunu belirli bir metin üzerinde denetim yapacağı için bir metin değişkeni girmeliyiz. Metodumuzun hangi kelimeyi veya cümleyi kontrol etmesini istiyorsak onu belirtmemiz gerekiyor bu yüzden ikinci bir string değişkeni daha girmeliyiz. Metodumuzu kullanırken büyük küçük harfi dikkate alsın mı seçeceğini oluşturmak için bir bool parametresi girmeliyiz ve varsayılan olarak false olmasını istiyorum eğer kullanıcı metodu kullanırken bir parametre girmezse büyük küçük harf uyumuna dikkat edilsin istiyorum. Son olarak kullanıcı girilen metnin istediği indexinden kontrole başlayabilsin diye bir int parametresi girilmesini isteyeceğiz eğer girilmezse varsayılan olarak 0 yani metnin en başından başlayarak kontrol edilecek. static bool StartsWith(string metin, string kontrolMetni, int baslamaNoktasi = 0, bool buyukKucukHarfDikkati = false){ } 2. Adım Büyük Küçük Harf Ayrımı Yapılsın mı ? Büyük küçük harfe dikkat edip etmeyeceğimiz eğer belirtilmemişse dikkat edilsin olarak varsayılanını ayarlamıştık. Peki kullanıcı dikkat edilmemesini isterse ne yapacağız ? Yapacağımız şey oldukça basit: tüm harfleri küçük harfe çevirirsek büyük küçük harf ayrımı ortadan kalkacak. Bunu bir İf bloğu içinde yapıyorum. Eğer True parametresini alırsak blok çalışacak ve tüm harfleri küçüğe çevirecek. static bool StartsWith(string metin, string kontrolMetni, int baslamaNoktasi = 0, bool buyukKucukHarfDikkati = false) { if (buyukKucukHarfDikkati) { metin = metin.ToLower(); kontrolMetni = kontrolMetni.ToLower(); } } 3. Adım Kontrol Döngüsünü Başlatma Sıradaki adımımızda artık for döngüsüyle harflerimiz aynı mı diye kontrol etmeyi başlatacağız. Öncelikle metodumuzun bir boolean türünde ifade döndürmesi gerekiyor. Bunu varsayılan olarak True kabul ediyoruz. Eğer döngümüz aynı olmayan bir harfle karşılaşırsa False ifadesini alıp döngü kırılacak. Tabii ki metin içerisinde gezerken kontrol metni olarak seçtiğimiz cümlenin harflerinin de sırasıyla değişmesi gerekiyor bu yüzden kontrolMetniHarfSayaci diye bir değişken oluşturuyorum. Artık döngüyü yazmaya başlayabiliriz. Döngümüz bir for döngüsü olacak. Kullanıcının istediği indexten başlayacak ve bizim kontrol metnimizdeki karakter sayısı + başlamanoktasına kadar ilerleyecek (Bu kısmın yeterince açık olması için kullanıcının başlamamızı istediği index 4 olsun kontrol metnimizdeki karakter sayısı 5 olsun “i” 4 den başlayıp 9 a kadar gidecek çünkü metindeki indexleri doğru bir şekilde gezmemiz lazım) . Ayrıca az önce bahsettiğim kontrolMetniHarfSayaci da bu döngü her çalıştığında bir arttırılacak çünkü kontrol metnimizin harflerinde de sırayla gezmemiz gerekiyor. Sıra geldi for döngümüzün içinde harfleri tek tek kontrol ettirmeye. İf bloğunun çalışması için 2 şartımdan birisini yerine getirmesi yeterli. Bu şartlardan birincisi “i” değişkeninin metin.Lenght ifadesinden büyük olması yani kullanıcının metinin karakter sayısından büyük bir index girmesi. İkinci şartım iste metin[i] != kontrolMetni[kontrolMetniHarfSayaci] olması yani aslında aynı olmayan bir harf ya da karakter bulunması ( Örneğin metnim “algoritmik kod” olsun kontrol ifademde “algoritma kod” olsun metindeki “i”harfine geldiğimizde kontrol metnimizde “a” harfi olduğu için if bloğuna girecek). Peki İf bloğuna girince ne olacak ? Başta belirlediğim metodun döndüreceği boolean ifade False olarak değiştirilecek ve döngünün devam etmesine gerek kalmadığı için break ifadesiyle durdurulacak. static bool StartsWith(string metin, string kontrolMetni, int baslamaNoktasi = 0, bool buyukKucukHarfDikkati = false) { bool dondur = true; int kontrolMetniHarfSayaci = 0; if (buyukKucukHarfDikkati) { metin = metin.ToLower(); kontrolMetni = kontrolMetni.ToLower(); } for (int i = baslamaNoktasi; i < kontrolMetni.Length + baslamaNoktasi; i++) { if (i>=metin.Length||metin[i] != kontrolMetni[kontrolMetniHarfSayaci]) { dondur = false; break; } kontrolMetniHarfSayaci++; } return dondur; } Son Adım İnceleme Böylece kendi StartsWith metodumuzu kodladık. Tabii ki hazır StartsWith metodu optimize edilmiş ve daha kullanışlı olabilir fakat burada amaç kodlama yeteneğimizi geliştirmek ve kendimize yeni bakış açıları katmak. Kodu denemek isteyenler için tam halini aşağıya bırakıyorum. Split metodunu kodladığımız yazımıza ulaşmak için buraya tıklayabilirsiniz. Yazı veya sayfayla ilgili fikir ve yorumlarınızı iletişim sayfamızdan iletebilirsiniz. Bir sonraki yazımızda buluşmak dileğiyle. -Enes Türkay using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Algoritmikod { internal class Program { static void Main(string[] args) { string metin = “Algoritmik Kodla öğreniyorum.”; string kontrolMetni = “öğreniyorum”; bool sonuc = StartsWith(metin, kontrolMetni,17,true); Console.WriteLine(sonuc); } static bool StartsWith(string metin, string kontrolMetni, int baslamaNoktasi = 0, bool buyukKucukHarfDikkati = false) { bool dondur = true; int kontrolMetniHarfSayaci = 0; if (buyukKucukHarfDikkati) { metin = metin.ToLower(); kontrolMetni = kontrolMetni.ToLower(); } for (int i = baslamaNoktasi; i < kontrolMetni.Length + baslamaNoktasi; i++) { if (i>=metin.Length||metin[i] != kontrolMetni[kontrolMetniHarfSayaci]) { dondur = false; break; } kontrolMetniHarfSayaci++; } return dondur; } } }
C# ile Basit Trim Metotu Kodlama

Bu yazımda Trim() metotundan bahsedeceğim. Trim metotu string bir ifadenin başındaki ve sonundaki boşlukları siler. Örnek verecek olursam ” Algoritmik Kod ” yazısına Trim metotunu uygularsak “Algoritmik Kod” olarak çıktı alırız. Kodumuzun ana mantığından bahsedecek olursak harflerimizin başlangıç ve bitiş noktalarını belirledikten sonra o noktaların arasındaki tüm harfleri yeni bir diziye aktaracağız. Hadi Birlikte Bu metotu basit bir şekilde nasıl yazacağımızı öğrenelim. Öncelikle metotumuz bir string ifade döndürecek ve boşlukları silmesi için içine bir metin değeri vereceğiz o halde metotu yazarak başlayalım. static string trim(string metin) { } 1. Adım: Harflerin Başladığı Noktayı Bulmak int baslangic = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] != ' ') { baslangic = i; break; } } Trim metotu baştaki boşlukları atacağı için başlangıç indexini belirliyorum. Bunuda for döngüsüyle yapıyorum eğer for döngüsü bir harfle karşılaşırsa duracak (durması önemli çünkü eğer durmazsa bitiş noktasını bulmuş oluruz.) ardından bu değer baslangıç değişkenimize kaydedecek. 2. Adım: Harflerin Bittiği Noktayı Bulmak int bitis = 0; int baslangic = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] != ' ') { baslangic = i; break; } } for (int i = 0; i < metin.Length; i++) { if (metin[i] != ' ') { bitis = i; } Trim metotunun sondaki boşluklarıda silmesi gerektiği için son harfimizin hangi indexe sahip olduğunu da bilmeliyiz. Eğer neden bilmemiz gerektiğini hala anlamadıysanız merak etmeyin sonuca ulaştıkça anlayacaksınız. Son indexi bulmamız için yapmamız gereken 1. Adımdaki gibi bir for döngüsü oluşturup boşluk olmayan kısmın indexini almak ama buradaki fark break; yazarak döngüyü durdurmuyoruz ve böylece son indexi alıyoruz. Bu işlemi metnin sonundan başlayarakta yapabiliriz bu da farklı bir yöntem olur. 3. Adım: Boşluksuz Metini Atmak İçin Yeni Bir Dizi Oluşturmak static string trim(string metin) { char[] yenimetin = new char[metin.Length]; int sayac = 0; int bitis = 0; int baslangic = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] != ' ') { baslangic = i; break; } } for (int i = 0; i < metin.Length; i++) { if (metin[i] != ' ') { bitis = i; } } for (int i = baslangic; i
C# ile Basit Split Metodu Kodlama

Split metodu seçilen metinde bulunan kelimeleri istediğimiz ayraca göre ayırıp bir string dizisinin içine aktaran metottur. Bu yazımızda ise split metodunu basit ve kolay bir şekilde yazmayı öğreneceğiz. Split Metodunu uygulayacağımız cümle “Algoritmik Kod ile birlikte gelişiyoruz” olsun. Split metodunu bu cümleye uyguladığımızda ve ayracımızı ‘ ‘(boşluk) olarak belirttiğimizde split metodu bizde [Algoritmik,Kod,ile,birlikte,gelişiyoruz] şeklinde bir dizi döndürecek. string metin = “Algoritmik Kod ile birlikte gelişiyoruz”; Hadi split metodumuzu oluşturup içini doldurmaya başlayalım. Metod bir string dizisi döndürecek, bir metin ve bir ayraç ifadesi alacak. static string[] Splitimiz(string metin,char ayrac) {} 1. Adım: Cümledeki Kelime Sayısını Bulalım. Öncelikle kelime sayısını bulmamız gerek çünkü split metodu bir dizi döndürecek ve bu dizinin kaç elemanlı olduğunu baştan bilmemiz gerekiyor. O halde Split metodu kelimelerden oluşan bir dizi döndürecekse bizde bu dizinin kelime sayısını bilmeliyiz. static string[] Splitimiz(string metin,char ayrac) { int elemanSayisi = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] == ' ') elemanSayisi++; } elemanSayisi++; } Bir cümlenin kelime sayısı o cümledeki boşluk sayısından 1 fazladır. Örneğin "Algoritmik Kod ile birlikte gelişiyoruz" cümlesinde 4 boşluk varken 5(4+1) kelime vardır. Bu nedenle boşluk sayısı bulunur ve 1 eklenir. 2. Adım: Metotta Döndürülecek Diziyi Oluşturalım. static string[] Splitimiz(string metin,char ayrac) { int elemanSayisi = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] == ' ') elemanSayisi++; } elemanSayisi++; string[] kelimelerDizisi = new string[elemanSayisi]; } Şimdi az önce bulduğumuz kelime sayısına göre döndürülecek diziyi oluşturalım. 3. Adım: Cümledeki Kelimeleri Ayırıp Diziye Aktaralım static string[] Splitimiz(string metin,char ayrac) { int sayac = 0; int elemanSayisi = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] == ' ') elemanSayisi++; } elemanSayisi++; string[] kelimelerDizisi = new string[elemanSayisi]; for (int i = 0; i < metin.Length; i++) { if (metin[i] != ayrac ) { kelimelerDizisi[sayac] += metin[i]; } else { sayac++; } } return kelimelerDizisi; } Öncelikle bir sayaç oluşturuyoruz. Bu sayaç az önce oluşturduğumuz dizinin eleman indexini temsil edecek. Yani sayaç 0 ise diziye ilk kelimeyi ekliyor olacağız. Ardından for döngüsüyle cümlenin içinde gezinip bulunduğumuz char eğer boşluk değilse sayaçtaki numaraya ait olan dizi elemanına aktarıyoruz eğer boşluksa sayaçı 1 arttırıyoruz. Artık metodumuz diziyi döndürmeye hazır olduğuna göre diziyide döndürüp metodumuzu tamamlıyoruz. Son Adım: Değerlendirme static void Main(string[] args) { Console.WriteLine("Cümlemiz:"); string metin = "Algoritmik Kod ile birlikte gelişiyoruz."; Console.WriteLine(metin); string[] kelimelerineAyrilmisMetin = Splitimiz(metin, ' '); Console.WriteLine("***********************"); Console.WriteLine("Yazdığımız Split Metoduyla oluşan dizinin elemanları:"); foreach (var kelime in kelimelerineAyrilmisMetin) { Console.WriteLine(kelime); } } static string[] Splitimiz(string metin,char ayrac) { int sayac = 0; int elemanSayisi = 0; for (int i = 0; i < metin.Length; i++) { if (metin[i] == ' ') elemanSayisi++; } elemanSayisi++; string[] kelimelerDizisi = new string[elemanSayisi]; for (int i = 0; i < metin.Length; i++) { if (metin[i] != ayrac ) { kelimelerDizisi[sayac] += metin[i]; } else { sayac++; } } return kelimelerDizisi; } } Sonuç olarak kendi basit split metodumuzu yazdık. Daha gelişmiş versiyonları bu yazı güncellenerek eklenecektir.Kodu mainden çağırıp dizi elemanlarını tek tek yazdırmak isteyenler için kodun tamamını yan tarafa bırakıyorum.Bir sonraki yazımda görüşmek dileğiyle - Enes Türkay
C# İle Dizideki En Büyük Sayıyı Bulan Metot

Bu yazımda dizideki en büyük sayıyı C# ile bulmayı öğreneceğiz. Örneğin bize verilen [12,42,21,2,4,5,224] dizisindeki en büyük sayının 224 olduğunu hepimiz görebiliyoruz ama verilen dizi bu kadar az elemandan oluşmasaydı bunu görmek bu kadar kısa sürmezdi. Kodumuzun ana mantığı dizinin 1. elemanını en büyük sayı olarak varsaymak ve ardından diğer elemanların 1. elemandan büyük olup olmadığına bakmak olacak eğer diğer elemanlardan birisi 1. sayıdan büyükse en büyük tahtına o oturacak ve bu durum en son elemana kadar devam edecek. Hazırsanız kodumuzu yazmaya başlayalım. Öncelikle metotumuzu oluşturalım. Metot bir int değeri döndürecek ve metotumuza bir int dizisi göndereceğiz. O halde metotumuzu yazmaya başlayalım. static int enbüyükbul(int[] dizi) {} 2. Ardından en büyük değişkeni 1. eleman olarak varsayalım. static int enbüyükbul(int[] dizi) {int sonDeger = dizi[0];} 3. Son olarak for döngüsüyle tüm döngüyü gezip eğer 1. elemandan daha büyük bir sayı varsa o sayıyı sonDeger değişkenine atayalım ve sonucu döndürelim. static int enbüyükbul(int[] dizi) { int sonDeger = dizi[0]; for (int i = 0; i < dizi.Length; i++) { if (sonDeger < dizi[i]) { sonDeger = dizi[i]; } } return sonDeger; } Artık metotumuz kullanıma hazır. Sonucu görmek isteyenler için aşağıya tüm kodu bıraktım. Bir Sonraki yazımda görüşmek üzere -Enes Türkay static void Main(string[] args) { int[] dizi = { 0, 34, 53, 5, 323, 21, 5 }; int enbüyük = enbüyükbul(dizi); Console.WriteLine(enbüyük); } static int enbüyükbul(int[] dizi) { int sonDeger = dizi[0]; for (int i = 0; i < dizi.Length; i++) { if (sonDeger < dizi[i]) { sonDeger = dizi[i]; } } return sonDeger; }