17 Nisan 2013 Çarşamba

109 - Metod Kullanımı... Fonksiyon Seçimine Göre İşlem Yapan Metodlar...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void fonksiyon1(int x, int y) 
        {
                int deger = x + y; 
                deger *= Math.Abs(x - 2 / y);
                Console.WriteLine(x + " ve " + y + " degerleri için 1. fonksiyon sonucu = " + deger);
        }

        static void fonksiyon2(int x, int y)
        {
            int deger = Math.Abs(2 * x) - 20 + 3 * y;
            Console.WriteLine(x + " ve " + y + " degerleri için 2. fonksiyon sonucu = " + deger);
        }

        static void Main(string[] args)
        {
            // Aşağıdaki fonksiyonlardan seçime göre metod yapmak...
            // Birinci fonksiyon = x+y*|x-2/y|
            // İkinci fonksiyon = |2x|-20 + 3y
            Console.Write("1. Sayıyı giriniz...:");
            int sayi1 = int.Parse(Console.ReadLine());
            Console.Write("2. Sayıyı giriniz...:");
            int sayi2 = int.Parse(Console.ReadLine());

            Console.WriteLine("Fonksiyon seçiniz... (1/2)");
            char sec = char.Parse(Console.ReadLine());

            if (sec == '1')
                fonksiyon1(sayi1, sayi2);
            else if (sec == '2')
                fonksiyon2(sayi1, sayi2);

            Console.ReadLine();
        }
    }
}

108 - Metod Kullanımı... Rastgele Atanan 10 Sayıyı Metod İle Pozitif Sayı Yapmak ve Sıraya Dizmek...


Bir döngü ile 10 sayı atama işlemi yaptıracağız... Bu atanan sayılardan her birini metoda gönderiyoruz ve sayının pozitif olarak geri dönmesini bize sağlıyor... Sıraya dizme işlemi için en kestirme yol Array.Sort komutudur... Bunu kullanabilmek için sayıları diziye altık ve aldığımız bu sayıları sıraladık... Sıralama işleminden sonra ise gosterdizi adındaki metod ile dizinin içeriğini tamamen göstermiş olduk... 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public static int[] sayidizi = new int[10]; // Genel bir dizi tanımlıyoruz... Her yerde kullanılabiliyor...

        // Sayıları pozitife çevirmek için metoda gönderiyoruz... Burada sayıları kontrol ettiriyoruz... 
        static void pozitif(int gelensayi , int diziindex) 
        {
            if (gelensayi < 0)
                sayidizi[diziindex] = Math.Abs(gelensayi);
            else
                sayidizi[diziindex] = gelensayi;
        }

        // Metoda dizi gönderdik... Bu metodun amacı dizideki sayıları ekranda göstermek...  
        static void gosterdizi(int[] gelendizi)
        {
            foreach (int i in gelendizi)
                Console.WriteLine(i);
        }

        static void Main(string[] args)
        {
            Random x = new Random();
            for (int i = 0; i < 10; i++) // 10 sayı girdiriyoruz... 
            {
                int sayi = x.Next(-100, 100);
                pozitif(sayi,i); // Sayıyı kontrol ettirmek için metoda gönderiyoruz... Aynı zamanda dizinin index numarasını da gönderiyoruz... 
            }
            Array.Sort(sayidizi); // Sayıları sıraya diziyoruz... 
            gosterdizi(sayidizi); // Dizinin içindeki sayıları gösteriyoruz... 

            Console.ReadKey();
        }
    }
}

Bu yaptığımız uygulamada negatif sayıları çeviren bir metod da eklenebilir... Hatta kullanıcıya sayıları negatife mi yoksa pozitife mi çevirmek istiyorsunuz diye tercih de yaptırılabilir...

16 Nisan 2013 Salı

107 - Metodlar... Metot Tanımlama ve Kullanma...

Programın farklı yerlerinde aynı işlemi yapacak kod satırlarına ihtiyacımız olursa, yada aynı işlemi defalarca yaptıracaksak metodları kullanırız... Metodlar ve Sınıflar olmadan C# üzerinde işlem yapmamız ve C# ın o esnek yapısını kullanmamıza imkan yoktur...


Metotların amacı; programın yapısal olmasını sağlamak ve birbiriyle ilgili komutları veya programın bir bölümünü istenen isim altında toplamaktır. Bu şekilde programın okunması kolaylaşmakta ve yapısal bir görünüm kazanmaktadır.

