Archive: C#

C# İle Tek ve Çift Sayılarının Bulunması

Bir okuyucumuzun sorusu üzerine tek ve çift sayıların C# ile bulunması örneği yapıyoruz. Temel mantık sayının modu alınır. Mod 2 işlemi gerçekleştirilir. İşlem sonucu 0 ise sayı çift sonuç 1 ise sayı tek sayıdır.
Okuyucumuzun sorusu :” 1den kullanicinin belirleyecegi sayiya kadar olan sayilardan tek sayilarin karesini cift sayilarin kupunu alip ekrana yazdiran programi c# console aplication da yaziniz.”” şeklindeydi.

Sorununn cevabı şu şekilde olacak.

 static void Main(string[] args)
        {
            //1den kullanicinin belirleyecegi sayiya kadar olan sayilardan tek sayilarin karesini cift sayilarin 
            //kupunu alip ekrana yazdiran programi c# console aplication da yaziniz.

            Console.Write("Sayısı Giriniz = ");
            int sayi =Convert.ToInt16(Console.ReadLine());
            int tekToplam =0;
            int ciftToplam =0;
            for (int i = 0; i <= sayi; i++)
            {
                if (i % 2 == 0)
                {
                    ciftToplam = i * i * i;
                    Console.WriteLine(i + " sayısının küpü   = " + ciftToplam);
                }
                else
                { 
                    tekToplam = i * i;
                    Console.WriteLine(i + " sayısının karesi  = " +  tekToplam);
                }


            }
            Console.ReadKey();

        }

C# İle Daha Kaliteli Thumbnail Resimler Oluşturma

C# .NET ile thumbnail resimler oluşturmak oldukça kolay. Image sınıfında yeralan GetThumbnailImage methodu ile kolayca resimleriniz için küçük önizleme resimleri thumbnail images oluşturabilirsiniz.
Aşağıdaki örnekte .NET içindeki Image sınıfı içindeki GetThumbnailImage metodunun kullanımına örnek basit bir uygulamayı görüyorsunuz.

public void createThumbnail(Image originalImage, int thumbWidth, int thumbHeight, string thumbFullPath)
{
using(FileStream fs = File.Create(thumbFullPath))
{
Image newImage = originalImage.GetThumbnailImage(thumbWidth, thumbHeight, new Image.GetThumbnailImageAbort(OnGetThumbnailImageAbort), IntPtr.Zero);
newImage.Save(fs, originalImage.RawFormat);
newImage.Dispose();
}
}
private static bool OnGetThumbnailImageAbort()
{
return false;
}

Asıl mevzuya dönecek olursak yukarıdaki örnekte kullandığımız GetThumbnailImage metdouyla otomatik olarak oluşturulan resim önizlemelerin daha kalitelisini oluşturabilmek için farklı bir yöntem kullnmamız gerekecek. Allta yer alan yöntem ile artık daha kaliteli thumbnail küçük resimler oluşturabiliriz.

public void createThumbnail(Image originalImage, int thumbWidth, int thumbHeight, string thumbFullPath)
{
using(FileStream fs = File.Create(thumbFullPath))
{
Bitmap newImage = new Bitmap(originalImage, thumbWidth, thumbHeight);
Graphics g = Graphics.FromImage(newImage);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
g.DrawImage(image, 0, 0, newImage.Width, newImage.Height);
newImage.Save(fs, image.RawFormat);
newImage.Dispose();
}
}

C# ile CapsLock Kontrol Fonksiyonu

C# ile capslock tuşunu açıp kapatmak için kullanışlı bir fonksiyonu ve fohksiyon ile geliştirilmiş örnek bir uygulamayı paylaşıyorum.

// ReSharper disable InconsistentNaming
        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
        static void ToggleCapsLock(bool onOrOff)
        {
            if (IsKeyLocked(Keys.CapsLock) == onOrOff)return;
            keybd_event(0x14, 0x45, 0x1, (UIntPtr)0);
            keybd_event(0x14, 0x45, 0x1 | 0x2, (UIntPtr)0);

        }
        // ReSharper restore InconsistentNaming

Örnek Uygulamayı indirmek için burayı Tıklayınız… ExamCapsLock

Düzenli İfadeler(Regular Expression)

