21 Mayıs 2008 Çarşamba

Yazılımda Analiz ve Tasarım

Chip Online'da bir süredir "Tek Kişilik Yazılımevi" başlığı altında, yazılım mühendisliğini herkesin anlayabileceği bir dille yeni bir bakış açısından anlatan girdiler yayınlıyordum. Son iki girdim Yazılım Geliştirme ve Analiz ve Yazılımda Tasarım inanılmaz bir ilgi gördü. Okurlarıma ilgileri nedeniyle teşekkür ediyorum.

Faydalı olmak ümidiyle...

20 Mayıs 2008 Salı

IDENTITY'li Tablolar ve IDENTITY Kolonları

Aktif veritabanında IDENTITY kolonu olan tabloları ve IDENTITY kolon isimlerini listeleyen scripttir:
-----------------------------------------------

SELECT TABLE_SCHEMA+'.'+TABLE_NAME
,COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE ColumnProperty(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME),
COLUMN_NAME, 'IsIdentity') =1
ORDER BY 1

19 Mayıs 2008 Pazartesi

Visual Basic 2008 ile XML

Visual Basic 9 ile XML programlamaya başlamadan önce bu siteyi mutlaka ziyaret edin.http://msdn2.microsoft.com/en-us/library/bb384833.aspx

18 Mayıs 2008 Pazar

DevBiz, Microsoft Tarafından Satın Alınan İlk Türk Yazılım Şirketi

Yine aynı hikaye...
Ama bu sefer Türkiye'den...
Hem de bir garajları bile yok!

Aynı üniversiteden mezun iki arkadaşın, yazılım dünyasında ne kadar başarılı olabiceğinin canlı kanıtları. Nuri Hocanın sunumuyla...


Video: devbiz

5 Mayıs 2008 Pazartesi

Sayı Bulmaca Konsol Uygulaması

///
/// Uygulama 1-100 arasında rastgele bir sayı tutar ve
/// kullanıcıdan bu sayıyı bilmesini ister. Kullanıcı büyük
/// bir tahminde bulunursa "in", küçük bir tahminde bulunursa
/// "çık" mesajlarıyla yönlendirilir. Kullanıcı sayıyı bildiğinde
/// uygulama ekrana deneme sayısını ve toplam süreyi yazar. (Süre
/// toplam saniye olarak yazılır.)
///

