folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder | C#.Net Dersleri | Dersler .. Dökümanlar .. Örnekler..



| C#.Net Dersleri | Dersler .. Dökümanlar .. Örnekler..

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    Merhaba arkadaslar bu bölümümüzde C#.net Dilini En basindan En sonuna Kadar Anlata bildiğim kadar anlatmaya sizlere yardimci olmaya çaliscam hem kendi yazdiğim bazi dökümanlari hemde bazi yazilim sitelerinden bulduklarimi burada paylasicam .. Umarim yararli bir konu olur .. Öncelikle Bize lazim olan en önemli programimiizi temin edelim... Visual Studio 2005 Programimizi.. internettte programimiizin express sürümü mevcut .. Full bulan arkadaslar onuda kullana bilirler ama Express Edition da bizim işimizi görür..

    İndirmek isteyen arkadaslar

    http://msdn.microsoft.com/vstudio/express/visualcsharp/default.aspx

    Adresinden programimizi temin edebilirler...

    Şimdi İlk programimizi Kurduk ve açtiğimizi Farzedelim Arayüzümüz geldikten Sonra Sol üst köşedeki File Menüsüne girip NEW Menüsünden New Project i seçerek Ordan İlk C#.net PRojemizi açalimm.. Program Arayüzünü öğrenmek isteyen arkadaslar öncelikle net te ilk basta Visual Studio 2005 Kullanimi diye aratirlarsa Ön bilgi bulabilirler Ben direk Kodlama Bölümüne Geçicem Çünkü Anlat Anlat Program Bitmez :)




    Kontakt : TR_ip@tahribat.com
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    Her Yönüyle ilk C# Programımız

    C# dili ortaya çıkalı daha hiç birşey yapmayan varsa ya da birşeyler yapıp da ne yaptığından emin olmayan varsa işte bu yazı tam size göre. Bu yazımızda klasik Merhaba Dünya programımızı yazacağız.Ama programımızı yazarken her şeyi adım adım öğreneceğiz. Unutmayın amacımız burada Merhaba Dünya yazmak değil. :) O halde aşağıdaki programı iyice inceleyin önce, şöyle bir süzün programı yukarıdan aşağıya, fazla detaylara inmeden yazımızı okumaya devam edin;

    //dosya adı : Merhaba.cs

    using System;
    namespace MerhabaDunya
    {
    class Sınıf1
    {
    static void Main(string args[])
    {
    Console.WriteLine("Merhaba Dünya");
    }
    }
    }

    Yukarıdaki ilk programımızı incelediğinize göre açıklamalarımıza geçebiliriz. Eğer önceden C++ ve Java ile ilgilenmiş arkadaşlar varsa yukarıdaki kodlar tanıdık gelebilir. Nitekim, her ne kadar Microsoft firması ilk başlarda bunu kabul etmese de C# dili Java ve C++ dillerinin harmanlanmasından oluşmuş bir dildir. Bugün bunu kabul etmeyen yoktur sanırım.

    Yukarıdaki ilk programımızın kodunu ben Notepad ile yazdım. Ama kodu derleyip çalıştırmak için bir C# derleyicisine ihtiyacımız olacak. C# derleyicisi Visual Studio.NET ile kurulabileceği gibi www.microsoft.com web sitesinden .NET Framework yazılımını indirerek de kurulabilir. Eğer Visual Studio ortamında çalışıyorsanız yukarıdaki kodları Visual Studio .NET ' in sunduğu hazır proje şablonlarından rahatlıkla oluşturabilirsiniz. Visual Studio programını çalıştırdıktan sonra Project->New menüsünden dil olarak Visual C# ve proje şablonu olarak da "Console Application" seçerseniz, main işlevi içindeki kodlar dışındaki yapı otomatikmen oluşturulacaktır.Eğer .NET Framework yapısını kurduysanız Console Ekranından C# derleyicisini çalıştırmalısınız. Komut ekranını yazarak kaynak kodumuzu derleyebilirsiniz.

    Şimdi kodlarımızı inceleyelim. İlk satırdaki ifadesi System adlı bir isim alanının kullanılacağını belirtiyor.Peki nedir bu isim alanı(Namespace). İsimalanı kavramı son yıllarda program modüllerinin çok sayıda artmasından dolayı popüler hale gelmiştir. Kolay ve hızlı programlama yapmamızı sağlayan bir takım hazır kütüphaneler her ne kadar işimizi kolaylaştırsa da eğer isimalanları olmasaydı kullanacağımız her kütüphane bizim için işin içinden çıkılmaz bir hale gelebilirdi. Düşünün ki iki ayrı firma iki ayrı sınıf kütüphaneleri oluşturdu ve bu kütüphanelerin içinde aynı isimli birden çok sınıf yapısı var. Eğer biz programcı olarak iki firmanın da kütüphanesini kullanmak istiyorsak her ikisini aynı kod içinde kullanamayız. Çünkü aynı isimli sınıflar derleme aşamasında hata verecektir. Bu durumda yapılması gereken tek şey ya da en etkili yöntem isimalanlarını kullanmaktır. Yani bir sınıfa(class) ulaşabilmek için onun isim alanıyla çağırmak. İsim alanları hiyerarşik yapıda olabilir. Mesela System isim alanının altında başka bir isim alanı onun altında başkaları vs. İşte .NET isimalanı(namespace) hiyerarşisinin en tepesinde bulunan isim alanı System adlı isimalanıdır. En temel işlemlerimiz için bile bu isim alanını kullanmalıyız. Aksi halde programımız çalışmayacaktır. İsimalanlarını kullanmak için isimalanının başına using sözcüğü getirilir.

    Soru: System isim alanının içinde Data isimalanında bulunan bir cs adlı sınıfı kullanabilmek için kaynak kodumuza ne eklememiz gerekir.

    Cevap : Kaynak kodumuzun en başına aşağıdaki ifadeyi yazmamız gerekir.

    using System.Data;

    Bildiğiniz gibi C# dili %100 nesne tabanlı bir dildir. Yaptığımız herşey bir sınıf nesnesidir C# dilinde. Nesne olmayan hiçbirşey yoktur. C++ dilindeki main işlevini hatırlarsınız çoğunuz. Programımız c++ dilinde main işlevinden başlar ama main işlevi hiç bir zaman bir sınıf içinde olmamıştır.C# dilinde herşey sınıflarla temsil edildiği için main işlevi de bizim belirlediğimiz bir sınıfın işlevi olmak zorundadır. Yukarıdaki programımızda ifadesi ile programımızda bir sınıf nesnesi oluşturuyoruz. Sınıf1 sınıfının bir işlevi olan main'in elbette eskiden de olduğu gibi özel bir anlamı vardır. Biliyorsunuz ki derleyiciler programın nerden çalışacağını bilmek isterler, aksi halde derleme işleminden sonra "programınız için başlama noktası bulunamadı" hatası alırız. Bu yüzden main işlevi bizim için eskiden de olduğu gibi programımızın başlangıç noktasıdır. Yani biz programda yapmak istediklerimizi main işlevi içinde gerçekleştireceğiz. Sınıf tanımlamalarımızı ise istediğimiz noktada yapabiliriz. Daha öncede dediğimiz gibi isimalanları birçok sınıfın veya tek bir sınıfın oluşturduğu kümedir. Bizim ana programımız da bir sınıf olduğuna göre Class1 sınıfını istediğimiz isimli bir isimalanına sokabiliriz. Yukarıda yazarak isimalanını başlatıyoruz.

    Şimdi main işlevinin içine bakalım, System isimalanında bulunan Console sınıfının bir metodu olan WriteLine() ile ekrana bir string ifadesi yazdırıyoruz. Biz burda iki tırnak ifadesi içinde yazımızı belirtmemize rağmen fonksiyonun kullanmı bununla sınırlı değildir. C# dilindeki fonksiyon aşırı yükleme (function overloading)kullanılarak fonksiyonu birçok parametrik yapıda kullanabilmemiz sağlanmıştır. Fonksiyon aşırı yükleme konusuna bundan sonraki yazılarımızda değineceğimizi belirtelim. WriteLine() işlevinin adından da anlaşılacağı gibi ekrana basmak istediğimiz yazıdan sonra satır atlama işlemi yapar.Bunu test etmek için bir tane "Merhaba Dünya" da siz yazdırın. Göreceksiniz ki siz belirtmemenize rağmen alt alta iki tane "Merhaba Dünya" yazısı çıkacak.

    Eğer bu programı yazıp derlediyeseniz ne mutlu TBT Üyeleri ilk C# dünyasına güzel bir adım attınız.

    Kontakt : TR_ip@tahribat.com
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    Visual C# ile Windows Menüleri Hazırlama

    Merhaba, bu makalemizde, hemen hemen tüm Windows uygulamalarının temel yapı taşı olan Windows menülerinin nasıl hazırlandığını ve basit bir uygulamasını adım adım göreceğiz. Bildiğiniz gibi Windows menülerini şimdiye kadar Visual Basic ortamında çok basit bir şekilde yapmak mümkündü. Ama artık Visual C# ile menü hazırlamak hem daha kolay hem de daha eğlenceli. Bu makalede yapacağımız uygulamadaki amacımız, File ve Edit bölümünden oluşan Windows menüsünü tek bir Windows butonuyla aktif ya da pasif duruma getirmek.
    Şimdi uygulamamızın ilk adımı olan yeni proje oluşturma sayfasını açalım.
    File->New -> Project menüsünü kullanarak aşağıdaki gibi yeni bir proje oluşturalım.
    Proje tipi olarak Visual C# Project, template olarak da Windows Application seçtikten sonra projemize uygun isim verip OK butonuna tıklayalım.



    Projemizi oluşturduğumuzda Visual C# IDE 'sinin bizim için bir başlangıç formu oluşturduğunu görürüz. Bu form doğal olarak şu anda boştur. Toolbox menüsünü kullanarak Form üzerine istediğimiz kontrolleri sürükle bırak yöntemiyle yerleştirebiliriz. Ya da istediğimiz kontrolü çift tıklayarak da aynı işlevi gerçekleştirebiliriz. Eğer toolbox menüsünü göremiyorsanız ekranın sol alt küşesinde bulunan



    ToolBox ikonuna tıklayın. Şimdi formumuza basit bir MainMenu kontrolu ekleyelim. Yine ToolBox menüsünden aşağıdaki ikona şekline benzeyen kısma çift tıklayın. Eğer işlem başarılıysa formunuzun en üst kısmında edit edilmek üzere bir menü oluşacaktır.



    MainMenu üzerine fare ile gelerek istediğiniz menü elemanlarını ekleyin.Ben önce File elemanını sonra Edit elemanını ve Edit elemanının içinde de Copy ve Paste menü elemanlarını aşağıdaki gibi oluşturdum.



    Şimdi menü elemanlarımıza Properties penceresinden isim verelim. Aşağıda gördüğünüz pencereden form design penceresinden seçtiğiniz elemanla ilgili özelliklere ulaşabilirsiniz.Şimdi Edit menü elamanına tıklayarak Properties ekranındaki name özelliğine "menuEdit" yazalım. Burda menu elemanına verdiğimiz ismi daha sonra kod yazarken kullanacağımız için aklımızda kalacak bir isim vermemiz düzenli kod yazmak için önemli bir sebeptir. Menü elemanlarıyla işimiz bittiğine göre sıra menüyü kontrol edeceğimiz butonu yerleştirmeye geldi. ToolBox penceresinden "Buton" a çift tıklayarak forma bir buton yerleştirelim .Daha sonra butona tıklayıp Properties penceresinden buton ismi (Name) olarak "BizimButon " yazalım. BizimButon ' un text özelliğine ise "MENU PASİF ET" yazısını yazalım. Bu yazıyı yazmamızın sebebi ise şudur: Mene elemanları varsayılan olarak aktif durumdadırlar. Bu yüzden menüyü pasif hale getirmek için bu yazıyı seçtik.



    Evet,Form tasarım işlemi bitti. Şimdi sıra geldi BizimButon ile menüye aktif ve pasif durumları arasında geçiş yaptırmak. Tabi asıl işte şimdi başlıyor.
    Form üzerindeki butona çift tıklayarak kod yazma ekranına gelelim.
    Gördüğünüz gibi Visual C# bizim için bir takım kodlar oluşturdu. Biraz bu hazır kodları ana hatlarıyla inceleyelim.
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    Yukarıdaki kodlarla programımızın kullanacağı bir takım sistemler derleyiciye bildiriliyor.
    public class Form1 : System.Windows.Forms.Form
    System.Windows.Froms.Form sınıfından yeni bir Form1(bizim form) sınıfı türetilerek bu form içindeki elemanlar tanımlanıyor.
    private System.Windows.Forms.MainMenu mainMenu1;
    private System.Windows.Forms.MenuItem menuFile;
    private System.Windows.Forms.MenuItem menuEdit;
    private System.Windows.Forms.MenuItem menuItem3;
    private System.Windows.Forms.MenuItem menuItem4;
    private System.Windows.Forms.Button BizimButon;
    private System.ComponentModel.Container components = null;
    private void InitializeComponent() işlevi ile Form1 sınıfı içindeki elemanlarla ilgili ilk işlemler yapılıyor. Elemanların form üzerindeki yeri ve elemanlara ait Properties penceresinden tanımladığımız bütün özellikleri bu işlev ile yerine getirilir.
    static void Main()
    {
    Application.Run(new Form1());
    }
    Uygulamamızın Form1 üzerinden gerçekleştirileceğini belirtir.
    İşte bu da bizim kodumuz :
    private void BizimButon_Click(object sender, System.EventArgs e)
    {
    if (menuEdit.Enabled)
    {
    menuEdit.Enabled=false;
    BizimButon.Text="MENU AKTIF ET";
    }
    else
    {
    menuEdit.Enabled=true;
    BizimButon.Text="MENU PASIF ET";
    }
    }
    Bu kodu yazabilmek için form design penceresinden BizimButon çift tıklayarak BizimButon_click() işlevinin içine geçelim. Yukarıdaki kodda eğer menuEdit aktifse pasif duruma getiriyoruz ve BizimButon 'a da "MENU AKTIF ET" yazıyoruz. Eğer menuEdit zaten pasifse Menuyu aktif hale getirip BizimButon yazısını da "MENU PASIF ET" yapıyoruz. Aşağıda her iki durum için programımızın çıktısı mevcuttur

    Kontakt : TR_ip@tahribat.com
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    C ve C++ bakış açısıyla C# dili

    Bildiğimiz gibi bilgisayarları programlamak için programlama dillerine ihtiyaç duyulur.Bu dillerden en popülerleri Basic,C,C++,Pascal,Java ve Assembler 'dır.Makina dili ise donanımı kontrol etmek için donanımı üreten firma tarafından tanımlanan komutlar kümesidir. Bazı programlama dilleri derleyicilere ihtiyaç duymasına karşın bazıları ise yorumlayıcılara ihtiyaç duyarlar, mesela bir c++ programını çalıştırabilmek için C++ derleyicisine ihtiyacımız varken, Perl ile yazılmış bir CGI scripti için komut yorumlayıcısına ihtiyacımız vardır. Derleyiciler programı çalıştırmadan önce kodları makina komutlarına çevirirler fakat yorumlayıcılar bir grup kodu satır satır ya da bloklar halinde yorumlayarak çalıştırırlar.

    Aslında derleyiciler de, komut yorumlayıcıları da birer bilgisayar programından başka birşey değildirler.Yani c ve c++ dilleri bir giriş bekleyen ve çıkış veren birer bilgisayar programları gibi düşünülebilir.Giriş olarak kaynak kodu veren bu programlar çıkış olarak ise makina kodu üretirler.

    C ve C++ dillerine kısa bir bakış:

    C dili en popüler yapısal programlama dilidir.C dili Dennis Ritchie tarafından, Martin Richards ve Ken Thompson tarafından geliştirilen BCBL ve B dillerinin temelleri üzerine kuruldu.

    C dili "The C Programming Language by Brian Kernighan and Dennis Ritchie" kitabıyla büyümüştür.C dili için, 1983 yılının büyük önemi vardır.Çünkü 1983 yılında ANSI standartlar komitesi C standartları için toplanmıştır.Bu standartlaşma süreci tam 6 yıl sürmüştür.Ve tabi ki şu anki standartların oluşumuna katkıda bulunan ANSI 99 standartları da diğer önemli bir gelişmedir.

    C programcılar tarafından herhangi bir tür program geliştirmek için yazılmış genel amaçlı bir dildir. C ile bir düşük seviyeli sistem için program yazabileceğimiz gibi, yüksek seviyeli bir GUI(Grafik Arabirimi) tasarlamamız da mümkündür.Ve elbette kendi kütüphanemizi de C ile oluşturabiliriz.C dilinin ortaya çıkmasından bunca yıl geçmesine rağmen popülaritesini hiçbir zaman kaybetmemiştir. Günümüz programcıları çeşitli amaçlar için programlarını geliştirirken C dili ile yazılmış kaynak kodlarını kullanırlar.

    Bjarne Stroustrup 1980 yıllında C++ dilini ortaya çıkarmıştır. C++ dili C temelli ve C nin bir üst kümesi olarak düşünülebilir. C++ en popüler nesne temelli programlama dilidir. C++ dilinin ilk ismi "C with Classes"(C ile sınıflar) idi. C++ dili C diline nazaran daha etkili ve güçlüdür.Ve en önemli özellği ise C 'den farklı olarak nesne temelli bir dildir.Şu anda C++ dili ANSI ve ISO kuruluşları tarafından standartlaştırılmıştır. Bu standartların son versiyonu 1997 yılında yayınlanmıştır.

    C# diline kısa bir bakış:

    C#, güçlü, modern, nesne tabanlı ve aynı zaman type-safe(tip-güvenli) bir programlama dilidir.Aynı zamanda C#, C++ dilinin güçlülüğünü ve Visual Basic' in ise kolaylığını sağlar.Büyük olasılıkla C# dilinin çıkması Java dilinin çıkmasından bu yana programcılık adına yapılan en büyük gelişmedir. C#, C++ 'ın gücünden , Visual Basic 'in kolaylığından ve Java 'nın da özelliklerinden faydalanarak tasarlanmış bir dildir. Fakat şunu da söylemeliyiz ki, Delphi ve C++ Builder 'daki bazı özellikler şimdi C# 'da var. Ama Delphi ya da C++ Builder hiçbir zaman Visual C++ ya da Visual Basic 'in popülaritesini yakalayamamıştır.

    C ve C++ programcıları için en büyük sorun, sanırım hızlı geliştirememedir. Çünkü C ve C++ programcıları çok alt seviye ile ilgilenirler.Üst seviyeye çıkmak istediklerinde ise zorlanırlar.Ama C# ile artık böyle bir dert kalmadı.Aynı ortamda ister alt seviyede isterseniz de yüksek seviyede program geliştirebilirsiniz.C# dili Microsoft tarafından geliştirilen .NET paltformunun en temel ve resmi dili olarak lanse edilmiştir.C# dili Turbo Pascal derleyicisini ve Delphi 'yi oluşturan takımın lideri olan Anders Heljsberg ve Microsoft'da Visual J++ takımında çalışan Scott Wiltamuth tarafından geliştirilmiştir.

    .NET framework'ünde bulunan CLR (Common Language Runtime), JVM (Java Virtual Machine)' ye, garbage collection, güvenilirlik ve JIT (Just in Time Compilation) bakımından çok benzer.

    CLR, .NET Framework yapısının servis sağlama ve çalışma zamanının kod organizasyonu yapan ortamıdır. CLR, ECMA standartlarını destekler.

    Kısacası C# kullanmak için CLR ve .NET Framework sınıf kütüphanesine ihtiyacmız vardır. Bu da demek oluyor ki C#, JAVA, VB ya da C++ değildir. C,C++ ve JAVA 'nın güzel özelliklerini barındıran yeni bir programlama dilidir. Sonuç olarak C# ile kod yazmak hem daha avantajlı hem daha kolay hem de etkileyicidir.

    Kontakt : TR_ip@tahribat.com
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    C#'da İfadeler, Tipler ve Değişkenler

    Bu derste C# dilindeki ifadeler,tipler ve değişkenler anlatılacaktır.
    Dersimizin hedefleri :
    • Değişken kavramının anlaşılması.
    • C# dilinde bulunan basit tiplerin öğrenilmesi.
    • C# dilindeki ifadelerin temel olarak anlaşılması.
    • String veri tipinin öğrenilmesi.
    Değişkenleri en sabit şekilde verilerin depolandğı yerler olarak tanımlayabiliriz. Değişkenlerin içine verilerimizi koyabilirirz veya değişkenlerimizin içindeki verileri C# programındaki işlemlerimiz için kullanabilliriz. Değişkelerin tipini belirleyen faktör, onların içerdikleri verilerin çeşitleridir.
    C# dilinde kullanacağımız her değişkenin bir tipi olmak zorundadır ( Vbscript ve JavaScript gibi dillerde değişken tanımlarken onun tipini de ayrıca belirtmeye gerek yoktur.) Bir değişken üzerinde yapılan tüm işlemler de onun hangi tipte bir değişken olduğu göz önüne alınarak yapılır. Böylece programda bütünlük ve güvenlik korunmuş olur.
    Boolean ( doğru/yanlış ), ve üç sayısal veri tipi; integer( tamsayı ), floating point (ondalıklı sayı ) ve decimal( muhasebe ve finansal işlemler için) C# dilinin en basit veri tipleri olarak sayılabilir.
    Kod 1 : Boolean değerlerin görüntülenmesi : Boolean.cs
    using System;
    class Booleans
    {
    public static void Main()
    {
    bool content = true;
    bool noContent = false;
    Console.WriteLine("It is {0} that C# Station provides C# programming language content.", content);
    Console.WriteLine("The statement above is not {0}.", noContent);
    }
    }
    Yukarıdaki Kod 1’de de görüleceği gibi boolean değişkenler ya true(doğru) veya false(yanlış) değerlerini alabilirler. Programın çıktısı şöyle olacaktır.
    >It is True that C# Station provides C# programming language content.
    >The statement above is not False.
    Aşağıdaki tablo tamsayı tiplerini, boyutlarını ve alabilecekleri değer aralıklarını göstermektedir.
    Type ( Tip ) Size (in bits)(boyut ) Range (aralık)
    sbyte 8 -128 to 127
    byte 87 0 to 255
    short 16 -32768 to 32767
    ushort 16 0 to 65535
    int 32 -2147483648 to 2147483647
    uint 32 0 to 4294967295
    long 64 -9223372036854775808 to 9223372036854775807
    ulong 64 0 to 18446744073709551615
    char 16 0 to 65535
    Tamsayı tipleri küsuratsız işlemler için çok elverişlidirler. Fakat char( karakter) tipi Unicode standartlarına uygun olarak bir karakteri temsil eder. Yukarıdaki tablodan da göreceğiniz gibi elimizde çok sayıda tamsayı tipimiz vardır. Bunlardan istedikleriminizi ihitiyaçlarımıza göre rahatça kullanabiliriz.
    Bir sonraki tablo ise ondalık (floating point ) ve decimal veri tiplerini,boyutlarını, hassasiyetlerini ve geçerli oldukları aralıkları listeler.
    Type ( Tip ) Size (in bits)(boyut ) Precision Range
    float 32 7 digits 1.5 x 10-45 to 3.4 x 1038
    Double 64 15-16 digits 5.0 x 10-324 to 1.7 x 10308
    Decimal 128 28-29 decimal places 1.0 x 10-28 to 7.9 x 1028
    Ondalıklı sayıları küsuratlı işlemlerde kullanmak iyi olur. Bunun yanında muhasebe ve finansal işlemler için decimal veri tipi daha uygun olacak şekilde tasarlanmıştır.
    Bilgisayar programları işlemleri yaparken ifadeleri kullanırlar ve sonuç ortaya çıkartırlar. Programlarda yer alan ifadeler değişkenler ve işleçlerden ( operatör) oluşurular. Bir sonraki tabloda işleçleri, işleçlerin işlem sıralarını ve işleme yönlerini görebilirsiniz.
    Category ( kategori) Operator(s) (işleç/işleçler) Associativity(işeme yönü)
    Primary (x) x.y f(x) a[x] x++ x-- new typeof sizeof checked unchecked left Unary + - ! ~ ++x --x (T)x left
    Multiplicative * / % left
    Additive + - left
    Shift << >> left
    Relational < > <= >= is left
    Equality == != right
    Logical AND & left
    Logical XOR ^ left
    Logical OR | left
    Conditional AND && left
    Conditional OR || left
    Conditional ?: right
    Assignment = *= /= %= += -= <<= >>= &= ^= |= right
    Sol işleme yönü demek işlemlerin soldan sağa doğru yapıldığıdır. Sağ işleme yönü demek işlemlerin sağdan sola doğru yapıldığıdır. Mesala atama işleçlerinin hepsinde önce sağ tarafın sonucu bulunur ve bu sonuç sol tarafa aktarılır.
    Kod 2 : Unary Operators: Unary.cs
    using System;
    class Unary
    {
    public static void Main()
    {
    int unary = 0;
    int preIncrement;
    int preDecrement;
    int postIncrement;
    int postDecrement;
    int positive;
    int negative;
    sbyte bitNot;
    bool logNot;

    preIncrement = ++unary;
    Console.WriteLine("Pre-Increment: {0}", preIncrement);
    preDecrement = --unary;
    Console.WriteLine("Pre-Decrement: {0}", preDecrement);
    postDecrement = unary--;
    Console.WriteLine("Post-Decrement: {0}", postDecrement);
    postIncrement = unary++;
    Console.WriteLine("Post-Increment: {0}", postIncrement);
    Console.WriteLine("Final Value of Unary: {0}", unary);
    positive = -postIncrement;
    Console.WriteLine("Positive: {0}", positive);
    negative = +postIncrement;
    Console.WriteLine("Negative: {0}", negative);
    logNot = false;
    logNot = !logNot;
    Console.WriteLine("Logical Not: {0}", logNot);
    }
    }

    İfadeler işlemler yapılırken arka-artırma ve arka-azaltma işleçleri önce değişkenin değerini döndürür sonra değişken üzerinde artırma veya azaltma işlemini yapar. Diğer taraftan, ön-artırma ve ön-azaltma işleçleri önce değişken üzerinde artırma veya azaltma işlemini yapar sonra değişkenin son halini döndürür.
    Kod 2‘de unary (tek) değişken önce sıfır olarak atanıyor. Ön-artırma (pre-increment) işleci uygulandığında, unary değişkenin değeri 1’e çıkıyor ve “preIncrement” değişkenine atanıyor. Hemen arkasında Ön-azaltma(pred-decrement) işleci sayesinde unary değişkenimiz tekrar sıfır değerini alıyor preDecrement değişkenine bu değer atanıyor.
    Arka-azaltma (post-decrement) işleci unary değişkenimize uygularsak bu değişkenimizin değeri değişiyor ama önce değişkenin ilk değeri postDecrement değişkenine atanıyor. Sonra ise arka-artırma (post-increment) işlecini uygularsak unary değişkenimizin değeri azalıyor fakat postIncrement değişkenin değeri unary değişkenimizin ilk değeri olarak kalıyor.
    Mantıksal değil işareti, doğru ifadeyi yanlış, yanlış ifadeyi ise doğru olarak değiştirir. Kod 2’inin çıktısı şöyle olacaktır :
    >Pre-Increment: 1
    >Pre-Decrement 0
    >Post-Decrement: 0
    >Post-Increment -1
    >Final Value of Unary: 0
    >Positive: 1
    >Negative: -1
    >Logical Not: True
    Kod 3. Binary Operators: Binary.cs
    using System;
    class Binary
    {

    public static void Main()
    {
    int x, y, result;
    float floatResult;
    x = 7; y = 5;
    result = x+y;
    Console.WriteLine("x+y: {0}", result);
    result = x-y;
    Console.WriteLine("x-y: {0}", result);
    result = x*y;
    Console.WriteLine("x*y: {0}", result);
    result = x/y;
    Console.WriteLine("x/y: {0}", result);
    floatResult = (float)x/(float)y;
    Console.WriteLine("x/y: {0}", floatResult);
    result = x%y;
    Console.WriteLine("x%y: {0}", result);
    result += x;
    Console.WriteLine("result+=x: {0}", result);
    }
    }
    Kod 3: te birçok aritmetik işlemler yapılıyor. Bu işlemlerin sonucunu da sizler tahmin edebilirsiniz...
    “floatResult” değişkenin tipi ondalıklı sayı tipi olduğu ve “x” ve “y” değişkenlerimiz tamsayı tiplerinde oldukları onları açık biçimde ondalıklı sayı tipine çevirdik ( explicitly cast ) ve bu şekilde işlem yaptık.
    Yukarıdaki kod parçasında bir de kalan (remainder % ) işlecinin kullanılışına dair örnek verdik. Bu işleç, iki sayının bölümününden kalan sayıyı sonuç olarak döndürür.
    Son olarak yazdığımız ifadede yeralan atama işleci de (+=) C/C++ ve C# programcılarının sıklıkla kullandıkları bir atama ve işlem yapma türüdür. Bu ifade aslında şu ifadenin kısa yoludur : “result = result + x”.
    Şimdiye kadar burada sıkça gördüğünüz diğer veri tipi ise string ( karakter dizisi veya karakter katarı)’dir. String veri tipi Unicode karakter tiplerinin bir listesini içerirler ve tek çift tırnak işaretleri arasında yazılırlar.

    Kontakt : TR_ip@tahribat.com
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    C# Kontrol yapıları ve seçme işlemleri

    Bu derste C# dilindeki ifadeler,tipler ve değişkenler anlatılacaktır. C# dilinde kullanılan seçme veya kontrol ifadelerini öğreneceksiniz.
    Dersimizin hedefleri :
    • "İf" (eğer) ifadesinin kullanımı "
    • "switch" (çoktan-seç) ifadesini kullanımı "
    • "break" ifadesinin "switch" ifadesi içerisinde nasıl kullanıldığı
    • " "goto" ifadesinin yerinde ve etkili kullanılması
    Önceki derslerimizde, her program belirli ifadeleri sırasıyla çalıştırıp bitiyordu. Program içinde inputlara veya program içinde yapılan hesaplara göre değişik işlemler yapılmıyordu. Bu derste öğrendiklerimiz de programlarımızın belirli şartlara göre değişik şekillerde çalışmasını sağlayacaktır. İlk seçme ifademiz "if". "if" kontrol yapısının 3 temel formu vardır.
    Kod 1 : IF yapısının değişik formlarda kullanımı : IfSelection.cs
    using System;
    class IfSelect
    {
    public static void Main()
    {
    string myInput;
    int myInt;
    Console.Write("Please enter a number: ");
    myInput = Console.ReadLine();
    myInt = Int32.Parse(myInput);
    // Single Decision and Action with brackets
    if (myInt > 0)
    {
    Console.WriteLine("Your number {0} is greater than zero.", myInt);
    }
    // Single Decision and Action without brackets
    if (myInt < 0)
    Console.WriteLine("Your number {0} is less than zero.", myInt);
    // Either/Or Decision
    if (myInt != 0)
    {
    Console.WriteLine("Your number {0} is not equal to zero.", myInt);
    }
    else
    {
    Console.WriteLine("Your number {0} is equal to zero.", myInt);
    }
    // Multiple Case Decision
    if (myInt < 0 || myInt == 0)
    {
    Console.WriteLine("Your number {0} is less than or equal to zero.", myInt);
    }
    else if (myInt > 0 && myInt < = 10)
    {
    Console.WriteLine("Your number {0} is between 1 and 10.", myInt);
    }
    else if (myInt > 10 && myInt < = 20)
    {
    Console.WriteLine("Your number {0} is between 11 and 20.", myInt);
    }
    else if (myInt > 20 && myInt < = 30)
    {
    Console.WriteLine("Your number {0} is between 21 and 30.", myInt);
    }
    else
    {
    Console.WriteLine("Your number {0} is greater than 30.", myInt);
    }
    }
    }
    Kod 1'de tüm program boyunca tek bir değişkeni kullanıyoruz, "myInt". Kullanıcıdan etkileşimli olarak veri almak için önce "Lütfen bir sayı giriniz :" iletisini konsula yazdırıyoruz. "Console.Readline()" ifadesi ile program kullanıcıdan bir değer girmesini bekler. Bir rakam yazılınca ve enter tuşuna basılınca program yazılan değeri önce string tipinde olan myInput değişkenine atanıyor. String olarak alınan veriyi program tamsayı tipinde bir değişken olarak kullanmak istediği için "myInput" tamsayı tipine dönüştürülmeli. Bu dönüşüm için "Int32.Parse(myInput)" komutunu kullandık ( tip dönüşümleri ve Int32 gibi veri tipleri ileriki derslerde incelenecektir.) Daha sonra, dönüşümün sonucu "myInt" isimli değişkene aktarılıyor.
    Artık istediğimiz tipte bir veriye sahibiz ve bunu "if" ifadesi içinde işleyebiliriz. "if" ifade bloğunun ilk formu şu şekildedir : if(mantıksal ifade) { "mantıksal ifade"nin doğru olası durumunda yapılması gerekenler }. Öncelikle "if" anahtar kelimesi ile başlamalıyız. Sonrası parantezler arasındaki mantıksal ifade. Bu mantıksal ifadenin doğru veya yanlış olması bulunur. Biz programımızda kullanıcıdan aldığımız sayının sıfırdan büyük olup olmadığını kontrol ediyoruz">0" ile. Eğer sayı sıfırdan büyükse, mantıksal ifadenin sonucu doğrudur ve { } parantezleri arasındaki kod bloğu çalıştırılır. Eğer mantıksal ifade yanlış bir sonuç üretirse { } arasındaki kon bloğu çalıştırılmadan bloktan sonraki ifadelere geçer.
    İkinci "if" ifadesi aslında birincisi ile aynıdır, ikincisi sadece blok içinde değildir. Eğer boolean ifade doğru sonuç üretirse, bu ifadeden hemen sonraki çalışır. Boolena ifadenin yanlış olması durumunda ise bu ifadeden hemen sonraki ifade çalıştırılmadan bir sonraki ifadeye geçilir ve o ifade çalıştırılır. Bu şekildeki "if" yapısını, boolean ifadenin doğru olmasında sadece bir tane ifade çalıştırılacaksa yeterlidir. Buna karşın "if" ifadesinin sonucuna göre birden fazla ifade işleme konulacaksa blok olarak { } parentezleri arasında yazılır. Benim kişisel önerim "if" den sonra çalıştırılacak ifade sayısına bakmadan, bu ifade(leri) her durumda blok olarak yazmaktır. İleride yeni programın okunmasında ve yeni işlevler eklenmesinde size hatalardan kaçmanıza yardım eder.
    Birçok zaman size eğer/değilse türünde çalışacak bir "if" yapısı gerekebilir. Üçüncü tip "if" ifadesi eğer doğru değer üretirse şunları yap, doğru değilse "else" anahtar sözcüğünden sonraki kodları çalıştır türünde bir yapısı olarak yazılmalıdır.
    Birden fazla mantıksal ifadeyi işlememiz gerektiğinde ise, if/else if/else tipinde bir "if" yapısını kullanmak gerekir. Dördüncü örneğimizde bu tip bir if yapısını görebilirsiniz. Bu tip yapı yine "if" ve boolean ifadesi ile başlar. Boolean ifade doğru ise hemen alttaki bloktaki kodlar çalıştırılır. Bunun yanında, boolean ifadenin değişik durumlarına göre "else if" iç yapısı kullanılır. "else if" de aynı if gibi bir boolean ifadeyi alır ve sonucu doğru hemen sonraki bloktaki kodları çalıştırır.
    Boolean ifadenin alabileceği tüm ihtimallere göre bu şekilde "else if" ifadeleri sıralanabilir fakat en sonda bir "else" ile yukarıdaki tüm şartların yanlış olması durumunda çalıştırılacak kodları belirleriz. Bu dördüncü "if" yapısında da yine sadece bir tane if/else blok yapısı çalıştırılır.
    "switch" yapısı da "if/else if/else" yapısına çok benzer.
    Kod 2 : Switch ifadeleri : SwitchSelection.cs
    using System;
    class SwitchSelect
    {
    public static void Main()
    {
    tring myInput;
    int myInt;

    begin:
    Console.Write("Please enter a number between 1 and 3: ");
    myInput = Console.ReadLine();
    myInt = Int32.Parse(myInput);
    // switch with integer type
    switch (myInt)
    {
    case 1:
    Console.WriteLine("Your number is {0}.", myInt);
    break;
    case 2:
    Console.WriteLine("Your number is {0}.", myInt);
    break;
    case 3:
    Console.WriteLine("Your number is {0}.", myInt);
    break;
    default:
    Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
    break;
    }
    decide:
    Console.Write("Type \"continue\" to go on or \"quit\" to stop: ");
    myInput = Console.ReadLine();
    // switch with string type
    switch (myInput)
    {
    case "continue":
    goto begin;
    case "quit": Console.WriteLine("Bye."); break;

    default:
    Console.WriteLine("Your input {0} is incorrect.", myInput);
    goto decide;
    }
    }
    }
    Kod 2'de birkaç tane "switch" yapısı örneğimiz var. "switch" yapısı yine "switch" anahtar kelimesi ile başlar ve sınanacak değişkeni parantez içinde belirtiriz. Switch yapısının çalışması için şu veri tiplerinden bir tanesini kullanmak gerekir : sbyte,short,ushort,int, long, ulong, char, string, or enum ( enum daha sonraki bir derste işlenecektir.)
    Birinci örneğimizdeki "switch" yapısı int tipinde bir değer almaktadır. Tamsayı değişkenimizin alabileceği değerlere göre değişik işlemler yapabiliriz. "myInt" değişkenimizin herbir ihtimalini değerlendirirken "case" anahtar kelimesini, muhtemel değerini ve iki nokta üst üste ":" yapısında bir sınama yapıyoruz. Örneğimizde, "case 1 :", "case 2: ", ve "case 3:" şeklinde yazdık. Sınama sonuçlarından uygun olanın hemen altında kod bloku yer alır. Bu kod blokundan sonra ise "break" veya "goto" ifadelerini kullanmamız gerekir.
    İsterseniz "default" seçeneğini de "switch" ifadesi ile birlikte kullanabilirsiniz. "default" ifadesinin altındaki kod bloku, "defult"'tan önceki "case"'lerin hiçbiri sınamayı geçemediği zaman çalışır ve tüm "case"'lerden sonra gelir.
    Her "case" 'den sonra "break" ifadesinin zorunlu olduğunu tekrar hatırlatalım. "break" ifadesi "switch" yapısından dışarı çıkmayı ve alttaki kodlara geçmemizi sağlar. "default" anahtar kelimesinin kod blokundan hemen sonra "break" koymak programcının isteğine kalmıştır. Switch ifadesinde iki tane dikkat edilmesi gereken husus vardır.
    Birincisi, farklı durumları (case'leri) ard arda aralarına hiç kod yazmadan sıralamaktır. Aslında burada yapılan iş, değişkenimizin birden fazla değeri için tek bir "case" kod bloku oluşturmaktır. Bir case ve hemen arkasına başka bir case yazdığımızda program otomatik olarak bir sonraki "case" 'e geçer. Aşağıdaki kodu incelediğimizde, "myInt" değişkeni 1,2, veya 3 değerlerinden herhangi birini alırsa kendi değerini ekrana yazdırıyoruz. Diğer durumda ise değişkenimizin değerinin 1 ve 3 arasında olmadığını ekrana yazdırıyoruz.
    switch (myInt)
    {
    case 1:
    case 2:
    case 3:
    Console.WriteLine("Your number is {0}.", myInt);
    break;
    default:
    Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
    break;
    }
    Kod 2'de yer alan ikinci "switch" yapısı ise "goto" ifadesinin nasıl kullanılacağını göstermek amacıyla yazılmıştır. "goto" , programın belirli bir kısmında yer alan, özel etiket (label) ile belirtilmiş kısmına atlamasına ve oradan itibaren çalışmaya devam etmesine yarar. Programımızda kullanıcı "continue" yazarsa "begin" olarak belirlenmiş etikete gider ve oradan çalışmaya devam eder. Aslında bu şekilde "goto" kullanmak etkili bir döngü olur. Eğer kullanıcı "end" yazarsa program "bye" yazar ve döngüden programımız çıkar.
    Açıkça görülüyor ki "goto" kelimesini kullanmak bize programda belirli şartlar altında güç kazandırır. Yine de "goto" ifadesini programda sık bir şekilde kullanmak "sipagetti" kod olarak adlandırılan programlamaya yol açabilir ki, bu tür kodlama programı hem okurken hem de hataları ayıklarken büyük sorunlara sebep olabilir.

    Kontakt : TR_ip@tahribat.com
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    İnce Memed
    ComputerWolf
    ComputerWolf's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 26/Mart/2003
    Erkek
    Kardes sen bogazici unide okuyan faruk nacaroglumusun ? (!)

    Hep denedin. Hep yenildin. Olsun yine dene , yine yenil ama daha iyi yenil !
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    C# ile Temel Windows Formları Oluşturma
    Bu yazımızda Windows programlamanın temel elemanlarından olan windows formlarının nasıl oluşturulduğunu ve nasıl kullanıldığını göreceğiz, windows formlarını açıklarken basit bir dört işlem yapan hesap makinası oluşturacağız.Windows formları derken neyi kastediyoruz? Textbox, label, button gibi önemli elemanların hepsi birer windows formudur. Bu windows formlarına ulaşmak için System.Windows.Forms isimalanını kullanıyoruz. Ve tabi ki programımızın aktif bir windows uygulaması olarak çalışması için de aşağıdaki isimalanlarını projemize ekliyoruz.
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;

    Programımızı yazmaya başlamadan önce programımızın kodlarını içerecek bir isim alanı oluşturalım. Ben buna CsHesapMakinasi adi verdim.(Makaleyi okurken kaynak kodu incelemenizi tavsiye ederim) Siz istediğiniz başka bir isim kullanabilirsiniz.

    Daha önceki makalelerimizde belirttiğimiz gibi programımızın çalışması için derleyiciye programın başlangıç noktasını bildirmemiz gerekirdi.Bu başlangıç noktası da genelde main() fonksiyonu oluyordu. Kodumuzu öyle ayarlayacağız ki main() fonksiyonu icra edildiğinde çalıştırmak istediğimiz windows formu ekranda görünsün. Bunun için main içine aşağıdaki kodu yazıyoruz.
    Application.Run(new Form1()); // Yeni bir Form1 nesnesi oluşturularak uygulama olarak başlatılıyor.

    Şu an için Form1 hakkında en ufak bir bilgiye sahip değiliz.Peki bu Form1 nasıl oluşturulacak. Yukarıda da bahsettiğimiz gibi Form1 sınıfından bir nesne oluşturmak için System.Windows.Forms isimalanını kullanmalıyız. Bu yüzden bu isim alanının altında bulunan Form sınıfından yeni bir Form1 sınıfı türetmemiz gerekecek, bu türetme işlemi aşağıdaki gibidir. Form1 sınıfını türettikten sonra Form1' içinde bulunacak elemanları tanımlıyoruz.4 işlemi yapmak için 4 buton, işleme giren değerler için 2 textbox ve 2 tane de label formu tanımlıyoruz.Tanımlama işlemi aşağıdaki gibidir.
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Button button2;
    private System.Windows.Forms.Button button3;
    private System.Windows.Forms.Button button4;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.TextBox deger1;
    private System.Windows.Forms.TextBox deger2;
    private System.Windows.Forms.TextBox sonuc;
    private System.Windows.Forms.Label isaret;
    }
    Şimdi bu windows formunun ekrana nasıl basıldığını inceleyelim.Main() işlevi içinde yeni bir Form1 nesnesi yaratıldığında Form1 nesnesine ait kurucu işlev olan Form1() işlevi çağrılır.(Kaynak kodu inceleyin). Form1() kurucu işlevinde ise InitializeComponent(); adlı bir fonksiyon çağırılarak Form1 nesnesine ait olan üye elemanlarla (button,label,textbox vs) ilgili ilk işlemler yapılır.From1 açıldığı zaman Form1 içinde bulunan elemanlarla iligili yapmak istediğimiz ilk özellikleri InitializeComponent() fonksiyonu içinde yapıyoruz.
    private void InitializeComponent()
    {
    // form1 içinde yer alacak elemanlar yaratılıyor(kaynak kodu inceleyin)

    this.deger2 = new System.Windows.Forms.TextBox();
    this.sonuc = new System.Windows.Forms.TextBox();
    this.button2 = new System.Windows.Forms.Button();
    this.isaret = new System.Windows.Forms.Label();
    this.label2 = new System.Windows.Forms.Label();
    this.SuspendLayout();
    //
    // elemanlarla ilgili başlangıç özellikleri veriliyor.
    //
    this.deger1.Location = new System.Drawing.Point(16, 8); //deger1 adlı textbox için yer bildirimi
    this.deger1.Name = "deger1";
    this.deger1.TabIndex = 0;
    this.deger1.Text = "0";
    this.name="Form1"; //Form1 nesnesinin kendisi için this anahtar sözcüğünü kullanıyoruz
    this.text = "Hesap Makinası ";
    this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(128)), ((System.Byte)(0)));
    this.ClientSize = new System.Drawing.Size(400, 149);

    }
    Şimdi sıra elemanlarla ilgili olayların birbirleri ile ilişkisine.Mesela bir buton formunun click olayının form tarafından yakalanabilmesi için aşağıdaki satırları yazmalıyız.
    this.button4.Click += new System.EventHandler(this.button4_Click);
    private void button4_Click(object sender, System.EventArgs e)
    {
    isaret.Text="/";
    sonuc.Text=System.Convert.ToString(System.Convert.ToInt32(deger1.Text)/ System.Convert.ToInt32(deger2.Text));
    }

    buton4_Click() işlevinde, çalışma zamanında bir nesnenin özelliklerinin nasıl değiştirildiğini görüyoruz.button4 bölme işlemi yaptığından isaret.Text="/"; yazdık. sonuc adlı textbox formunun Text özelliği bir string ifadesi olduğu için işlemlerimizi yaptıktan sonra sonuc.text ifadesine atama yapabilmek için System.Convert isimalanında bulunan ToString işlevini kullanarak ifadeyi String türüne dönüştürüyoruz. Aynı şekilde String olarak aldığımız türler için aritmetik işlem yapabilmek için yine aynı isimalanında bulunan ToInt32 işlevi ile String türünü int32 formatına dönüştürüyoruz. Bütün bu işlemleri 4 butonumuz için yaptığımızda dört işlem yapabilen basit ve bol bol bug içeren (unutmayın amacımız sadece formların kullanımını öğrenmek) bir hesap makinamız olacak.

    Kontakt : TR_ip@tahribat.com
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    İnce Memed
    ComputerWolf
    ComputerWolf's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 26/Mart/2003
    Erkek
    Kardes sen bogazici unide okuyan AHMET faruk nacaroglumusun ? (!)

    Hep denedin. Hep yenildin. Olsun yine dene , yine yenil ama daha iyi yenil !
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    ehuehue :D Ya kitleyin abi su konuyu bi gaza geldim yazi yazim dedim :D Yazmayin ya :D Kim o yakalarsam varya :P ehue

    Kontakt : TR_ip@tahribat.com
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RemotE
    RemotE's avatar
    Banlanmış Üye
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek
    ortak kitlersek görürsün ebenun kini sende yazamazsın mal :d euheuheu h

    Bizi Satanı Biz Bedavaya Veririz..! http://www.intikal.org - http://www.ohbea.com
Toplam Hit: 5743 Toplam Mesaj: 19