Bir string dizisinden belirli bir kalıba uyan yeni bir string dizisi oluşturmak için kullanılır. Örneğin;bir web sayfasındaki mail adreslerini elde etmek. Düzenli ifadelerde «System.Text.RegularExpresions» isim uzayı tanımlanır. Düzenli ifadeler (regular expressions) ile bu katara bir kalıp atanır ve bu kalıbın da program içindeki bu katarın bütün eşlenik ifadelerine geri dönmesi sağlanır. Böylece program içinde arama yapma veya yer değiştirme gibi olaylar kolayca yerine getirilebilir. Bunu yerine getirmek için bazi özel karakterler kullanılır. Bu özel karakterler ve anlamları şu şekilde sıralanabilir:

Karakter Anlamı
. Herhangi bir tek karakteri temsil eder.(/n hariç) Örn; “d.neme” ifadesinden “deneme”, “daneme”, “doneme” gibi alt stringler elde edilebilir.
[ ] Bir diziyi yada aralığı temsil eder.  Örn;de[ea]me deseni ile deneme ve dename stringleri elde edilebilir. Ayrıca de[0-9]me deseniyle sayısal aralık belirtirlir.
? Kendinden önceki karakterin string içerisinde olup olmamasını sağlar. Örn; «Mühe?» ifadesi «Müh» yada «Mühe» döndürür.
\ -Kendinden sonraki karakteri özel karaktere dönüştürür veya tam tersini yapar. Örn; “n” karakter “\n” yeni satır.-Kendinden sonraki karakterin stringe dahil edilmesini sağlar.«MÜ\H» ifadesi «MÜH» döndürür.
* Kendinden önceki karakterin yada stringin hiç olmaması yada istediği sayıda olmasını sağlar. Örn; “MUH*” deseni “MUHHH” veya “MU” döndürür.
{} Kendinden önce gelen karakterin belirtilen sayıda tekrar edilmesini sağlar.Örn;”MU{2}H” deseni “MUUH” döndürür.
^ Satır başını ifade eder. Örn;”^MUH” , satır “MUH” karakterleri ile başlamak zorunda.
$ Satır sonunu ifade eder. Örn;”MUH$”  satır “MUH” karakterleriyle bitmek zorunda
+ Kendinden önceki karakterin bir yada daha fazla olmasını zorunlu kılar. Örn;”MUH+” deseni  “MUHH”  ile eşleşir ama “MU” ile eşleşmez.
() Tek karaktermiş gibi işlenir.
x|y X veya y den birisiyle eşleşir. Örn; “M|UH” deseni “M” veya “UH” döndürür. “(M|U)H” desenine “MH” veya “UH” uyar.
[A-Z] Herhangi bir büyük harf.
[^A-Z] Herhangi bir büyük harf harici karakter.
[a-z] Herhangi bir küçük harf.
[0-9] Herhangi bir rakam.
\b İfadelenin önündeki ve arkasındaki karakterleri sınır kabul eder.
\B karakteri sınırlandırma olmayan durumu belirtir
\d “[0-9]” desenine eşittir.
\D “[^0-9]” desenine eşittir.
\n Yeni satır başlangıcı.
\r Satır başı karakteri.
\s Boşluk. “[ \f\n\r\t\v]” deseniyle eşleşir.
\S “[^ \f\n\r\t\v]”
\t Tab karakter.
\v Dik tab karakter.
\w Herhangi bir kelime ile eşleşir. “[A-Za-z0-9_]” desenine eşittir.
\W Herhangi bir kelime ile eşleşmez. “[^A-Za-z0-9_]” desenine eşittir.

Hazır desen örnekleri:

