C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Ağustos 2020 Cuma

Tuple Nedir?

C# 4.0 ile gelen Tuple yapısını kullanarak hazırladığımız metottan birden fazla değer döndürebiliriz. Tuple yokken bu işi "out" parametresini kullanarak veya içerisinde birden fazla değer barındıran bir model kullanarak yapabiliriz.

Tuple kullanmanın avantajı ne ?
En büyük avantajı model kullanmadan birden fazla değeri döndürebiliyor olmamızdır.

Nasıl Kullanılır?

Tuple kullanarak birden fazla değer döndürecek metotlar hazırlayabiliriz. Tek metot kullanarak hem en pahalı hem de en ucuz ürünlerin id değerlerini döndürebiliriz.

public Tuple<int, int> EnPahaliEnUcuzUrunId()
{
long enUcuzUrunId = 1;
long 
enPahaliUrunId = 2;

return Tuple.Create(enUcuzUrunId enPahaliUrunId );
}

Gördüğünüz gibi methot geri dönüş tipi olarak Tuple kullandık ve içerisinde 2 tane int tipi tanımlanıp bu değerleri geriye döndürdük. 

Şimdi bu metodu çağıralım.


public void main()
{
Tuple<int, int> values= 
EnPahaliEnUcuzUrunId();
long enUcuz = tupple.Item1;
long enPahali = tupple.Item2;
}

Tuple yapısını kullanarak istediğimiz sayıda istediğimiz tip nesneyi taşıyabiliriz.

Metoda Çok Parametre Geçmek İstersek

Eğer bir metoda birden fazla parametre göndermek istersek bu durumda Tuple kullanılır.

static void Main(string[] args) 


            ParameterizedThreadStart ts = new ParameterizedThreadStart(ThreadMethod); 
            Thread t = new Thread(ts); 
            t.Start(Tuple.Create(1, 9.23F, 2)); 

} 

static void ThreadMethod(object values) 


            Tuple<int, float, int> tpl = (Tuple<int,float,int>)values; 
            Console.WriteLine("Gelen değerler {0} {1} {2}",tpl.Item1,tpl.Item2,tpl.Item3); 



İyi Çalışmalar,

31 Temmuz 2019 Çarşamba

C# DLR (Dynamic Language Runtime) Kullanımı

.NET Framework 4.0 ile birlikte hayatımıza giren DLR'ın (Dynamic Language Runtime) temel olarak amacı static ve dynamic yapıların bir arada çalışabilir olmasını sağlamaktır. Bu özellik .NET projelerinde dinamik dillerdeki kütüphanelerin kullanılmasını sağlıyor.
DLR ayrıca IronPython gibi dinamik programlama dillerinin Common Language Runtime (CLR) ile iletişim kurmasını da sağlamaktadır. Bunun için dynamic anahtar kelimesi kullanılır.



Örneğimizde python dili ile "Hesap Classı" yazılacak olup class içerisine "topla-fark-print" işlerini yapacak olan metotlar dahil edilecektir. C# Console Projesi içerisinde python tarafında yazılmış olan class kullanılacaktır. C# dünyasında "Python" kodunu kullanabilmek için projemize IronPython  kütüphanesini dahil etmemiz gerekmektedir.  

Öncelikle boş bir C# Console Projesi aşağıdaki görseldeki gibi oluşturulur.














Python kodlarını yazabilmemiz için gerekli olan IronPython kütüphanesini   projeye sağ tıklayıp gelen menüden "Manage Nuget Packages" seçeneğinden seçelim.






























static void Main(string[] args)
{
            var source = @"C:\Users\n.esendal\a\dynamicExample.py";
            var engine = Python.CreateEngine();
            var scope = engine.CreateScope();
            var oper = engine.Operations;
            engine.ExecuteFile(source,scope);
            var Hesap = scope.GetVariable("Hesap"); //classı kullandık
            dynamic ins = oper.CreateInstance(Hesap);
            Console.WriteLine(ins.topla(15,20));
            Console.ReadKey();

}

Python uzantısı .py olacak şekilde aşağıdaki kodlarla hazırlanır. Adını "dynamicExample.py" olarak düzenlenir.


class Hesap():
    def __init__(self):
        pass
  
    def topla(self,x,y):
        return (x+y)
  
    def fark(self,x,y):
         return (x-y)



Bu python dosyasını uzantısı .py olacak şekilde bilgisayarıma kaydediyoruz.

Console projesine geldik ve python yolunu işaret edeceğimiz bir değişken tanımladık. Ve IronPython kütüphanesini "using Ironpython.Hosting;" kodunu ekleyerek kullanabiliriz.


