cial Icons

Prefix fonksiyonu

Prefix 

     Merhaba, bugün string algoritmalarının temeli olan prefix fonksiyonu ile stringteki prefix leri bulmayı anlatacağım bu basit ve temel yöntemden sonra, uzun string text içinde kelime gruplarının hızlıca bulunmasını sağlayan algoritmalar'a geçeceğim. Buradaki notlar daha çok kendime notlar silsilesi olarak devam edecek hem de ihtiyaç duyan arkadaşlar için anlaşılır bir Türkçe kaynak oluşturmaya çalışacağım.

 




               Prefix fonksiyonu basitce bir string içinde soldan sağa arama yapıp prefix değerini bulmayı sağlamaktadır. Basitçe söylemek gerekirse 'aabcaabaa' gibi bir string için :

indisler          
0
1
2
3
4
5
6
7
8
Karakterler
a
a
b
c
a
a
b
a
a
Prefix değerleri 
0
1
0
0
1
2
3
1
2

String Algoritma Terimleri ve SubSequence

Terimler Ve SubSequence 

Merhabalar, Bugün string algoritma terimlerinden ve subsequence bulma metodunun nasıl yazılabileceğinden bahsedeceğim.

Yüksek lisanta gördüğüm bu terimleri paylaşarak hem bilmeyenleri bilgilendirmeyi hem de gerektiğinde kendimi tekrar etmeyi hedeflemekteyim.

Prefix

               Teorik tanımı ile  y=u.x.v olarak kabul ettiğimizde ve u' nun bir boş string olduğunu kabul edersek, x y'nin prefix'i olmuş olmakta. 

                Daha anlaşılır bir dille elimizde y , u, x ve v diye stringler var. stringler arasındaki .(nokta) çarpma anlamına gelmekte yani stringlerin yan yana koyarak birleştirilmesidir. Yani bu mantıkla "ali"."ata"="aliata"gibi. u stringini boş bir string kabul ettiğimize göre aslında y: x ve v nin birleşiminden oluşmakta  x'i "umut" v'yi "coşkun" kabul edersek y="umutcoşkun" olacak ve bu drumda "umut" y stringinin prefixi olacaktır. yani açıkcası stringin baştan  tüm kombinasyonları onun prefixi kabul edilir.y nin prefixleri: "u", "um","umu"..."umutcoskun".

Ders9: ComboBox kullanımı

Merhaba arkadaşlar, bu paylaşımımda ToolBox bloğu içerisinde bulunan ComboBox ögesinin özelliklerini anlatacağım.

ComboBox itemlerden oluşan bir ögedir. Programlarımızda ComboBox’ın itemlerinin özelliklerinden yararlanırız. Bu özelliklere bir göz atalım:

  • ·         Add() ;
ComboBox içerisine item eklememizi sağlar.

  • ·         Text ;
ComboBox içerisinde seçilen, gösterilen itemi ifade eder.

  • ·         SelectedItem ;
ComboBox içerisinde seçili olan itemi object veri türünde geri döndürür.
·        

Ders8: Listbox özellikleri ve kullanımı


Merhaba arkadaşlar, bu paylaşımımda ToolBox’lar içerisinde kullandığımız Listbox ögesinin özelliklerini anlatacağım.

Listbox itemlerden oluşan bir ögedir. Listbox’a ekledğimiz herşey bir item olarak belirtilir. Her itemin bir index numarası bulunur. Dizilerden hatırlayacağımız gibi Listbox ta da ilk itemin indexi 0’dır.

Forma eklediğimiz bir listbox’ın adını Properties – Name kısmından lbList diye değiştirelim.

  • ·         lbList’imize item eklemek için add metodunu kullanıyoruz.

  

  • ·         lbList’ten item silmek için Remove(), Removeat(), Clear() metotlarını kullanıyoruz.

 

Listbox’ın indexof() ve contains() özellikleri:

  • ·         indexof(), liste içerisinde aranan bir item eğer varsa geriye bulunduğu index numarasını döndüren, aranan item yoksa geriye -1 döndüren bir özelliktir.

 

Ders7: Rastgele Sayı ve Timer kullanımı

Rastgele(Random) Sayı Atama ve Timer kullanımı

C# Rastgele Sayı Üretme


Merhaba arkadaşlar, bu yazımda rastgele sayı üretme ve atama işlemlerini gerçekleştiren tanım ve metotları paylaşacağım.