Bir önceki konudan hatırlayacağınız gibi bir çok metod zaten C# tarafından bizim kullanımıza hazır hale getirilmiştir... Örneğin substring, split, compare gibi string komutlar, hatta Math sınıfına ait olan bütün matematiksel işlemleri yaptığımız komutlar aslında bir metottur... Program bunları bizim imkanımıza sunmuştur...

İşi biraz daha ilerletecek olursak, hani C# nesne tabanlı bir programlama dili ya, Console komutu ile çağırdığımız ve kullandığımız Write, ReadLine ve diğerleri aslında bir sınıfın içerisinden çağrılan metotlardır...

Metod Çeşitleri:
Temel de üç çeşit metod vardır...
a) Geri değer döndürmeyen metodlar,
b) Parametre alan metodlar,
c) Geri değer döndüren metodlar,

Metod Tanımlama:

erişim  dönüştipi  isim ( parametreler )
{
        metodun gövdesi
}

Erişim: Hazırlayacağımız metoda kullanıcıların nasıl erişebileceğini belirleyecek olan kısımdır... İki çeşittir...
 a) Public: Programın içerisinde bulunan her yerden bu metodun çağrılması isteniyorsa public erişimi kullanılır...
  b)  Private: Bu şekilde kullanıldığında sadece metodun çağrıldığı sınıfın içerisinden çağrıla bilecektir. Eğer her hangi bir kullanım olmaz ise private olarak kabul edilir...


Nesne yönelimli programlama dillerinde metotlar, tanımlandıkları sınıf adı ile birlikte çağrılırken eğer metot, programın ana metodu ( Main() ) içerisinden çağrılacaksa static olarak tanımlanır ve sınıf adını yazmaya gerek kalmadan çağrılır.


Dönüş-tipi: Bu metodun çalıştırıldıktan sonra programda çağrıldığı noktaya döndürdüğü verinin tipini belirlediğimiz kısımdır. Eğer metot bir değer döndürmeyecekse dönüş tipi void olarak belirtilmelidir.

İsim: Program içerisinde metodu çağırırken kullanacağımız tanımlamadır... Bu tanımlama da konu ile alakalı ve  değişken tanımlama kurallarına uygun bir tanımlama yapılmasında fayda vardır...

Parametreler: Parametreler metot içerisinde kullanılır... Program içerisinden bazı değerleri almamız gerektiğinde parametreler yardımı ile bu değerleri metotlara aktarırız... Parametrelerin tanımlanan tipleri ile program içerisinde metotların çağrıldıkları yerlerdeki değerler aynı olmak zorundadır... Örneğin birinci parametre string tipinde tanımlandı ise, gelen veri de string olmalıdır... Aksi takdir de hata mesajları verecektir...



Örnek: Aşağıdaki örnekte metot kullanılarak iki sayının toplaması yapılmakta ve ekranda gösterilmektedir...



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        // Metodumuz geri değer döndürmeyeceği için void, ana programdan çağrılacağı için static kullanılarak tanımlanmıştır...
        // Erişim olarak ise her hangi bir şey kullanılmadığı için program private olarak almıştır...
        static void islem() 
        {
            // Metod içerisinde iki sayı toplatılıyor... 
            Console.Write("Bir sayı giriniz: "); 
            int s1 = Convert.ToInt32(Console.ReadLine());

            Console.Write("Bir sayı giriniz: ");
            int s2 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Toplama işleminin sonucu...:" + (s1 + s2).ToString() +"\n");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            islem(); // Metodu çağırıyoruz... Bu çağırma işlemini birden çok kere yapınız... 
        }
    }
}

Örnek: Metoda gönderilen iki sayıyı ve işlem türüne göre sonucu gösteren program?


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        static void islem(string tur, int a, int b)
        {
            if (tur == "+")
                Console.WriteLine("Sonuc =" + (a + b));
            else if (tur == "-")
                Console.WriteLine("Sonuc =" + (a - b));
            else if (tur == "*")
                Console.WriteLine("Sonuc =" + (a * b));
            else if (tur == "/")
                Console.WriteLine("Sonuc =" + (a / b));
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            islem("*", 8, 10); // Bu metod birden çok defa çağrılmaktadır... 
            islem("+", 5, 4);  // Her seferinde farklı değerler gönderilmektedir... 
            islem("*", 5, 20);
        }
    }
}

Üç parametre gönderiyoruz... Parametreler birebir eşleşir... 
Gönderilen   islem("*",8,10) 
Alınan          static void islem(string tur, int a, int b)

