Arşiv

Etiketlenen yazılar int

C# Veri Tipleri

27 Temmuz 2010 1 yorum

Uygulamalarımızın olmazsa olmaz unsurları herhalde değişkenlerdir. Orta ölçekli bir uygulamada, kabaca bir tahminle yüzlerce değişken tanımlıyoruzdur.

Kullanım yoğunluğuna bakarak, oluşturduğumuz değişkenlerin tiplerinin doğru belirlenmesinin ne kadar önemli olduğunu anlayabiliriz.

C# ile kullanabileceğimiz değişkenlerin en önemlilerini aşağıda listeledim;

Veri Tipi Kapladığı Alan Değer Aralığı
Tam Sayı Veri Tipleri
sbyte 1 byte -128 ve +127
byte 1 byte 0 ve +255
short 2 byte -32768 ve +32767
ushort 2 byte 0 ve 65535
int 4 byte -2.147.483.648 ve +2.147.483.647
uint 4 byte 0 ve 4.294.967.295
long 8 byte -9.223.372.036.854.775.808 ve +9.223.372.036.854.775.807
ulong 8 byte 0 ve 18,446,744,073,709,551,615
Noktalı Sayı Veri Tipleri
single 4 byte -3.402823E38 ve +3.402823E38
double 8 byte -1.79769313486232E308 ve +1.79769313486232E308
decimal 16 byte -7.9E1028 ve +7.9E1028
Diğer Veri Tipleri
char 2 byte Tek Karakter
string ~ (2 byte x harf adedi) Karakter Dizisi
bool 4 byte True veya False
DateTime 8 byte 1/1/0001 12:00:00 ve 31/12/9999 23:59:59

Dizide bir elemandan kaç adet olduğunu bulalım

20 Temmuz 2010 Yorum yapılmamış

Elimizdeki bir dizide, belli bir elemandan kaç adet olduğunu bulmamız gerekebilir.

Bunu yapmanın programatik olarak en kolay yolu LINQ sorgusu yazmaktır.

Örneğin aşağıdaki Extension Method, LINQ sorgusu ile aranan elemandan, ilgili listede kaç adet olduğu sonucunu döndürür;

public static int CountTimes< T >(this List< T > list, T item)
{
	return ((from t in list where t.Equals(item) select t).Count());
}

Örnek kullanım;

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

public static class Program
{
	static void Main(string[] args)
	{
		var list1 = new List< int >() { 1, 2, 3, 4, 5, 6, 7, 7, 8, 9 };
		var list2 = new List< string >() { "a", "b", "b", "b", "c", "d", "e", "f" };

		Console.WriteLine("Birinci listede 7, " + list1.CountTimes(7) + " adet var");
		Console.WriteLine("İkinci  listede b, " + list2.CountTimes("b") + " adet var");

		Console.ReadLine();
	}

	public static int CountTimes< T >(this List< T > list, T item)
	{
		return ((from t in list where t.Equals(item) select t).Count());
	}
}

Yukarıdaki örnek kodu çalıştırdığınızda, şöyle bir sonuç almanız lazım;

Birinci listede 7, 2 adet var
İkinci  listede b, 3 adet var

Bu kodda ne yanlış var? – 4

19 Temmuz 2010 5 yorum

Bowling skorlarını hesaplayan bir uygulama yazıyoruz.

2 oyuncunun 3 oyunda aldığı skorları hesaplayan aşağıdaki kodu yazdık ve çalıştırdık.

Fakat rakamlarda bir terslik var sanki. Sizce problem nedir ve nasıl düzeltebiliriz?

using System;

class Program
{
	static void Main(string[] args)
	{
		int[,] PuanTablosu = { {101, 128, 143}, {123, 115, 116} };

		int OyuncuPuan = 0;

		for (int iLoop = 0; iLoop < = PuanTablosu.GetUpperBound(0); iLoop++)
		{
			for (int yLoop = 0; yLoop <= PuanTablosu.GetUpperBound(1); yLoop++)
			{
				OyuncuPuan += PuanTablosu[iLoop, yLoop];
			}

			Console.WriteLine("Oyuncu {0} skor: {1}", iLoop + 1, OyuncuPuan);
		}

		Console.ReadLine();
	}
}

Sql Server’da Random Sayı Üretmek

27 Şubat 2010 1 yorum

C# tarafında rastgele sayıya ihtiyacımız olduğunda Random class’ından yeni bir nesne üretip kullanabiliyoruz. Eğer rastgele sayıya Sql tarafında ihtiyacımız olursa yapmamız gereken, RAND() fonksiyonunu kullanmaktır.

RAND() fonksiyonu ile ilgili detaylı bilgiye MSDN‘de yeralan şu makaleden ulaşabilirsiniz.

RAND([seed]) fonksiyonu parametre olarak seed değeri alabilir ve geriye float tipinde sonuç döner.

seed parametresi int, smallint veya tinyint tipinde olabilir.

RAND() fonksiyonu aynı seed değeri ile her çalıştırıldığında aynı “rastgele” sayıyı döndürür. Eğer seed verilmezse, Sql Server rastgele bir seed değeri atayarak, “rastgele” sayı oluşturur.

Eğer RAND() fonksiyonundan float tipinde noktalı sayı değil, int tipinde tamsayı dönmesini istiyorsak, basit bir convert işlemine tabi tutabiliriz;

SELECT CONVERT(INT, RAND() * 100)

C# Null Coalescing (??) Operatörü

19 Ocak 2010 Yorum yapılmamış

Null Coalescing Operatörü (??) C# dilinin gözden kaçan, ama çok kullanışlı bir operatörüdür.

?? operatörü sayesinde bir değişkenin değerinin null olduğu durumda alternatif değer döndürebiliriz.

string mesaj = "merhaba dünya!";
string sonuc = mesaj ?? "mesaj yok";

Eğer mesaj değişkeni null değer içeriyor olsaydı, sonuc değişkenine “mesaj yok” değeri atanacaktı.

string mesaj = null;
string sonuc = mesaj ?? "mesaj yok";
int? yas = 30;
int sonuc = yas ?? -1;

Eğer yas değişkeni null ise, sonuc değişkenine -1 değeri ata.

int? yas = null;
int sonuc = yas ?? -1;

Sql Server COUNT ve COUNT_BIG Fonksiyonları

19 Ocak 2010 Yorum yapılmamış

COUNT() sistem fonksiyonu, parametre olarak aldığı alandaki satır sayısını INT tipinde geri döndürür.

COUNT_BIG() sistem fonksiyonunun COUNT() fonksiyonundan farkı, elde ettiği sonucu BIGINT tipinde geri döndürmesidir.

INT veritipinin sınırları : -2^31 (-2,147,483,648) – 2^31-1 (2,147,483,647)

BIGINT veritipinin sınırları : -2^63 (-9,223,372,036,854,775,808) – 2^63-1 (9,223,372,036,854,775,807)

Eğer elde edeceğiniz sonucun INT veritipinin sınırlarına sığmayacağını düşünüyorsanız, yapmanız gereken COUNT_BIG() fonksiyonunu kullanmaktır.

Bu kodda ne yanlış var? – 2

15 Ocak 2010 2 yorum

Aşağıdaki kod parçasını çalıştıralım. Sifir isimli değişkenin değerine baktığımızda 0 olduğunu görüyoruz.

List arrListe = new List(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
int Sifir = arrListe.Find(
	delegate(int i) {
		return i == 0;
	}
);

Listede 0 değeri yok!. Neden sonuç 0 dönüyor? Bu kodu nasıl düzeltebiliriz?