Rastgele sayı üretme işlemi genellikle şans oyunlarında karşımıza çıkar. Buna çok yakın bir örnek olarak küçük bir program yardımıyla rastgele sayı atama işlemlerini birlikte gözden geçirelim.

Öncelikle rastgele sayı üretmek için Random sınıfı ve bu sınıfın özellikleri olan Next(), NextBytes(), NextDouble() metotları kullanılır.

Tanımlama işlemini bu şekilde yapabiliriz.
 

Örneğimizde şans oyunlarından LuckySeven adlı bir oyun oluşturalım.

Ders6.1 : Dizi Tanımlamaları

Dizi Tanımlamaları


          Diziler farklı farklı şekilde tanımlanabilmektedir.
istersek ilk tanım sırasında tanımlayabilir, istersek elemanlarını dinamik olarak sonradan belirleyebiliriz.
Aynı şekilde bir dizinin eleman sayısını tanımlama zamanında belirleyebileceğimiz gibi dinamik olarak bir hesap sonucu elde ettiğimiz sayı adeti kadar eleman barındıracak şekilde de tanımlayabiliriz.

public class Dersler {

    private static int[] array= new int[5]; 
    // ilk tanımlandığı yerde değer ataması yapılmayacaksa bu şekilde new lenmelidir.
    private static String[] arrayString = new String[5]; 
     // bir String dizisi yani "yazılar" alır.
    private static char[] charArray = new char[6];  
    // character dizisi yani 'a', 'b' gibi karakterlerle beslenir.

    private static int[] OkudugumKitaplar; 
    // ilk deger ataması yapıladı newlenmedi ise kullanırken dikkat edilmelidir.
 //  diziler istersek direkt değer ataması yapılarak da tanımlanabilir
 private static String[] dizimis1= {"ali","ata","bak"};
 
 private static String[] dizimis2= {"mahmut","rıfkı","niyazi"};
 
 private static String[] dizimis3= {"Türkiye","Yozgat","İstanbul"};
 
 private static String[] dizimis4= {"Sarıkaya","Sorgun","Şefaatli"};
 
 private static String[] dizimis5= {"Just","Little","Hope"};
 
 
 // bu da iki boyutlu basit bir dizi yani içinde diziler tutan bir dizi de diyebiliriz
 // içinde 5 adet dizi bulundurabilir
 // ve her bir dizi max 3 elemanlı olabilir
 private static String [][] IkiBoyutlu= new String[5][3];
 