Desen Adı Desen
IP adres: \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
IP adres Grup: \b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
URL: ((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)
Web Domain : [a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)?
HTML Tag: <.[^>]*>
Date : (([0-9])|([0-2][0-9])|([3][0-1]))\/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\/\d{4}
Time: ([0-1][0-9]|[2][0-3]):([0-5][0-9])
Email : ([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)
Guid: ^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$
ISBN Number: ISBN\x20(?=.{13}$)\d{1,5}([- ])\d{1,7}\1\d{1,6}\1(\d|X)$
Türk Telefon \d{1}\(\d{3}\)([-\.\s])\d{3}\1\d{2}\1\d{2}

 

Visual C# – Rasgele Sayı Üretme

Visual C# ile Rasgele Sayı Üretme

Rasgele numaralar; bir oyun geliştimende, bir dizi içerikten şanslı olanı seçmende, ASP.NET sitende rasgele resimler göstermende ve bunun gibi birçok şekilde örnekleyebileceğimiz onlarca yerde işimize yarayacak temel fonksiyonlardan biridir. Güncel modern programlama dillerinde kolayca rasgele sayılar üretebiliriz. Nacak şöyle de bir karanlık bir gerçek varki: bilgisayarların ürettiği rasgele sayılar aslında gerçekten rasgele değildir. Onlar yalancı-sözde rasgele sayılardır. bu sayılar karmaşık bir algoritma sonucu üretilir. Ne yazikki uzun yıllardır bilim rasgele sayı üretmenin yolunu bulamadı. Halen rasgele sayılar şüpheli. Bazı bilgisayar uzmanları günümüz popüler programlama dilleriyle oluşturulmuş rasgele numaraları tahmin edebilir programlar geliştirebiliyorlar. O kompleks algoritmalar çözülebiliyor.

Lafı fazla uzatmandan tartışmalardan uzak C# ile nasıl rasgele sayılar üretebileceğimizi yazalım :

Random randNum = new Random();
randNum.Next();

Hepsi bu. Bir Random nesnesi üretmek (System.Random sınıfında) ve Next() methodunu çağırmak, bu bize negatif olmayan (pozitif) bir integer türünde eğer döndürecektir.

Rasgele bir sayı ürettiğinizde elde ettiğiniz sayı çok büyük değerde olacaktır. >Bunu belli bir aralık içersine sığdırabilirsiniz. Örneğin 108 insan arasında rasgele birini seçme işlemi için aşağıdaki kodu üretmeniz lazım. Bu kad sayesinde 108 sayısından büyük bir sayı üretilmeyecektir.

Random randNum = new Random();
randNum.Next(108); //  En büyük 108

Daha önce de söylediğimiz gibi pozitif olma koşulu sayesinde en küçük “0” en büyük “108” değeri döner. Ancak “0” rakamını istemiyorsak yazacağımız kod aşağıdaki gibidir. aşğaıdaki kod ile “1” ile “108” arasında bir sayı üretilecektir.

Random randNum = new Random();
randNum.Next(1, 108); // En büyük 108 en küçük 1

Bazı özel durumlar:

Random randNum = new Random(1986);
randNum.Next(); // Bu her zaman 564610494 sayısını döndürür.

Yine aynı şekilde :

Random randNum = new Random(1986);
randNum.Next(); // Bu her zaman 564610494 sayısını döndürür.
randNum.Next(); // Bu her zaman 1174029081 sayısını döndürür.
randNum.Next(); // Bu her zaman 2057658224 sayısını döndürür.

 

Eğer double tipinde bir sayı üretmek istiyorsak NextDouble() methodu kullanılır. Bu kod bize 0 ile 1 arasında bir sayı döndürür:

Random randNum = new Random();
randNum.NextDouble();
randNum.NextDouble();
randNum.NextDouble();

Örnek olarak dönecek rakamlar 0.12820489450164194, 0.81203657295197121 ve 0.0582018419231087554.

Bir arraya atarak kulanımı ile ilgili olarak ta aşağıdaki örneği verebiliriz.

byte[] randBytes = new byte[108];
Random randNum = new Random();
randNum.NextBytes(randBytes);

Bu kodun sonucu buna benzer olacaktır: 196 231 77 225 52 144 146 72 3 90 18 233 161 205 147 196 35 152 30 220 41 114 156 25 184 185 30 64 140 138 215 62 178 90 158 94 0 47 101 234 151 44 71 189 146 113 111 90 3 93 59 104 91 143 81 82 75 51 40 123 113 81 188 121 130 212 55 71 47 52 195 243 50 52 68 252 42 222 135 70 74 196 61 46 79 111 227 34 8 75 19 205 6 234 120 70 112 206 58 190 58 39 42 206 153 71 53 38. Tabi ki sizin rakamlar farklı olmalıdır.

 

Ofis Benzeri Yazım Kontrol Uygulaması

C# ile basit bir Türkçe yazım kontrolü aracı oluşturacağız. Aracımız Microsoft Office Programlarında olduğu gibi kelimemizi kontrol edip eğer kelimemiz hatalıysa altını çizecek. Kelime yazım kontrolünde kullanacağımız kontrol sınıfı Phyton ile  kodlanmış Spell Corrector aracının C# a dönüştürülmüş hali. http://norvig.com/spell-correct.html adresinden ulaşabileceğiniz bu basit uygulama Phyton ile sadece 21 satır kod ile tamamlanmış. (Boşlukları saymadan)

spellCorrect

Read more

Dizin İçerisindeki Belli Tip Dosyaları Listeleme

Visual C# ile istediğimiz bir dizin içerisindeki tüm dosyaları listelemek ve istersek sadece belli tipteki ki dosyaları listelemtmek için aşaıdaki kodları kullanabiliriz. Aşağıdaki kodda sadece txt uzantılı dosyalar listelenecek ve eğer istersek bu txt dosyalarını okuyup form üzerindeki bir text kutusuna yazdıracağız.

private void button2_Click(object sender, EventArgs e)
        {
            txtParagraphs.Text = "";
            FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.ShowDialog();
            string sourceDir = dialog.SelectedPath;
            string[] sourcefiles = Directory.GetFiles(sourceDir);
            string sourcefile;
            
            for (int i = 0; i < sourcefiles.Length; i++)
            {
                sourcefile = sourcefiles[i];
                FileInfo info = new FileInfo(sourcefile);
                string uzanti = info.Extension; //Dosya Uzantısını alıyoruz.
                if (uzanti==".txt")//sadece txt uzantılı dosyaları alıyoruz.
                {
                    //txtParagraphs.Text = txtParagraphs.Text+("\nDosya Adı   : " + sourcefile+ "\n");
                    //Sadece dosya isimlerini yazdırmak için kullanılır
                    try
                    {
                        string text = File.ReadAllText(sourcefile, Encoding.GetEncoding(1254));
                        txtParagraphs.Text = txtParagraphs.Text + "\n" + text;
                        //txt dosya içeriklerini formdaki metin kutusuna eklemek için kullanılır.
                     }
                    catch (IOException)
                    {
                    }

                }
                
            }

Yeni SQLite Veri Tabanı Oluşturma

Sqlite
  1. Şimdi yeni bir sqlite veritabanı nasıl oluşturuluyor? Ona bakalım. Ben Firefox Eklentisi olarak kullanılan SQLite Manager kullandım. Eğer sisteminizde Firefox yüklü değilse kendi başına çalışabilen SQLite Admin programını indirebilirsiniz. Firefox eklentisinin açılış görüntüsü aşağıdaki gibi.

Read more

Adım Adım Visual Studio’ya SQLite Kütüphanesini Dahil Etme

Daha önceki yazılarımda da bahsettiğim gibi Visual Studio ile SQLite veri tabanı kütüphanelerini dahil etmeyi görüntülü olarak anlatacağım. Bir önceki yazımda SQLite data adabtörlerinin indirme adreslerini paylaşmıştım. Ancak ben onları kullanarak değil de Visual Studio Nuget Manager kullanarak projemize dahil edeceğiz.

  1. Adım: Visual Studio ile yeni bir Windows Form Application oluşturuyoruz.
  1. Adım: Visual Studio içinde Nuget Manager’i Project Menüsünden açıyoruz.
  2. Adım : Nuget Manager penceresinde arama kutusuna SQLite yazıyoruz System.Data.SQLite (x86/x64) isimli paketi indiriyoruz. Bu paket hem 32 bit hem de 64 bit programlar için çalışabiliyor. Böylece hangi paketi indirsem derdi de ortadan kalkmış oluyor.
  3. Paketimiz yükleniyor. Eğer buraya kadar yaptıysanız zaten siz bu işi bitirmiş sayılırsınız
  4. Solution Explorer da paketlerimizin görüntüsü şekildeki gibi olacak.

Kontrol Deyimleri If – If/Else – If/Else If/Else

C# ile Kontrol Deyimlerinin Kullanımını ve kullanım örneklerini bu yazımızda sizinle paylaşıyoruz. Faydalı olması umduğumuz bu yazıyı anlaşılır ve yalın bir biçimde örneklerle C# Kontrol Deyimlerini öğretilmesini planladık.
if  ifadesi: Program içerisinde şartlı işlemler olduğu zaman kullanılan yapıdır

Kullanımı:

if(şart veya şartlar)

{

Kodlar;

}
Read more

Back to Top