static void Main()
{
//Uygulama rastgele 1-100 arasında rastgele bir sayı tutar.
Random r = new Random();
int tutulan = r.Next(1, 100);
//
// Sayaçlar başlatılıyor
int tahminSayisi = 0;
DateTime baslangic = DateTime.Now;
DateTime bitis;
// Kullanıcıdan bir sayı girmesi isteniyor.
Console.WriteLine("1-100 arasında bir sayı tuttum.");
// tahmin döngüsü
int tahmin = 0;
while (true)
{
tahminSayisi++;
Console.Write("Tahmininiz: ");
tahmin = int.Parse(Console.ReadLine());
if (tahmin
{
Console.WriteLine("Çık...");
}
else if (tahmin>tutulan)
{
Console.WriteLine("İn...");
}
else
{
break;
}
}
// Sonuç ekrana yazdırılıyor
bitis = DateTime.Now;
Console.WriteLine("Tebrikler! {0} saniye ve {1} denemede bildiniz.",
Math.Round(bitis.Subtract(baslangic).TotalSeconds),
tahminSayisi);
}

Örnek Uygulama: 3 ile bölünebilme

///
/// Uygulama kullanıcının girdiği sayının 3 ile tam bölünüp
/// bölünemeyeceğini bulur. (sayısal veritiplerinin tutamayacağı
/// büyüklükteki sayılar dahil)
///

static void Main()
{
int toplam = 0;
// Kullanıcıdan sayı alınıyor
Console.Write("Bir sayı girin: ");
string metin = Console.ReadLine();
//
// Kullanıcıdan alınan sayının her bir rakamı
// tam sayıya dönüştürülerek toplam değişkenine
// ekleniyor.
foreach (char rakam in metin)
{
int sayi = (int)rakam;
toplam += rakam;
}
// sayının rakamlarının toplamının 3 ile bölümünden
// kalan, sayının 3 ile bölümünden kalanına eşit
// olduğu kuralından yola çıkılarak % işaretiyle
// toplamın 3 ile bölümünden kalan bulunuyor
int sonuc = toplam % 3;
// sonuc değişkenindeki kalan'a göre ekrana bilgi
// yazdırılıyor.
if (sonuc==0)
{
Console.WriteLine("Sayi 3 ile tam olarak bölünür.");
}
else
{
Console.WriteLine("Sayının 3 ile bölümünden kalan={0} ",
sonuc);
}
}

Sesli/Sessiz Harfleri Sayma

///
/// Örnek uygulama kullanıcının gireceği bir metin içeresindeki
/// sesli ve sessiz harflerin sayılarını bularak ekrana yazdırır.
///

static void Main()
{
// sesli harfler koleksiyonu oluşturuluyor...
ArrayList sesliler = new ArrayList();
sesliler.Add("a");
sesliler.Add("e");
sesliler.Add("ı");
sesliler.Add("i");
sesliler.Add("o");
sesliler.Add("ö");
sesliler.Add("u");
sesliler.Add("ü");
// sessiz harfler koleksiyonu oluşturuluyor...
ArrayList sessizler = new ArrayList();
sessizler.AddRange(new string[]{"b","c","ç","d","f","g","ğ","h","j","k",
"l","m","n","p","r","s","ş","t","v","y","z"});
//
// sesli ve sessiz harflerin sayısını tutacak
// değişkenler tanımlanıyor
int sesli = 0;
int sessiz = 0;
//
// kullanıcıdan metin alınıyor
Console.WriteLine("Bir metin girin:");
string metin = Console.ReadLine();
//
foreach (char harf in metin)
{
// sesli harf
if (sesliler.Contains(harf.ToString().ToLower()))
{
sesli++;
}
// sessiz harf
if (sessizler.Contains(harf.ToString().ToLower()))
{
sessiz++;
}
}
// sonuç ekrana yazdırılıyor.
Console.WriteLine("{0} adet sesli ve {1} adet sessiz harf bulundu.",
sesli, sessiz);
}
}

Birden fazla vize ve final notu için dönem sonu notunu hesaplama

///
/// Uygulama adı, vize notları ve final notları verilen öğrencinin
/// ders geçme notunu hesaplayan fonksiyonu ve bu fonksiyonu örnek
/// değerlerle çalıştıran Main metodu.
///

static void Main()
{
int[] vizeler = new int[] { 50,60,70};
int[] finaller = new int[] {60,70,80,90 };
string sonuc = DonemSonuNotuHesapla("Dursun Durdu", vizeler, finaller);
Console.WriteLine(sonuc);
}
//
static string DonemSonuNotuHesapla(string ogrenci, int[] vizeNotlari, int[] finalNotlari)
{
// Yerel değişkenler tanımlanıyor
int gecmeNotu = 0;
int vizeNotlariToplami = 0;
int finalNotlariToplami = 0;
// Vize notları toplamı alınıyor.
foreach (int not in vizeNotlari)
{
vizeNotlariToplami += not;
}
// Final notları toplamı alınıyor
foreach (int not in finalNotlari)
{
finalNotlariToplami += not;
}
// Geçme notu hesaplanıyor vize %40 + final %60
gecmeNotu = vizeNotlariToplami / vizeNotlari.Length * 40 / 100 +
finalNotlariToplami / finalNotlari.Length * 60 / 100;
//
// Sonuç geri döndürüyor
return ogrenci + " (" + gecmeNotu + ")";
}