Kodumuzu çalıştırırsak 15 ve 20 değerlerinin toplamı olan 35 sonucunu ekranda görürüz. 

























Python kodumuzda değişiklik yaparsak ekrana bilgi yazdıran kodu ekleyelim. (Python ve C# kodlarının son hali)


class Hesap():

 def __init__(self):

  pass  

 def topla(self,x,y):

  return (x+y)  

 def fark(self,x,y):

  return (x-y)  

 def yazdir(self,a):

  print(a)


Main Kodlarında direkt olarak dynamic türünden tanımlanmış olan değişkeni kullanarak son eklediğimiz yazdir metodunu çağıralım.



static void Main(string[] args)

{



            var source = @"C:\Users\n.esendal\a\dynamicExample.py";

            var engine = Python.CreateEngine();

            var scope = engine.CreateScope();

            var oper = engine.Operations;

            engine.ExecuteFile(source,scope);

            var Hesap = scope.GetVariable("Hesap");

            dynamic ins = oper.CreateInstance(Hesap);

            ins.yazdir(ins.fark(5, 15));

            Console.ReadKey();

}
















21 Eylül 2017 Perşembe

C# ile Hesap Makinesi

Merhabalar, 
Winforms kullanarak Hesap Makinesi Uygulaması yapacağız. Öncelikle Visual Studio ortamında Windows Forms Application oluşturuyoruz. C# dili kullanarak kodlama yapacağımız için C# dilini seçtiğimize emin olalım.

























Öncelikle formun tasarımını yapalım.






















Hesapla butonu form uygulamasında iş yapan öge olduğu için ona tıklanınca yapmasını istediğimiz kodlarını buttonun click eventine eklememiz gerekir. Bunun için buttona çift tıklanınca buttonclick metodu içerisine aşağıdaki kodlar yazılmaldır.












































































Amaç girilen değerleri ilgili değişkenlere atamak ve bu değişkenler üzerinde radio buttonlardan seçilenlere göre işlem yapmaktır.  Buttona tıklanması durumunda da sonuç bölümünde işlem sonucu gösterilmektedir.

20 Haziran 2016 Pazartesi

MVC Şablonu Nereye Kaçtı?

Merhaba arkadaşlar, bu makalemizde Visual Studio ortamında bir MVC projesi oluşturacağız.

.NET Framework ve Visual Studio'nun güncel versiyonuyla beraber MVC projesi oluşturma kısmında da minik değişiklikler oldu. Bu değişiklikler sonrasında durum öyle bir hale gelmiş ki; MVC şablonunun kayıp olduğu gibi bir rivayet bile dolanıyor :)
Öncelikle, File menüsünden New Project seçelim.




Burada, karşımıza gelen proje şablonlarından ASP.NET Web Application seçelim ve OK butonuna tıklayalım.




















Sonrasında karşımıza ASP.NET proje şablonları çıkacaktır.

Eğer yukarıdaki seçim ekranını göremiyorsanız, başlangıçta hedef olarak .NET Framework’ün 4.5 sonrasındaki herhangi bir versiyonunu seçerek bu sıkıntıyı ortadan kaldırabilirsiniz.İşlemleri tamamladıktan sonra, ASP.NET MVC ile çalışmak isterseniz yapmanız gereken Empty yerine MVC şablonunu seçmek olacaktır.

17 Aralık 2015 Perşembe

Algoritma Örneği

Merhaba arkadaşlar, bu makalemizde yeni bir örnek üzerinde algoritmamızı kurguyalım. Ardından Visual Studio ortamında bir Console projesi üzerinde örneğimizin kodlarını yazalım. Bu makalenin daha faydalı olabilmesi için öncelikle  Algoritma Nedir ve Algoritma Örneği makalesini okumanızı tavsiye ederim.
Yeni örneğimizde kullanıcı tarafından klavyeden girilen iki sayıdan büyük olanı küçük olana bölelim ve bölümü ekrana yazdıralım. Visual studio ortamına geçmeden önce problemin algoritmasını yazmamız gerekecektir. 

Dilerseniz şimdi algoritmasını yazmaya başlayalım.
1.Başla
2.Girilen sayıları bellekte tutabilmek ve gerektiğinde ulaşabilmek için sayısal değerleri tutabilecek 3 tane değişken tanımlayalım. değişkenler sayı1,sayı2 ve sonuç bilgileri içindir.
3.Kullanıcıdan ilk sayıyı iste
4.Kullanıcının girdiği sayıyı değişkenlerden ilkine atama işlemi.
5.Kullanıcıdan ikinci sayıyı iste
6.Kullanıcının girdiği ikinci sayıyı diğer değişkene ata
7.İki sayıdan büyük olanı tespit etme
8.Büyük olan sayıyı bulduğumuz için diğer sayının küçük olandır. Artık büyük sayıyı küçük sayıya bölme işlemi
9.Bölüm sonucunu ekrana yazdıralım.
10.Dur

Evet gördüğünüz gibi problemin çözümü için 10 tane adımdan oluşan bir algoritma yazmış olduk. Şimdi bunun kodlarını yazalım. Visual studio ortamına geçip bir console projesi oluşturalım. Projenin adı BolmeIslemi olsun.
















Proje şablonu olarak Console seçelim.





















Kodlarımızı main içerisine yazmamız gerekecektir. Klavyeden kullanıcı tarafından girilen değerlerden büyük olan küçük olana bölünür. Burada bulunan bölüm değeri sonuç değişkeninin içerisine atanır.




















Eğer ondalıklı değerlerin ekranda görülmesi sırasında veri kaybı yaşanmasını istemiyorsak böyle bir durumda sonuç değişkeninin ondalıklı değerleri tutabilmesi için o tipten bir değişken tanımlamamız gerekecektir. Değişkeni tanımlarken değişken tipini double ya da float olarak belirtmemiz durumunda sonuç ondalıklı ise herhangi bir veri kaybı gerçekleşmeyecektir. Double ile float tiplerinin arasındaki fark bellekte kapladıkları alanlardır. Double bellekte 64 bit yer kaplarken float 32 bit yer kaplıyor. 

Bu makalemizde yeni bir algoritma örneği yazmış olduk. Bir sonraki makalemizde görüşürüz. İyi Çalışmalar. :)