 public static  void main(String[] args) {
  // TODO Auto-generated method stub


 int ilkGunOkudugumKitap =74;
 
 int ikinciGunOkudugumKitap=16;
 
 int toplamOkudugumKitap= ilkGunOkudugumKitap + ikinciGunOkudugumKitap;
 
 
 OkudugumKitaplar = new int[toplamOkudugumKitap];
       // dizi tanımlamasını sonradan bulabileceğiniz bir sayi ile tanımlayabilirsiniz 
 // örnekteki gibi bir hesap yapıp sonra o kadar eleman barındıran 
        //bir dizi tutabilirsiniz.
 

Ders6: Diziler

Diziler


Diziler aynı tipteki değerlerin bir arada taşınmasını sağlayan programlama ögeleridir. Örneğin dizinin 1. elemanı int tipindeyse 5. eleman string olamaz kesinlikle int tipli olmalıdır.(Farklı tipli elemanları bir arada taşıyan list ögeleri ilerleyen paylaşımlarda olacaktır.)

Diziler, elemanlarına isimleriyle değil indeks numaralarıyla erişim sağlar. Dizinin ilk elemanının indeks numarasının 0 olduğunu unutmamak gerekir.

Dizi tanımlama


Dizi değişkenleri tanımlama değişken tanımlama ile aynıdır. Örneğin string türünden kişiler dizisini şu şekilde tanımlayabiliriz à string[] kisiler;

Dizilerde en önemli kurallardan biri de dizinin eleman sayısı belirtilmese dahi önceden bilinmelidir. Örneğin 5 elemanlı bir kisiler dizisini tanımlarsak à string[] kisiler = new kisiler[5];

Ufak bir form uygulama örneğiyle yukarıda bahsettiğimiz dizileri pratiğe dökelim:
C# arayüzünde Toolbox kısmında kullanabileceğimiz ögeler bulunmaktadır. Bu ögeleri paylaşımlarımda sırasıyla kullanarak anlatacağım. Çok elemanlı bir dizinin elemanlarını gösterebilmek için en basit olarak ListBox ögesini kullanabiliriz.

Bu uygulamamızda 5 elemanlı kisiler dizisi oluşturularak bir tuşa basıldığında ögeleri listede gösteren bir örnek olsun

Öncelikle arayüzünü oluşturalım
Form sayfamızda sol tarafta bulunan Toolbox’tan(yoksa üst bardan View-ToolBox tıklayarak da açabilrisiniz ) bir tane buton ve ListBox’ı çift tıklama veya sürükle bırak şeklinde sayfamıza ekleyebiliriz.

Ders5: Döngü yapıları

Döngü yapıları


         Belirli bir koşul gerçekleştiği sürece istenilen işlemleri gerçekleştiren yapıları döngü olarak adlandırıyoruz. Döngü yapısı oluşturmak için C#’da while, do while ve for döngüleri kullanılmaktadır.  Ancak bu yapılara ek olarak foreach yapısı da bulunmaktadır. Foreach döngü yapısını daha sonraki paylaşımlarımda anlatacağım.

while:

Belirli bir koşul gerçekleştiği sürece blok içerisindeki işlemleri gerçekleştiren döngü yapısıdır.
            while (koşul)
            {
                deyim1;
                deyim2;
                .
                .
                .
            }

En basit örnekten başlarsak;
0’dan 5’e kadar sayıları sıralayan program
            int i=0;
            while (i<5)
            {
                i++;
                Console.WriteLine( i);

               
            }

do while:

yukarıda anlattığım while döngüsünden farkı yapılmasını istediğimiz deyimleri koşul ifadesinden önce yazıyoruz. Yani koşula bakılmaksızın deyimlerimizin en 1 kere çalışması sağlanacaktır.
            do
            {
                deyim1;
                deyim2;
                .
                .

            } while (ifade);

Ufak bir örnek de do while döngüsü için verelim.

Bu örneğimiz:


Ders4 : Switch - case yapısı ve dört işlem

Switch - case yapısı ve dört işlem örneği


Switch – case :


Bir önceki paylaşımımda sizlere if koşul ifadelerinin kullanımından bahsetmiştim. Bu yazımda ise    if – elseif - else bloğuyla aynı mantıkla çalışan yazılımcının isteğine göre farklı yerlerde kullanabileceği switch – case koşul ifadesini bir örnekle anlatacağım.

Örneğimizi önce if – elseif – else koşul ifadelerini kullanarak yazacağım daha sonra aynı işlemi gerçekleştiren switch – case ifadesini yazacağım.

Programımızda kullanıcıdan girmesini istediğimiz iki sayının ekranda görülen işlem tiplerinden birini seçmesiyle o işlemi bu sayılara uygulayan bir örnek oluşturacağız.


if – elseif- else kullanımı:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
            tekrar: // 1,2,3,4 seçimlerinden farklı bir seçim yapılırsa program buraya tekrar dönecek.
            //yapacağımız işlemlerin sonuçlarını tanımlıyoruz.
            int carpma = 0, toplam = 0, cikarma = 0; float bolme = 0; 

            //bölme işlemi sonucu kesirli sayı çıkma ihtimaline karşılık float tanımlıyoruz.
            Console.WriteLine("1.sayi giriniz: ");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("2.sayi giriniz: ");
            int b = int.Parse(Console.ReadLine());

            Console.WriteLine("ISLEM MENUSU");
            Console.WriteLine("1) toplama");
            Console.WriteLine("2) cikarma");
            Console.WriteLine("3) carpma");
            Console.WriteLine("4) bolme");

            Console.WriteLine("seciminiz: ");
            string secim = Console.ReadLine();
           
            if (secim == "1")

            {
                toplam = a + b;
                Console.WriteLine("toplam sonucu: " + toplam);
                 Console.WriteLine("{0} + {1} = {2}", a, b, toplam);  //işlemler bu şekilde şablon yöntemiyle de yazılabilir. 
            }
            else if (secim == "2" && a > b) //pozitif sonuçlar elde etmek amaçlı büyük sayı kontrolü yapıyoruz.
            {
                cikarma = a - b;
                Console.WriteLine("cikarma sonucu: " + cikarma);
            }
            else if (secim == "2" && a < b)
            {
                cikarma = b - a;
                Console.WriteLine("cikarma sonucu: " + cikarma);
            }
            else if (secim == "3")
            {
                carpma = a * b;
                Console.WriteLine("capma sonucu: " + carpma);
            }
            else if (secim == "4" && a > b)
            {
                bolme = (float)a / b;
                Console.WriteLine("bolme sonucu: " + bolme);
            }
            
            else if (secim == "4" && a < b)
            {
                bolme = (float)b / a;
                Console.WriteLine("bolme sonucu: " + bolme);

            }
            else
                goto tekrar;
            Console.ReadKey();



C# Ders3:if-else ve if-else if-else koşul ifadeleri


if – else – else if :

Bu yazımızda kodlarımızın yapı taşlarından olan koşul ifadelerini inceleyeceğiz. Bu ifadeler yazılımcılara beni her kodunda kullanmak zorundasın der gibi önem arz ediyorlar. Bu ifadeleri 2 başlık altında ayrı ayrı inceleyelim.

1-) if - else

if(Kontrol ifadesi)
{
    Eğer kontrol ifadesi doğru ise çalışacak kod bloğu buraya yazılmalıdır.
}
else
{
   Eğer kontrol ifadesi yanlış ise buraya yazacağımız kod bloğu çalışır.
}

2-) if- else if – else