Burada tur = * , a=8, b = 10 değerlerini almaktadır... 

15 Nisan 2013 Pazartesi

106 - Bazı Matematiksel Fonksiyonlar...



Megep in modüllerinden alınan örneklerdir... Hepsinin kullanım örnekleri programlama temelleri modüllerinde vardır... 

DivRem( )
Parametre olarak verilen ilk iki sayının bölme işlemini yapar ve geriye bölme işleminin sonucunu döndüren ve 3. parametre olarak verilen değişkene de bölme işleminin kalanını aktaran metottur.

Kullanım Örneği:
int bolum=Math.DivRem(int bolunen, int bolen,out int kalan);
long bolum=Math.DivRem(long bolunen,long bolen,out long kalan);




Pow( )
Parametre olarak verilen ilk sayının, yine parametre olarak verilen ikinci sayı kadar üssünü hesaplayan metottur.

Kullanım Örneği:
double usluSayi=Math.Pow(12,0); // 1
double usluSayi=Math.Pow(5,-2); // 0.04




Round( )
Parametre olarak verilen sayıyı en yakın tam sayıya yuvarlayan metottur.

Kullanım Örneği:
double yuvarlanmis=Math.Round(3.14); // 3
double yuvarlanmis=Math.Round(3.499); // 3




Sqrt( )
Parametre olarak verilen double türündeki sayının karekök değerini double türünde geriye döndüren metottur.

Kullanım Örneği:
double karekok=Math.Sqrt(double sayi);



105 - Üslü Sayı Kullanım Örneği... Math.Pow...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {  // 2 sayısının girilecek olan sayıya kadar üssünü alacak olan program? 
           // Math.Pow: Üslü sayıları gösterir ve işlem yapar.

            Console.Write("Üssümüzü Giriniz...:");
            int taban = int.Parse(Console.ReadLine());
            Console.Write("Üssümüzü Giriniz...:");
            int us = int.Parse(Console.ReadLine());

            int i = 0;
            while (i <= us)
            {
                Console.WriteLine("2 ^ "+i+" = " + Math.Pow(taban,i));
                i++;
            }

                Console.ReadKey();
        }
    }
}

104 - Rastgele Atanan 10 Sayıdan En Büyük ve En Küçük Sayıları Bulmak... Math.Max... Math.Min...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Max( ), Min():
             * Parametre olarak verilen iki sayıdan büyük ve küçük olanı geriye döndüren metotlar. 
             * Bütün sayı türleri tarafından desteklenen metot çeşitleridir. */

            // Rastgele atanan 10 sayı içerisinde en büyük ve en küçük olanı bulan program...
            Random x = new Random();

            int enbuyuk = 0; int enkucuk = 100; // Büyük ve küçük sayıyı bulmak için başlangıç değerlerini veriyoruz... 
            for (int i = 0; i < 10; i++)
            {
                int s1 = x.Next(1, 100); 
                Console.WriteLine(s1);
                enbuyuk = Math.Max(s1, enbuyuk); // En büyük sayıyı buluyoruz... 
                enkucuk = Math.Min(s1, enkucuk); // En küçük sayıyı buluyoruz... 
            }

            Console.WriteLine("En Büyük Sayı = " + enbuyuk);
            Console.WriteLine("En Büyük Sayı = " + enkucuk);
            Console.ReadKey();
        }
    }
}

103 - Değer Aralığı Alan Bir Fonksiyon... Math.Abs...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {  // 5. Örnek: |x|-5 işlemi için x in 0-10 arası alacağı bütün değerlerde sonucu gösterecek olan program? 

            int x = 0;
            int sonuc = 0;
            while (x <= 10)
            {
                sonuc = Math.Abs(x) - 5; 
                Console.WriteLine("|" + x + "|-5 = " + sonuc);
                x++;
            }

            Console.ReadKey();
        }
    }
}

102 - Mutlak Değer Almak... Math.Abs Fonksiyonu...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {   //x + |y| işlemini yapacak olan program?
            // Math.Abs() : Girilen sayının mutlak değerini almaya yarayacak olan komuttur...
            // Bu örnekte x ve y olarak iki tane sayı girdirilecek ama sadece y nin mutlak değeri alınacaktır...
          
            Console.Write("x değerini giriniz...:");
            int x = int.Parse(Console.ReadLine());
            Console.Write("y değerini giriniz...:");
            int y = int.Parse(Console.ReadLine());

            int toplam = x + Math.Abs(y); // Mutlak değeri alıyoruz... 
            Console.WriteLine(x +"+ |"+ y +"| ="+ toplam);
            
                Console.ReadKey();
        }
    }
}