16 Aralık 2015 Çarşamba

Algoritma Nedir ve Algoritma Örneği


Merhaba arkadaşlar,  bu makalemizde algoritma nedir, algoritmayı neden yazarız ve algoritmayı yazarken dikkat etmemiz gereken kurallardan bahsedeceğim. Sonrasında algoritma nasıl olmalıdır sorusuna da cevap bulabileceğiniz minik bir örnek uygulama yapacağız.
Programlama ortamına yeni adım atmışsanız ve bu konular hakkında hiç bilginiz yokken kendinizi algoritma dersi içerisinde bulduysanız size göre iş biraz zor gözüküyor gibi olabilir. Bu tür karmaşıklıklardan uzak durmanızı ve acilen dersi anlamaya odaklanmanızı öneririm. :)
Hadi ısınma turumuzu tamamladığımıza göre algoritma nedir diyerek başlayalım. Birçoğunuz özellikle bu yıl üniversiteyi seçenler ilk kez bu derste adını duymuş olabilirler. Yazılım ile uğraşacaksanız bundan sonra sıkça duyacağınız bu kavram nedir?
Algoritma dediğimiz kavram, bir problemi çözmek veya belirli bir amaca ulaşmak için çizdiğimiz yoldur. Mevcut bir problemin çözümü sırasında izlenecek olan adımlardır bir diğer tanımlamayla algoritma. Problemin adımlarını belirlerken başlangıç ve son arasındaki diğer olaylar sırayla yazılır. Adımları yazarken dikkat etmemiz gereken ise mantıksal olarak sıradır. Düşündüklerimizi adımlar halinde yazmaktır.  
 Çok sık göreceğiniz algoritma bir programlama dili değildir. Sadece problemin çözümlenmesi için gerekli olan adımların sırayla belirtilmesidir. 
Hadi bir algoritma örneğinden bahsedelim. Arkadaşlarınızla buluşmak için dışarı çıkacaksınız hava durumuna göre ne giyeceğinize karar vermeniz gerekecek. Böyle bir senaryonun algoritmasını yazalım.
     1. Başla
     2. Akıllı telefonundan hava durumu uygulamasına bak.
     3. Hava sıcaklığını öğren.
     4 .Eğer hava sıcaklığı 20 derece üzerindeyse tshirt giy.
     5. Eğer hava sıcaklığı 20 dereceden düşükse kazak giy.
     6. Son