if ve else if ifadelerinin ikisi de eğer anlamında kullanılır. Else if kullanmak yerine istediğimiz kadar if yapısını art arda kullanabiliriz. Ancak bazı noktalarda else if hem kod okunurluğunu arttırma amaçlı hem de derleme esnasında biraz daha hız kazanmasını sağlamak için kullanabiliriz. Çünkü else if ifadesi sadece önündeki if de belirtilen kontrol ifadesi yanlış olduğunda çalışır.
Bir sonraki dersimizde bu kontrol bloğuyla aynı mantıkta çalışan switch case yapısını inceleyeceğiz.

if(1.Kontrol ifadesi)
{
    Eğer kontrol ifadesi doğru ise çalışacak kod bloğu buraya yazılmalıdır.
}
else if(2. Kontrol ifadesi)
{
    Eğer 1.kontrol ifadesi yanlış ise ve 2. Kontrol ifadesi doğru ise çalışacak kod bloğu buraya yazılmalıdır.
}
else
{
   Eğer kontrol ifadeleri yanlış ise buraya yazacağımız kod bloğu çalışır.
}

Şimdi yukarıda bahsettiğimiz koşul ifadeleri ile alakalı basit bir kod yazalım .

C# Ders2: Değişken Değiştirme ve Toplama


Değişken değiştirme:


Merhaba arkadaşlar, bu yazımızda değişken değiştirme metotlarına değineceğim. Sonrasında da basit bir şekilde bu değişimlerin önemini belirten bir toplama programı yazacağım.

C# dilinde değişken değiştirme görevini üstlenen      Parse (değişken adı)    ve       Convert.To….(değişken adı) metotları bulunmaktadır.

Örneğin ;
string A; değişkenini tanımlayalım. A değişkenini int tipli bir değişken yapmak istiyorsak
int.Parse(A) veya Convert.ToInt32(A) şeklinde belirtmek gerekecektir. İki metottan birini tercihinize göre kullanabilirsiniz.

Console sınıfında toplama işlemini gerçekleştiren bir program yazalım. İsteyenlerin yazımdan kopyalama yaparak kendi konsollarına alabilmeleri için fotoğrafların yanı sıra yazı halinde de paylaşacağım.

Örneğimizde girilmesi istenen iki sayının toplamını gösteren bir kodlama yapılmıştır. Ancak toplama işlemi int değişkenleri üzerinde etkili olan bir işlemdir. Bundan dolayı kodlar arasında da belirttiğim gibi iki string ifadeyi toplamak, bu girilen ifadelerin yan yana yazılması halinde sonuçlanacaktır.

1
2
3
4
5
6
7
//klavyeden girilen iki sayinin toplamını ekranda göster
 Console.Write("sayi1: ");
 string A = Console.ReadLine();
 Console.Write("sayi2: ");
 string B = Console.ReadLine();
Console.Write("Sayıların toplamı:  " + A + B); //ŞEKLİNDE YAZARSAK STRİNG OLDUĞUNDAN TOPLAMA YAPMAZ YANYANA YAZAR.
            Console.ReadKey();


C# İlk Uygulama




Merhaba arkadaşlar, yazılım dilleri arasında önemli bir yeri olan C# dilini ders ders bloğumuza ekleyerek sizlere faydalı olmaya çalışacağım. İlk derslerimizde console sınıfından projelere yer vereceğim. 

Visual Studio kullanarak yeni bir proje sayfası açmak için resimde de gösterildiği gibi New Project sekmesini seçmeliyiz. Resimlere tıklayarak orijinal büyüklükte görüntüleyebilirsiniz.