101 - String Metodlar... Kullanıcılara Yeni Şifre Vermek... IsNullOrEmpty Metodu...



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            /*IsNullOrEmpty( ):
             * Parametre olarak verilen string türündeki değişkenin içeriğinin boş mu olduğunu
             * kontrol eden metottur. Eğer değişkenin içeriği boşsa geriye bool türünde true değeri
             * döndürür. Eğer değişkene herhangi bir değer ataması yapılmışsa geriye false değerini döndürür.*/

            Console.WriteLine("İsminizi giriniz...");
            string isim = Console.ReadLine();

            // Şifresini unutan kişi için kullanıcı adı doğru girildiğinde yeni bir şifre veriliyor...
            // Ama kullanıcı adı yanlış ise sifre değişkeni değer alamadığı için boş oluyor ve yapılan kontrol ile 
            // kullanıcı adı mevcut değil yazıyor... 
            string sifre="";
            if (isim == "Ahmet")
            {
                sifre = "1234";
                Console.WriteLine("Yeni şifreniz...: " + sifre);
            }
            if (String.IsNullOrEmpty(sifre))
                Console.WriteLine("Kullanıcı adı mevcut değildir... ");

            Console.ReadKey();
        }
    }
}


100 - String Metodlar... Tarih Formatı Ayarlamak... Replace Metodu...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Replace (char eski, char yeni):
             * Birlikte çağrıldığı metin içerisinde, ilk parametredeki karakterleri, ikinci
             * parametredeki karakter değerleriyle değiştiren metottur. Geriye değiştirme işleminin
             * gerçekleştirildiği string türünde bir ifade döndürür.*/

            // Aşağıdaki programda noktalar(.), slash(/) ile değiştirilmektedir...
            string tarih = "15.04.2013";
            Console.WriteLine("Değişimden önce   :" + tarih);
            Console.WriteLine("Değişimden sonra  :" + tarih.Replace('.', '/'));

            Console.ReadKey();
        }
    }
}

99 - String Metodlar... Girilen Mesajı Tersten Yazdırmak... Substring Metodu...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Mesajı Giriniz..:"); // Mesajı girdiriyoruz... 
            string isim = Console.ReadLine();
            Console.Clear(); // Ekranı temizliyoruz...

            // Girilen mesajın en son harfinden başlayarak tek tek alıyoruz... 
            // Yani döngüyü tersten kuruyoruz... 
            for (int i = isim.Length - 1; i >= 0; i--) 
                Console.Write(isim.Substring(i, 1)); 

            Console.ReadKey();

        }
    }
}

98 - String Metodlar... Her Seferinde Artan Harfler... Substring Metodu...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            // Sırası ile artan harfler...
            Console.WriteLine("İsminizi Giriniz...");
            string text = Console.ReadLine();
            for (int i = 0; i <= text.Length; i++)
                Console.WriteLine(text.Substring(0, i)); // Her seferinde bir tane fazla harf alınıyor...

            Console.ReadKey();
        }
    }
}

97 - String Metodlar... Harfleri Parçalamak... Substring Metodu...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {   //bir string ifadenin içinde,4.karakterden başlayıp 10 karaktere kadar elde etmek istiyor isek 
            // bu durumda kullanacağımız metod SubString() metodudur.

            string text = "Visual Studio 2008";
            // 7. karaterden başlayıp 4 karakter alarak ekranda gösterir...
            Console.WriteLine(text.Substring(7, 4));
            // 7. karaterden sonraki bütün karakterleri gösterir... 
            Console.WriteLine(text.Substring(7));

            Console.ReadKey();
        }
    }
}

14 Nisan 2013 Pazar

96 - String Metodlar... Yıldızlardan v Yapmak... Format Metodu


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {// Format metodu kullanılarak * dan v işareti yapmak...

            for (int i = 10; i > 0; i--) // Aradaki boşluğu ayarlıyoruz... 
                Console.WriteLine(String.Format("*{0,"+i+"}", "*"));
            
            Console.Write("*"); // Son yıldız tek olacaktır... 
            Console.ReadKey();
        }

    }
}