Dilerseniz şimdi bir örnek uygulama yapalım. 
Problem: Bir bakteri her 10 dakikada bir mitoz bölünüyor. Kullanıcının belirleyeceği kadar zaman geçtikten sonra, kaç adet yeni bakteri oluştuğunu hesaplayan programı yazınız. 
Bu tarz bir problemle karşılaştığımız zaman yapmamız gereken bizden istenen problemi çözüm aşamasında hangi işlemleri tek tek yaparsak bunları belirtmemiz gerekecektir.

  1. Başla
  2. Kullanıcının girdiği dakika bilgisini her 10 dakikada bir bölünme gerçekleşiyorsa kaç kez bölündüğünü bulmak için girilen değeri 10’a bölerek bölünme adedini bulma.(Bakteri bölünme hızı 10 dakika)
  3. Bakteri mitoz bölünme ile her seferinde iki farklı bakteri oluşturduğu için toplam kaç farklı bakteri oluştuğu hesaplanırken 2 üssü şeklinde 2.adımda bulunan bölünme adedi şeklinde hesaplanıyor olması gerekecektir. (2 üssü bölünme adedi)
  4. Dur
Algoritmayı da yazdığımıza göre şimdi bunun programını yazalım. Programı yazarken programlama dili olarak C# uygulama geliştirme ortamı olarak da Visual Studio kullanacağım.
File menüsü altından bir New Project diyelim. 














Şablon olarak kendimize bir Console projesi oluşturalım. Projenin isimlendirilmesi kısmında Name ve Solution Name isimlerini verelim. Bilgisayarda bu projenin nereye kaydedildiği bilgisini de görüyor olacağız.
















Projemizin türünü belirlediğimize göre artık kodlamayı yapabiliriz.
Kullanıcı etkileşimli bir örneğimiz olduğu için yapmamız gereken kullanıcıdan “Kaç Dakika” bilgisini alıyor olmamız gerekecektir. Kullanıcının girmiş olduğu değere göre kaç tane yeni bakteri oluştuğunu bulabiliriz. Kullanıcı tarafından girilen değeri, bakterinin 10 dakikada bir bölündüğünü göz önüne alarak, kaç kez bölünme işleminin gerçekleştiğini bulmak için kullanacağız. Bu işlemi yapan bir metod hazırlayalım.
         1. Metoda, bölünme işleminin yapılacağı toplam süreyi saniye cinsinden alan bir parametre tanımlayalım. (int sure)
         2. Girilen bu değer metod içerisinde kullanılacaktır. Her 10 dakikada bölünme işlemi gerçekleştiği göz önüne alınarak bu girilen değerin kaç kez bölünme gerçekleştirdiği hesaplanır. (sure/10)
         3. Her bir bakterinin mitoz bölünme sonucu 2 tane yeni bakteri oluşturduğu bilgisini daha önceden bildiğimizi varsayarak bölünme adedi kadar yeni bakteriler oluştuğu düşünülür ve bunu hesaplamak adına 2 üssü bolünme adedi bilgisi kullanılır.
Tanımlamış olduğumuz metodu main dışarısına class içerisine yazıyor olmamız gerekecektir.











Bir Console projesinde yazmış olduğumuz kodları Visual Studio ortamında çalıştırmak için kullanmamız gereken bazı yapılar mevcuttur.
         1. CTRL+F5 ile çalıştırabiliriz.
         2. F5 ile çalıştırırsak kod hemen derlenip çalışacak ve birden kapanacaktır. Bu konsol ekranı görebilmemiz için Console.Read() komutunu kullanabiliriz.
         3. Visual Studio File menüsü altındaki sırada bulunan Start’a basarak çalıştırabiliriz. Yine ekranın hemen kapanmaması için Console.Read() komutunu kullanabiliriz.
Console projelerde uygulamayı çalıştırdığımız anda kodlar main içerisinde sırasıyla satır satır çalışır ve main’den çıktığı anda uygulama kapanır. Dolayısıyla kodları main içerisine yazmamız gerekecektir. Main dışarısına yazdığımız metoda çağrıda bulunmak istersek yine main tarafından çağırmamız gerekecektir.








Kullanıcı uygulamayı çalıştırdığı anda uygulama hakkında bilgi alması ve ondan “Kaç Dakika” bilgisini girebilmesi için ekrana Console.WriteLine() komutunu kullanarak bilgi yazdıralım.




Metoda BolunmeHesapla ismini verelim bu isim bizim için metodu kullanmak istediğimiz zaman ulaşabilmemiz için gerekli olan o metodu çağırmaya yarayan ifadedir.
     Programını da tamamlamış olduk. İyi Çalışmalar bir sonraki makalemizde görüşmek üzere :) 

Session Nedir? Neden İhtiyacım Var?

HTTP nedir? HTTP, yani Hypertext Transfer Protocol , web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin t...