95 - String Metodlar... Boşluklar Bırakmak... Format Metodu


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // Bir string ifadenin sol veya sağ yanına boşluk karakteri doldurmak istiyor iseniz String.Format() metodunu kullanabilirsiniz.

            string str;
            // Aşağıdaki satır ile Stringin boyutu toplam 15 karakter olacaktır... Eksik kalan karakterleri sola boşluk olarak ekleyecektir...
            str = String.Format("-{0,15}-", "C#.NET");
            Console.WriteLine(str);

            // Aşağıdaki satır ileyse sağ tarafa ekleyecektir...
            str = String.Format("-{0,-15}-", "C#.NET");
            Console.WriteLine(str);

            Console.ReadKey();
        }
    }
}

94 - String Metodlar... Kaç Gün Yaşadığımızı Bulmak... DateTime...


using System;
using System.Collections.Generic;
using System.Text;

namespace Nurullah
{
    class Program
    {
        static void Main(string[] args)
        {
            // Tarihsel işlemlerin yapıldığı bir sınıftır... Bu sınıf içerisinde gün, ay, yıl gibi değerleri alabileceğimiz
            // gibi saat ile ilgili bilgileri de alabiliriz... Bu sınıfın bir çok özelliği bulunmaktadır... 
            // Aşağıdaki örnekte girilecek olan doğum gününe göre kaç gün yaşadığımızı bulmaya çalışmatayız...  

            //Kullanıcıdan alacağımız değişkenleri tanımlayıp, değer aldık
            int yil, ay, gun;

            Console.WriteLine("Kaçgün yaşadığınızı öğrenelim...\n--------------");
            Console.Write("Yıl : ");
            yil = Convert.ToInt32(Console.ReadLine());
            Console.Write("Ay  :");
            ay = Convert.ToInt32(Console.ReadLine());
            Console.Write("Gün :");
            gun = Convert.ToInt32(Console.ReadLine());

            //Aldığımız değerlere göre sınıfımızı kurduk... 
            DateTime DogumTarihi = new DateTime(yil, ay, gun);

            //Her 4 yılda bir gün eklendiğinden aradan kaç 4 yıl geçmiş onu bulduk
            int extraGun = (DateTime.Today.Year - DogumTarihi.Year) / 4;

            /*Burası işin matematiksel kısmı;
             *Önce aradan kaç sene geçmiş onu bulup 365 ile çarptık,
             *DayOfYear özelliği ile o seneki ve bu seneki günleri çıkarıp sonuca ekledik,
             *Son olarakta extraGun u ekleyip ekrana yazdırdık. */
            int sonuc = (DateTime.Today.Year - DogumTarihi.Year) * 365 + (DateTime.Today.DayOfYear - DogumTarihi.DayOfYear) + extraGun;
            Console.WriteLine(sonuc + " gün yaşamışız... ");
            Console.Read();

        }
    }
}

93 - String Metodlar... DateTime Biçimleri...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {/* Aşağıda datetime ile ilgili bir kaç kullanım formatı gösterilmiştir...
          * Öncelikle DateTime türünde bir değişken tanımlanmıştır...
          * Ardından String sınıfının Format fonksiyonu kullanılarak bu tarihe iki çeşit biçim verilmiştir... */

            DateTime date = new DateTime(2008, 8, 23);
            string dateText = String.Format("{0:d}", date);
            Console.WriteLine(dateText);
            dateText = String.Format("{0:D}", date);
            Console.WriteLine(dateText);

            Console.WriteLine("Bugünün tarihi..:" + DateTime.Now);

            /* Ekran çıktısı...
             * 23.08.2008
             * 23 Ağustos 2008 Cumartesi

             * {0:d}         23.08.2008
             * {0:D}        23 Ağustos 2008 Cumartesi
             * {0:f}         23 Ağustos 2008 Cumartesi 13:20
             * {0:F}         23 Ağustos 2008 Cumartesi 13:20:05
             * {0:t}         13:20    
             * {0:T}        13:20:05
             * {0:y}         Ağustos 2008
             */

            Console.ReadLine();
        }
    }
}

92 - String Metodlar... Girilen Bir Cümlenin Kaç Karakter Olduğunu Bulan Program...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            // Lenght komutu stringin uzunluğunu bulmak için kullanılmaktadır... 
            // Sayısal bir değer olarak dönmektedir...
            Console.Write("İsmi Giriniz...:");
            string s = Console.ReadLine();
            int x = s.Length;

            Console.WriteLine(s + " ismi toplam " + x + " karakterden oluşmaktadır...");
            Console.ReadKey();
        }
    }
}