C# Dersler…::Ders8::..Aritmetik İşlemler

Aritmetik operatörler ve kullanım şekilleri

Bilgisayarlar yapıları gereği, çeşitli matematiksel hesaplamaları gerçekleştirirler. Bu sebeple, C# ile temel matematiksel işlemlerin nasıl yapıldığını inceleyelim. Temel matematiksel işlemler derken toplama, çıkarma, çarpma ve bölme işlemlerini kastediyorum. Daha önceki bölümlerden, toplama işleminin C#’ta nasıl yapıldığını biliyoruz:

1 C = A + B;

Bir tamsayıdan diğer bir tamsayıyı çıkarmak da bu kadar kolaydır:

1 C = A – B;

Yukarıda yaptığımız işlemlerde kullandığımız artı ve eksi işaretlerinin her ikisi de aritmetik işaretlerdir. Bu işaretlere aynı zamanda ikili operatör de denilir. Bu durumda, bu işaretlere operatör, sağında ve solunda bulunan ifadelere de operand denir. İkili operatör denmesi de, işaretin sağında ve solunda iki tane operand bulunmasındandır.

1 C = A + -B;

 

1 C = -B + A;

Yukarıdaki iki örneği incelersek, burada eksi işaretleri tekli operatördür. Çünkü bu işaretler B’nin değerini işlem sırasında negatif yapmak için orada bulunuyorlar ve sadece sağında bir operandı var.

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

1 C = +A – +B;

Ama bu örnekte olduğu gibi artı işaretinin değişkenin önünde olması hiçbir şeyi değiştirmez. O yüzden sırf olabileceğini göstermek için yazdığım bu tür bir ifadeyi daha sonra hiç yazmayacağım.

C#’ta çarpma işlemi yapmak istediğimizde çarpma için gerçek dünyada kullandığımız gibi bir çarpı işaretinin olmadığını göreceksiniz. Bu işlemi asteriks ile yapıyoruz. Asteriks işareti genelde bütün programlama dillerinde çarpma için kullanılır.

1 Alan = En * Boy;

Bazı programcılar asteriks için yıldız kelimesini kullanır, ama Alan eşittir En çarpı Boy demek istedikleri bellidir.

Klavyede bölme işlemi için de, matematikteki bölme işareti yoktur. Bunun için bölü işaretini kullanacağız.

1 Saat = Dakika / 60;

Saat eşittir dakika bölü altmış.

Bölme İşlemi ve Sıfıra Bölünme Durumu

Dört temel matematiksel işlemden kuşkusuz en zoru bölme işlemidir, çünkü tamsayılarla bölme işlemi yaparken bir takım problemler ortaya çıkar.

Şimdi 3 tane ekmek var ve bunu 2 kişi eşit paylaşacaklar diye düşünelim.

1 int ekmek, kisi, hak;
2 ekmek = 3;
3 kisi = 2;
4 hak = ekmek / kisi;

Bu örnekteki hak neye eşittir? Kesinlikle 1.5 değil, çünkü hak değişkeni tamsayı olarak tanımlanmış. ekmek ve kisi değişkenleri de tamsayı. Eğer gerçekten 1.5 çıksın istiyorsak o zaman başka yöntemler var, onları ilerde tartışacağız.

Burada tamsayı olarak sonuç çıkmasının nedeni, iki tane tamsayı arasında yapılacak herhangi bir işlemin sonucunun yine tamsayı olması gerektiğidir. Bu kuraldan dolayı C#, iki tamsayı arasında bölme işlemi gerçekleştiğinde sonucun küsurat kısmını atar ve tamsayı kısmını alır.

Küsurat kısmını atma işlemi, negatif tamsayılarla işlem yaparken de gerçekleşir. Aşağıdaki örnekte sonuç -1.5 değil, -1 olacaktır. Küsuratı atma işlemine sıfıra yuvarlama da denir. Bir tamsayı bölme işleminde sonuç, sıfıra en yakın olan bir sonraki tamsayıdır.

1 int ekmek, kisi, hak;
2 ekmek = 3;
3 kisi = 2;
4 hak = ekmek / kisi;
5 kalan = ekmek % kisi;

İşlem sonucunda hak, 1 çıkacaktır. Her kişiye 1 tane ekmek düşüyor. kalan ise 1 ekmektir. Kalanı bu şekilde elde edebiliriz. Negatif sayılarla yapılacak kalan bulma işleminde ise sonuç her zaman % işaretinin solundaki sayının işareti ile aynıdır.

Kalan operatörü ile yapabileceğimiz güzel uygulamalar var. Bunlardan birkaçını inceleyelim. Mesela 1995, 2005 gibi dört basamakla yazılan yılları 95, 05 gibi 2 basamaklı halde yazmak isteyebiliriz. Bu durumda kalan operatörü işimize yarar.

1 IkiBasamakliYil = DortBasamakliYil % 100 ;

Sonuç her zaman 00 ile 99 arasında olacaktır.

Sonuç her zaman 00 ile 99 arasında olacaktır.

Eğer bir işin sonucu toplam dakika olarak verilmişse, bunu saat ve dakika olarak ayırmak istersek, bunu kalan operatörü ile yapabiliriz.

Eğer bir işin sonucu toplam dakika olarak verilmişse, bunu saat ve dakika olarak ayırmak istersek, bunu kalan operatörü ile yapabiliriz.

1 Saat = ToplamSure / 60;
2 Dakika = ToplamSure % 60;

Bir sayının diğer bir sayıya bölünüp bölünemeyeceği ile ilgili durumlarda da kalan operatörü kullanılabilir. Artık yıl hesabı bu şeklide yapılır. Eğer bir yıl dörde bölünebiliyorsa artık yıldır.

Eğer Yil % 4 ifadesi sıfıra eşit olursa Yil sayısı dörde tam bölünüyor demektir ve dolayısıyla artık yıldır.

Şimdi aşağıdaki ifadeyi dikkatli inceleyelim. Bu işlemde bir problem var.

1 A = 3;
2 B = 0;
3 C = A / B;

Yukarıdaki bölme işleminin sonucunda division by zero denilen istisna oluşur ve bu işleme tamsayılarda izin verilmez. Şimdi aşağıdaki şekilde bu örneği baştan yazalım ve sonucunu çalıştırıp görelim.

    

1 using System;
2 class SifiraBolunme
3 {
4     static void Main()
5     {
6     
7         int A, B, C;
8     
9         A = 3;
10         B = 0;
11  
12         Console.WriteLine (A);
13         Console.WriteLine (B);
14  
15         C = A / B;
16     
17     Console.WriteLine (C);
18     }
19 }

Program çalıştığında ekrana A ve B değişkenlerinin değerlerini yazar ve daha sonra aşağıdaki pencere çıkar.

Eğer iptal seçersek aşağıdaki pencere gelir.

Just – In – Time Debugger penceresinden de no seçtikten sonra aşağıdaki ekran gelir ve istisna, konsol ekranında görüntülenir.

C değişkenini ekrana yazan Console.WriteLine ifadesi, program kesildiğinden dolayı görüntülenmez.

Bir program, üç evreden geçer. Yazma, derleme ve çalıştırma evreleri. Genelde program hataları yazma evresinde yazım hataları olarak meydana gelir. Bu örneğimizde ise çalıştırma evresinde ortaya çıkan bir istisna var. Program çalışmaya başlıyor ve yarısına gelince kesiliyor.

Programı kesip ekrana sebebini yazan sınıf ise System isim uzayındaki System.DivideByZeroException sınıfıdır. Daha sonra, başka bir yazıda bu sınıfı kullanarak oluşan istisna durumlarla başa çıkma yollarını inceleyeceğiz.

Eğer yukarıda yazdığımız programda C = A / B ifadesini C = 3 / 0 haline getirip yeniden derlersek derleyici aşağıdaki ekranda görülen hatayı derleme evresinde algılayacak ve programı derlemeyecektir.

Şu ana kadar yaptığımız aritmetik işlem örneklerinde hep iki tane sayı kullandık. Karmaşık işlemleri de bir ifadede yazabiliriz.

    

1 using System;
2 class IslemOnceligi1
3 {
4     static void Main()
5     {
6     
7         int A = 2, B = 4, C = 5;
8     
9         int D = A / B + C + 2*A;
10  
11         Console.WriteLine (D);
12     }
13 }

Çarpma ve bölme işlemlerinin toplama ve çıkarma işlemlerine göre önceliği vardır. İşlemleri soldan sağa doğru incelersek, önce A/B işlemi meydana gelir, 2*A işlemi hesaplanır ve sonuçta çıkan üç tane sayı toplanır. Bölme ile çarpma işlemi aynı önceliğe sahiptir. Toplama ile çıkarma da öyle. Eğer bunlardan ikisi, mesela bölme ve çarpma, aynı ifadede yan yana gelirlerse, soldan sağa doğru bakılıp daha solda olan daha önce yapılır.

Parantezin önceliği çarpma ile bölme, toplama ile çıkarma işlemleri ile kıyaslandığında daha yüksektir. O zaman, daha önce yapılmasını istediğimiz işlemleri parantez içine almalıyız.

    

1 using System;
2 class IslemOnceligi2
3 {
4     static void Main()
5     {
6     
7         int A = 2, B = 4, C = 5;
8     
9          int D = (A + B) + (C + 2*A – C/(B – A) );
10  
11         Console.WriteLine (D);
12     }
13 }

Yukarıdaki örnekte ilk olarak en içteki parantez olan B – A işlemi yapılır. Daha sonra diğer parantezlerin içindeki işlemler, en sonunda da toplama ve çıkarma yapılır.

Tekli artı ve eksi operatörleri ise hem çarpma ile bölme, hem de toplama ile çıkarmadan daha yüksek önceliğe sahiptir.

Eşittir operatörü ise öncelik tablosunun en altındadır. Yaptığı iş, sağdaki ifadeyi soldaki değişkene atamaktır. Bir ifade içerisinde birden fazla eşittir operatörü kullanılabilir.

1 A = B = C = 10;

Yukarıdaki örnekte önce C değişkeni 10 değerini alır, daha sonra B değişkeni C değişkenine eşit olur, daha sonra da A değişkenine B değişkeni atanır.

Şimdi aşağıdaki ifadeyi inceleyelim.

1 C = (A = 10) + (B = 20);

Önce A değişkeni 10, B değişkeni de 20 değerlerini alır, daha sonra da C değişkenine bunların toplamı atanır. Yukarıda görülen ifadeyi parantezleri kullanmadan yazmak mümkün olmaz. Mümkün olamaması da toplama işleminin atama işlemine göre önceliğinin olmasından kaynaklanır. Çünkü, yukarıdaki ifadeyi aşağıdaki gibi yazdığımızda üçüncü operand olan + işaretinin solundaki ifade değişken olmaz.

1 C = A = 10 + B = 20;

Yazmanın mümkün olamayacağı diğer bir ifade de aşağıda görülen, hiçbir işlevi olmayan ifadedir.

1 A + 20;

Programlama dillerinde, bir değişkenin değerinin üzerine bir ilave yapmak, ya da bir eksiltme yapmak ihtiyacı çok sık görülür.

1 ToplamOgrenciSayisi = KatilanOgrenciSayisi + IzinliOlanlar;

Yukarıdaki ifadeyi yazarken aynı değişken adını tekrar yazamktansa aşağıdaki gibi yazmak mümkündür.

1 ToplamOgrenciSayisi += IzinliOlanlar;

Bu örnekteki += operatörlerine birlikte, bitişik atama operatörü de denir. Bitişik atama operatörünü diğer dört işlem operatörleri ile de yazmak mümkündür.

1 Devamsizlar -= GecGelenler;

Karmaşık ifadeler yazarken de birleşik atama operatörü kullanabiliriz.

1 C = (A += 4) / (B *= 7);

Artırma ve Azaltma Operatörleri

Programlamada bir değişkenin değerini 1 artırmak ve bir azaltmak da çok yaygındır. Bunu yapmak için aşağıdaki gibi bir ifade yazılabilir.

1 A = A + 1;

Bu ifadeyi daha kısa ve kolay yazmak da C#ta mümkündür.

1 A += 1;

Şimdi bunu daha kolay ve kısa yazalım.

1 A ++;

++ operatörü artırma operatörü olarak da söylenir, C tabanlı dillerde vardır ve yaygın kullanılır. Tabiî ki eksiltme operatörü de vardır. Bu da — operatörü. Operatörlerin bu şekilde yazılması sonek şeklinde yazmaktır.

1 A –;

Artırma ve eksiltme operatörleri, bu şekilde yapılabileceği gibi, önek olarak da yazılabilir.

1 ++A;
2 –B;

Önek ve sonek arasında bir nüans vardır ve önemlidir. Aşağıdaki örneği çalıştırırsak aradaki farkı görebiliriz.

    

1 using System;
2 class ArtirmaEksiltme
3 {
4     static void Main()
5     {
6     
7         int A = 2, B = 4, C, D;
8     
9         C = A++;
9         D = ++A;
10  
11         Console.WriteLine (C);
11         Console.WriteLine (D);
12     }
13 }

A değişkeni başlangıçta 2 dir. Sonra 9. satırda C değişkeni, A değişkeninin 2 olan değerini alır, daha sonra A, 1 artarak 3 olur. 10. satırda ise önce A, 1 artırılıyor yani 4 oluyor, daha sonra da A’nın değeri, D’ye atanıyor. Yani D, 4 oluyor.

17. ve 18. satırlarda ise ekrana yazdırıp test ediyoruz.

Uncategorized kategorisinde yayınlandı. Etiketler: , , . » yorum bırak;

C# Dersler…::Ders7::..Ekranda Yazı Yazdırmak

Program yazmanın iki boyutundan bahsedebiliriz, bunlar ise programcı açısından program ve kullanıcı açısından programdır. Program geliştiriciler olarak başlangıçta her iki kişi de biziz. Rolümüz programcıdan kullanıcıya değişince ya da kullanıcıdan programcıya değişince, bakış açımız da değişecektir. Mesela, programımızın verdiği çıktı, kullanıcı açısından girdidir. Kullanıcının programa girdiği veriler program açısından girdi, kullanıcı açısından çıktıdır.

Burada bahsedilen girdi ve çıktı kavramları üzerinde durmak istiyorum. Programın dış dünyaya verdiği bilgiler, gösterdiği tepkiler çıktı olarak tanımlanırken, dış dünyadan aldığı bilgiler ise girdi olarak tanımlanır. Bir bilgisayar programı da aldığı girdileri yorumlar, saklar, bu bilgilere dayanarak dış dünyaya bir takım sonuçlar gönderir. Bu modele I/O modeli denir.

I/O Modelleri

Windows ortamında çalışan bir program kullanıcıdan girdileri klavye, mouse, buton ya da kaydırma çubukları gibi çeşitli kontroller yardımı ile alır. Bir Windows programı çıktıyı kullanıcıya yazı veya grafik olarak gösterir. Bir fırını çalıştıran program ise farklı bir kullanıcı I/O modeline sahiptir. Burada girdiler fırınını ön panelindeki butonlarla yapılır. Çıktılar ise fırının açılması, fırının kapanması, tepsinin döndürülmesi, ışığın yakılması şeklinde olacaktır. C ve C# gibi dillerde kullanıcı girdi ve çıktısı için özel bir model yoktur. Bu bir eksiklik gibi görünüyor fakat değil. Bunu şöyle söylemek daha doğru olacaktır: C#, kullanıcıyı herhangi bir girdi ve çıktı modelini kullanmaya zorlamaz. Siz yazdığınız programın nerede kullanılacağına göre girdi ve çıktı modelinizi kendiniz seçersiniz.

Bu bölümde konsol ekranı yardımıyla kullanıcıya çıktı verebilen bir program yazmaya çalışacağız. Bunu yapmadan önce bazı kavramları açıklamakta yarar var. Ekranda yazı göstermeye yarayan System.Console.WriteLine() ve System.Console.Write komutlarıdır. Bu komutlar neden üç parçadan oluşuyor? Bu parçaların adları nelerdir?

System bir isimuzayıdır. İsimuzayları C#’a C++ dilinden miras kalmıştır. İsimuzayları birbiri ile alakalı yöntemleri bir paket içinde toplamaya yarayan bir paketleme sistemidir. Bir isimuzayının içindeki bir yöntemin adı diğer bir isimuzayı içinde de bulunabilir. Bu da isimuzayının bir diğer işlevidir.

System isimuzayı; kullanıcı ile iletişim kurmaya yarayan I/O modeli olan Console, matematiksel işlemlerin bir araya toplandığı Math gibi temel sınıfları içinde barındırır. Burada sınıf terimi geçti. Bir önceki bölümde de anlattığımız gibi, C# programının temel birimi sınıftır. Bunu daha doğrusu şöyle söylemek lazım: Nesne yönelimli dillerin temel birimi sınıftır. Sınıfların özellikleri ve yöntemleri vardır. Bir arabayı örnek alalım. Rengi, modeli fiyatı gibi özellikleri vardır. Hareket etmek, korna çalmak, durmak gibi yöntemleri vardır. Daha sonra bu temel araba sınıfından bir takım farklı özellik ve yöntemlere sahip olan otobüs, kamyon, minibüs gibi sınıflar türetiriz. Bu sınıfların örnekleri olan nesneler ise araba sınıfının niteliklerini taşırlar. Türetilmiş sınıftan oluşturulan nesne de türetilmiş sınıfın özelliklerini ve temel sınıfın özelliklerini taşır.

Yöntemler ise sınıfın dış dünya ile etkileşimini sağlayan eylemleridir. Mesela Console sınıfının WriteLine yöntemi ekranda bir satır yazı gösterir. Write yöntemi ise ekranda yazı gösterir ama alt satıra geçmez işini bitirince.

WriteLine yöntemini kullanan bir program bu yönteme bir argüman yollar:

1 System.Console.WriteLine(ToplamMeyve);

Bazı programcılar parantez ile argümanı ayırmak için argümanın sağına ve soluna boşluk koymayı tercih ederler.

1 System.Console.WriteLine( Toplam );

WriteLine yöntemine bir değişkeni argüman olarak geçebildiğimiz gibi, bir sayısal ifadeyi de geçebiliriz.

1 System.Console.WriteLine( Elma + Armut );

Yukarıdaki iki satırı incelersek ilkinde bir işlemin sonucunu tutan değişkenin değerini yazdırıyoruz. İkincisinde ise işlemin kendisini direkt parantezlerin içine yazıyoruz. Sonucu hesaplayıp ekrana yazıyor.

Eğer amacımız sadece 2 ve 3 sayılarının toplamını ekrana yazdırmak ise

1 System.Console.WriteLine( 2+3 );

yazabiliriz.

using Direktifi

Eğer programda birden fazla System.Console.WriteLine yöntem çağrısı yapıyorsak System isimuzayınu using direktifini sınıf tanımı yapmadan önce programımızın başına ekleriz. using direktifi ile tanımladığımız herhangi bir isimuzayına dahil sınıfların yöntemlerini çağırırken artık isimuzayı ismini yazmadan sadece sınf.yöntem() şeklinde yöntemi yazarız. Bu bize zaman kazandırır. using direktifine direktif denmesinin sebebi programın çalışma zamanında hiçbir işlevinin olmamasındandır.

1 Console.WriteLine(Toplam);

Şimdi artık çalışan ve ekrana yazı yazan bir program yazalım.

1 using System;
2 class BirProgram
3 {
4   static void Main()
5   {
6     int Elma, Armut, Toplam;
7  
8     Elma = 2;
9     Armut = 3;
10     Toplam = Elma + Armut;
11     Console.WriteLine ( Toplam );
12   }
13 }
Uncategorized kategorisinde yayınlandı. Etiketler: , , , , . » yorum bırak;

C# Dersler…::Ders6::..Yaz, Derle, Çalıştır

Bir bilgisayar programı başlangıçta basit bir metin dosyası olarak hayata başlar. Mesela C# programları .cs uzantılı dosyalardır. Bir programın birden çok kaynak dosyası olabilir.

Programı yazıp bitirdiğimizde programımızın kaynak dosyasındaki kodu, C# derleyicisi IL (Ara Dil) denilen bir koda çevirir. Genelde yazmış olduğumuz kod hatasız olmaz. Derleyici bir hata tespit ettiğinde bu hata ile ilgili gerekli bildirimleri yapar. Bu tür hatalara yazma zamanı hataları denir. Eğer herhangi bir hata bildirimi varsa geri dönüp programınızdaki hatayı düzeltmemiz gerekir.

Derleme işlemini başarıyla tamamlarsak programın çalıştırılabilir EXE dosyası oluşur. Bu aşamadan sonra kontrol işletim sistemine geçer. Bazen yazdığımız programlar bellekte izin verilmeyen bir bölgeye ulaşmak ister. CLR bu durumda bir hata mesajı ile bizi uyarır. Bu tür problemler çalışma zamanı hatalarıdır veya istisna durumlardır. Aynı şekilde geriye dönüp hatayı düzeltmeliyiz. Bir programın yazma işlemi bittiğinde her şey tam gibi görünür, fakat genellikle problemsiz olmaz. Bazen hatayı yakalamak kolaydır ama program büyüdükçe yakalamak zorlaşır, hemen hemen imkânsız hale gelir. Derleme ve hata ayıklama ile ilgili yazılmış pek çok kitap var. Daha sonra bu kitaplardan birini alıp hata ayıklama üzerine de bilgi edinebilirsiniz.

C# programı yazmak ve derlemek için birçok seçenek var. Microsoft tarafından üretilen Visual Studio 2005 paketi, .net ortamında yazılım geliştirme araçları içerir. 30 günlük deneme sürümü olan C# Express yazılımını Microsoft web sitesinden indirip deneyebilirsiniz. Ama bu kadar karmaşık bir geliştirme ortamı yerine Charles Petzold tarafından geliştirilen daha basit ve ücretsiz bir araç olan Key Of Csharp isimli araç başlangıç seviyesi bir kullanıcının işini görecektir. Biz de çalışmalarımızı bu aracı kullanarak yapacağız.

Programı indirdikten sonra çalıştırdığımızda karşımıza kurulum ekranı gelecektir.

Bu ekranda I aggree diye başlayan kutuyu işaretlersek üzerinde Install yazan buton aktifleşecektir. Install butonuna basıp programı kurma işlemine başlarız. Krma işlemi tek adımda gerçekleşir ve OK butonuna basarak kurulumu bitiririz. Masaüstüne gelen kısayol simgesi yardımıyla programı açıp ilk kodlarımızı yazmaya başlayalım.

File menüsünden New Project seçince proje ismi olaral Project01 yazan bir pencere gelir. O pencerede programın verdiği ismi kabul ediyorsak OK butonuna basıyoruz ve yeni bir projeye başlamış oluyoruz.

Program default olarak ürettiği dosyaları Belgelerim klasörü içerisinde Key of C# Projects klasörü altına Project01, Project02 gibi isimlerle kaydeder. Bu Project01 gibi klasörlerin içerisinde .cs uzantılı olan bizim yazdığımız kodları içeren kaynak dosya, .exe uzantılı derlenmiş çalıştırılabilir dosya ve .kcsproj uzantılı programın proje bilgilerini tuttuğu kendi özel dosyası bulunur.

Şimdi daha önce yazdığımız örneği Key Of Csharp ile yazıp derleyelim. Önce bir Project ismi vererek programı açıyoruz. Örneğimizi editörde yazıyoruz.

Daha sonra örneğimizi yazıp Build menüsünden Compile seçtiğimizde aşağıdaki durum çubuğunda Ready yazar. Bu durumda yine Build menüsünden Run seçilerek ekran çıktısı görülebilir. Ama daha henüz ekran çıktısı üreten bir program yazamadığımız için sadece Pres any key to continue ibaresi çıkar, klavyeden bir tuşa bastığımızda da konsol ekranı kaybolur. Bu iki işlemi birlikte yapmaya yarayan Build menüsünde Compile and Run seçilirse ya da klavye kısayolu olan F8’e basılırsa da yine aynı ekran karşımıza gelir.

Kullanıcı etkileşimi olmadığı için, hiçbir çıktı üretmediği için, hiçbir girdi almadığı için şu anda programımız bir işe yaramıyor. Ama temel bir C# programının bütün öğelerine sahip. Daha sonra ekrana bir şeyler yazan programlar da yazacağız.

Uncategorized kategorisinde yayınlandı. Etiketler: , , , , . » yorum bırak;

C# Dersler…::Ders5::..C# ile ilk Program

Şimdiye kadar yaptığımz örneklerin hiç biri çalışır bir program değildi. Şimdi çalışabilecek komple bir program yazalım. C#’ta programlar yöntemlerden ve birbiri ile alakalı olan yöntemlerin gruplanarak oluşturduğu sınıflardan oluşur.

Yöntem, belirli bir işi yapan program kodlarının bir araya gelerek oluşturduğu program bloğudur. Sonra bu yöntemleri gruplayarak sınıfları oluştururuz. En basit C# programı bir sınıftan ve o sınıfa üye bir yöntemden oluşur. Bir sınıfın içinde birden çok yöntem bulunabileceğine göre birisinin giriş noktası olması gerekir. Program çalıştığında ilk olarak hangi yöntem devreye girecek? Bu sorunun cevabı Main yöntemidir. Bilgisayar, sınıfın içindeki Main isimli yöntemi ilk olarak çalıştır. Daha sonra programcının belirlediği yönergeleri izleyerek diğer yöntemleri de çalıştırır. C# programında özel bir role sahip olan Main, bir anahtar kelime değildir. Eğer isterseniz Main isminde bir değişken de tanımlayabilirsiniz.

Yöntemlerin girdileri ve çıktıları vardır. Örneğin öğrencinin bir dersten aldığı sınavların ortalamasını alan bir yöntemimiz varsa, öğrencinin sınavlardan aldığı sonuçlar yönteme girdi olarak geçilir ve geriye bu sınav sonuçlarının ortalaması olan puan döner. Başka bir ifadeyle söylersek, yöntemler; yöntem parametreleri olarak adlandırılan değişkenelri girdi olarak alırlar, bir takım işlemlere tabi tutarlar ve dönen değer olarak bir çıktı üretirler.

Yöntemlerin bir belirteçleri bir de dönen değerleri olur. Bnular yöntem isminin soluna yazılır. Daha sonra yöntem isminin önüne parantez içerisinde aralarına virgül konularak yöntem parametreleri olan değişkenelr yazılır. Daha sonra yöntemin gövdesi gelir. Bu gövde küme parantezleri içerisine alınır. Eğer yöntemin bir dönen değeri yoksa dönen değer olarak void yazılır. Yöntem parametresi almayacaksa yöntem isminin önüne boş parantezler konur. Şimi Main yöntemini yazalım.

1 static void Main()
2 {
3 int Elma, Armut, Toplam;
4  
5 Elma = 2;
6 Armut = 3;
7 Toplam = Elma + Armut;
8 }

Çoğu programcı yöntem içeriğini girintili olarak yazmayı tercih eder. Ben de girintilemeyi severim.

1 static void Main()
2 {
3   int Elma, Armut, Toplam;
4  
5   Elma = 2;
6   Armut = 3;
7   Toplam = Elma + Armut;
8 }

Bazı programcılar sınıfın başlangıcını ve bitimini belirten küme parantezlerinden ilkini hemen sınıfın bildiriminin yapıldığı ilk satırın sonuna koyarlar. Ben bu şekilde yazmayı tercih etmiyorum.

C# derleyicisi bizim girintileme tarzımızla ilgilenmez. Çalıştığınız şirket ya da birlikte çalıştığınız proje yöneticisi sizi bir tarzı kullanmaya zorlayabilir. Eğer böyle bir zorunluluk yoksa istediğiniz girintileme tarzını seçer devam edersiniz.

Bir C# programında en temel birim yöntem değildir tabiî ki. Daha önce de bahsettiğimiz gibi en temel birim sınıftır. Yöntemler bir araya gelerek sınıfları oluştururlar. Mesela yukarıda yazdığımız Main de bir yöntemdir.

Temel bir C# programı bir adet sınıftan ve bir de Main isminde yöntemden oluşur. Sınıflara isim belirlerken değişkenlerin isimlendirilmesinde dikkat ettiğimiz kurallar geçerlidir. Main kelimesi anahtar kelime olmamasına rağmen, Main isminde bir yönteme sahipse sınıf ismi olarak Main kullanılmaz. Sınıf bildirim de class kelimesi, sınıf ismi ve sınıf gövdesinden oluşur. Sınıf gövdesini de yine küme parantezleri içine alırız. Sınıf gövdesinde sınıfı oluşturan yöntemler bulunur. Sınıf içeriğini de girintilemek benim tercih ettiğim bir tarzdır. Demek oluyor ki yöntem içerikleri iki defa girintelenecek.

Şimdi çalışan bir bütün C# programı yazalım. Bir sonraki ünitede de derleme ve çalıştırma işlemlerini inceleriz.

1 class BirProgram
2 {
1   static void Main()
2   {
3     int Elma, Armut, Toplam;
4  
5     Elma = 2;
6     Armut = 3;
7     Toplam = Elma + Armut;
    Console.Writeline (Toplam);
8   }
8 }
Uncategorized kategorisinde yayınlandı. Etiketler: , , , . » yorum bırak;

C# Dersler…::Ders4::..Türlerin Tanımlanması

C#’ta bir değişkeni kullanmadan önce onun türünü tanımlamak zorundayız. Bir değişken program içerisinde yalnızca bir kere tanımlanabilir.

Bir sayı C#’ta üç farklı türde olabilir.

Canlıların sayısını yazıyorsak tamsayıları kullanmak isteyebiliriz.

Eğer yazdığımız programda para miktarı bulunuyorsa bunun için desimal sayılar gerekecektir. Mesela 2 YTL 50 YKr gibi.

Eğer bilimsel rakamlar içeren bir program yazıyorsak bilimsel notasyonu kullanmalıyız. Programlamada bu tür sayılara kayar noktalı sayılar denir.

Bir programın içinde her üç türden de sayılar bulunabilir. Şimdilik sadece tamsayı türünden örnekler yapalım. Daha sonra her bir türü ayrı bir ünite olarak işleyeceğiz. Şimdi bir tamsayı tanımlayalım.

1 int Elma;

Aşağıdaki örnekte değişkenler tanımlanacak ve değer ataması yapılacaktır.

1 int Elma;
2 int Armut;
3 int Toplam;
4  
5 Elma = 2;
6 Armut = 3;
7 Toplam = Elma + Armut;

Aşağıdaki örnekte olduğu gibi bir satırda birden çok tür tanımlaması yapılabilir.

1 int Elma, Armut, Toplam;
2  
3 Elma = 2;
4 Armut = 3;
5 Toplam = Elma + Armut;

Bazı değişkenleri birlikte bazılarını da ayrı tanımlayabiliriz.

1 int Elma, Armut;
2 int Toplam;
3  
4 Elma = 2;
5 Armut = 3;
6 Toplam = Elma + Armut;

Tür tanımlamasını hep bir arada yapmak zorunda değiliz. Tek önemli kural değişkenelrin kullanılmadan önce tanımlanması gerektiğidir.

1 int Elma;
2 Elma = 2;
3  
4 int Armut;
5 Armut = 3;
6  
7 int Toplam;
7 Toplam = Elma + Armut;

Bir değişkenin tür tanımlaması ve değer atama işlemi aynı ifade içinde yapılabilir.

1 int Elma = 2;
2  
3 int Armut = 3;
4  
5 int Toplam = Elma + Armut;

Bir satırda birden çok değişkenin tanımlanması ve değer atanması aynı anda yapılabilir.

1 int Elma = 2, Armut = 3, Toplam = Elma + Armut;

Ama bir satırda tanımlanan bütün değişkenlere değer ataması yapma zorunluluğu yoktur. Bazılarına değer ataması yapmayabiliriz.

1 int Elma, Armut = 3, Toplam;
2 Elma = 2;
3 Toplam = Elma + Armut;

Bir tek satırda çok fazla değişken tanımlanması programın okunurluğunu ve hata ayıklamayı zorlaştırabilir. Kısa ve anlaşılır olmak iyi kodlanmış bir programda olması gereken özelliklerdendir. Aşağıdaki örnekte değişkenlerin tanımlanması ve değer atama işlemleri oldukça güzel yapılmıştır.

1 int Elma = 2;
2  
3 int Armut = 3;
4  
5 int Toplam = Elma + Armut;
C# Dersleri, Dersler kategorisinde yayınlandı. Etiketler: , , , , , , . » yorum bırak;

C# Dersler…::Ders3::..Atama İşlemleri

C# ile program yazmaya ilk adım: Atama

İşlemleri

Programlamaya başlarken, ilk olarak onu matematiğe benzetebiliriz. Mesela ilk yazacağımız programlardan biri de iki tane sayıyı toplayıp sonucunu ekrana yazdırmak olabilir. Ama tabiki matematikteki her şey programlamada da olduğu gibi var anlamına gelmiyor. Bu farkları başlarda iyi anlarsak programlama mantığını kavramakta zorluk çekmeyiz.

Şimdi matematiksel bir ifade görelim:

1 A = 1
2 B = 2
3 C = A + B

Oldukça anlaşılır ifadeler. Şimdi bu işlemi C# dilinde yazalım:

1 A = 1;
2 B = 2;
3 C = A + B;

Yukarıda görülen program parçasında A, B ve C ifadeleri değişken olarak adlandırılır. Değişkenler basitçe kendilerine atanan değerleri saklayan bellek bölgelerini sembolize eder diye tanımlanabilir. Görüldüğü gibi C# kodu ile matematiksel ifade arasında sadece sonlara konulan noktalı virgül farkı var. Ama bu benzerlik aldatıcıdır.

1 A = 1;
2 C = A + B;
3 B=2;

Yukarıdaki program parçası matematiksel olarak anlamlı olsa da programlama açısından anlamsızdır. Matematikte eşittir işareti eşitlik bildirmek için kullanılır. Bu yüzden matematiksel olarak bu ifadeyi gördüğümüzde C’nin 3 olacağını rahatlıkla söyleyebiliriz. C#’ta eşittir ifadesi atama operatörüdür. Program kodları satır satır sırayla derlenir. İlk satır derlendiğinde A değişkenine 1 değeri atanır. C# derleyicisi, daha henüz değeri belli olmayan B ifadesini kullanan 2. satıra geldiğinde ne yapacağını bilemez ve hata olduğunu bildirir.

Operatörler, bilgisayarın bir işlemi gerçekleştirmesini sağlayan semboller ya da kısa kelimelerdir. Mesela yukarıdaki program kodlarındaki eşittir ifadesi atama operatörüdür. Operatörlerin sağındaki ve solundaki ifadelere ise operand denir. Atama operatörünün de 2 tane operandı vardır. Atama operatörünün solundaki ifade mutlaka bir değişken olmalıdır. Sağındaki ifadelerin hesaplanması sonucu oluşacak değer solundaki değişkene atanır.

Artı işareti de aritmetik operatörlerden biridir. Operatörlerin tamamı ileride geniş bir şekilde işlenecektir. Burada kısaca bahsettik.

Atama işlemi sadece yukarıda verdiğimiz örnekteki gibi değildir. Aşağıda gördüğünüz atamaların hepsi C#’ta geçerlidir:

1 C = A + 3;
2 C = 27 + A + B;
3 C = B + A + A + B + A + B + 14;
4 C = 45 + 27;

A=A+1 MESELESİ

Matematiksel olarak hiçbir anlamı olmayan ama programlamada kullanılan bir ifade var. Bunu ilk defa öğrenirken doğru anlarsanız, daha sonra zorluk çekmezsiniz.

1 A = 11;
2 A = A + 1;

Atama yaparken göz önüne alınacak en önemli kural atamaların daima sağdan sola doğru olduğudur. Yukarıdaki örneğin 1. satırında A değişkenine 11 değeri atandı. Daha sonraki satırda ise A değişkeninin değeri olan 11 ile 1 toplanıp hesaplanan değer A değişkenine atandı. Kısacası A’nın yeni değeri 12 oldu.

Negatif sayıları da bir eksi işareti ile gösteririz.

1 A = -11;

Aşağıdaki ifade matematikte geçerli olmasına rağmen programlamada geçersizdir.

1 A + 2 = 4;

Değişkenlere değerleri değişebildiği için değişken denmiştir. Aşağıdaki örneği inceleyelim.

1 A = 10;
2 B = -2;
3 C = A + B;
4 B = 5;
5 C = A + B;

Yukarıdaki örneğin 3. satırında C 8’e eşit oluyor. 4. satırda B’nin değeri değişerek 5 oluyor. 5. satırda ise C’nin değeri 15 oluyor.

C#’ta program yazarken satır kavramı yoktur. ALGOL dilinden türeyen diğer dillerde olduğu gibi C#’ta da her ifadenin sonuna noktalı virgül konur. İfadenin bittiği yerden hemen bir yenisi başlayabilir, bir ifade birden çok satıra bölünebilir.

1 A=3;B=2;C=A+B;
2  
3 A = 10;
4 B
5 = -2;
6 C = A
7 + B;

Yukarıda verilen örneklerden her ikisi de doğrudur. C#’ta her ikisine de izin verilir.

Programlamada boşluklar ve boş satırlar, alfabe dışı karakter olarak bilinir. Programcılar alfabe dışı karakterleri programlarını daha okunur yapabilmek için kullanırlar. Mesela ben, atama ve aritmetik operatörlerde operatörün sağında ve solunda 1 karakterlik boşluk bırakmayı severim:

1 C = 3;
2 B = 27;
3 A = B + C;

C# büyük- küçük harfe duyarlı bir programlama dilidir, değişken isimlendirirken küçük harf ve büyük harf kullanabilirsiniz. Aşağıdaki örnekte her üç değişken de diğerinden farklıdır. Ama yine de program yazarken karışıklığa mahal vermemek için birbirine sadece bir harfin büyük ya da küçük olması kadar benzeyen değişken isimleri kullanılmaz.

1 Antalya = 38;
2 antalya = 36;
3 ANTALYA = Antalya + antalya;

İSİMLENDİRME KURALLARI

Değişkenleri isimlendirirken dikkat edilecek kurallar vardır ama bu kurallar son derece basittir:

  1. Değişken isimleri muhakkak bir harf ile ya da alt çizgi ile başlamalıdır.
  2. Değişken isimleri sadece sayı, harf ve altçizgi içermelidir. Diğer noktalama işaretleri değişken isimlerinde kullanılamaz. Asla sayı ile başlamaz.

Birden çok kelime içeren değişkenlerin isimlendirilmesi için yaygın olan iki yaklaşım çok sık görülür. Birincisi her kelimeler arasına alt çizgi koyarak küçük harflerle yazmaktır. Diğeri ise her kelimenin baş harfini büyük yazarak bitişik yazmaktır. Bu konuyu daha sonra isimlendirme notasyonlarını işlediğimiz ünitede geniş bir şekilde işleyeceğiz.

1 okuldaki_ogrenci_sayisi = 500;
2 Deney41 = 36;
3 OgretmenlerinSayisi = 46;
4 _sonuc = 12;

Değişken ismi olarak kullanılamayacak kelimeler vardır. Bunlara anahtar kelime denir, bunlar C# tarafından ayrılmış kelimelerdir. 77 tanedir. Bunların listesini inceleyiniz.

Değişkenlere isim verirken X, A, B gibi isimler verebilirsiniz. Ama sizin yazdığınız programa birisi devam edecekse, siz daha sonra dönüp bakacaksanız anlamlı isimler vermeniz gerekiyor.

1 OgrenciNumarasi = 36;
2 BirinciYaziliSonucu = 85;
3 SozluNotu = 90;
4 YazililarinOrtalamasi = 86;

Ama değişkenlere uzun isimler vermek de sıkıcı olabilir. Onun yerine anlamlı kısaltmalar yapmak daha mantıklıdır.

1 OgrNo = 36;
2 Yazili1 = 85;
3 Sozlu = 90;
4 Ort = 86;
C# Dersleri, Dersler kategorisinde yayınlandı. Etiketler: , , . » yorum bırak;

C# Dersler…::Ders2::.. Programlama Sanatı

Programcılar modern çağın ressamları, heykeltıraşları yani sanatçılarıdır. Programlama da sanatın ta kendisi. Bir başka açıdan baktığımızda da programlama bir bilim, programcı da bilim adamıdır. Bence her ikisi de doğru. Şöyle ki, programcı da sanatçının esin kaynağına yani ilhama dayanarak program yazar, aklına ilginç bir fikir gelir, bu fikri kendi araçlarını kullanarak başlar program halinde vücuda getirmeye.

Programcının en büyük görevi, insanlar ile bilgi arasındaki iletişimi ve bağlantıyı sağlamaktır. İnsan yaşamını kolaylaştıran bu kutsal görev programcı olmayanlarca pek de önemsenmez. Geleceğin sanal şehirlerini kuranlar programcı dediğimiz gizli kahramanlardır. Yeni yazdığı programın kullanıldığını ve yararlı olduğun görmek ona her şeyi unutturur, programcı olmayanların asla anlayamayacağı bir haz verir.

Bilgisayar kullanıcısı sayısı gün geçtikçe geometrik olarak artıyor ama bu tür bir haz bilgisayar kullanıcılarının büyük bir çoğunluğu tarafından asla yaşanmaz. Çünkü bilgisayar kullanıcılarının büyük bir çoğunluğu programcı değildir ve asla da olmayacaklar. Onlar sadece yazılan programları ve içerisinde yazılım gömülü akıllı cihazları kullanırlar.

BİR PROGRAMLAMA DİLİ ÖĞRENMEK

Programlama dili öğrenmeyi yabancı dil öğrenemeye benzetebilirsiniz. Mesela her ikinde de öğrenilmesi gereken, o dile özgü bir grup kelime var. Anahtar kelime diye adlandırdığımız bu kelimelerin c# dilindeki sayısı 77 tanedir. C dilinin geleneğini sürdürdüğü için de bu kelimeler küçük harflerle yazılır.

Yabancı dil öğrenirken bir takım yazım ve dil bilgisi kuralları öğrenmek zorundayız. Programlama dilinin yazım ve dil bilgisi kuralları konuşulan dillerin kurallarına göre daha katıdır.

Programlama dili ile yabancı dil öğrenme arasındaki en büyük benzerlik bence her ikisinin de okuyarak öğrenilememesidir. Pratik yapmak zorundayız. Bir müzik aletini çalmayı öğrenirken olduğu kadar çok pratik yapmalıyız hem de. Bir programcı gibi düşünmeye ve kendi kodumuzu kendimiz yazmaya alışmalıyız.

Programlama bir problem çözme etkinliğidir. Programcının tek en önemli kalite göstergesi problemleri bileşenlerine ayırma ve daha küçük parçalara bölerek çözebilme yeteneğidir. Programcının sorumluluğu bu küçük parçaları bir araya getirip çözümü oluşturmaktır. Bu beceri de bence sadece pratik yaparak gelişir.

PROGRAMLAMA NEREDEN NEREYE

Charles Petzold, bilgisayar devrimini iki evreye ayırır: Birinci evre bilgisayarların tasarlandığı ve yapıldığı zaman, ikinci evre ise onlarca yıl sonra bilgisayarların programcı olmayan kimseler tarafından da kullanılabilir olmasıdır.

İlk programlanabilir bilgisayar 1930′lu yıllarda yapıldı. Uzun bir süre programlama işlemi delikli kartlar gibi mekanizmalar kullanılarak sağlandı. Bilgisayarın kendisine donanım, üzerinde çalışan kodlara da yazılım adı verildi. Bir kaç dekad boyunca donanım ve yazılım birbirine bitişikti. Her makinanın kendine özgü bir komut seti vardı ve bu komutlar başka makinalarda çalışmazdı. Sayısal tümleşik devreler kullanıldığı dönemlerde de bu durum devam etti.

1950′lerin başında mimariden bağımsız bilgisayar dilleri geliştirilmeye başlandı. Bu diller Makine kodu ile karşılaştırıldığında yüksek seviyeli diller olarak aklandırıldı. COBOL, BASIC, FORTRAN gibi diller hala farklı sürümleri ile hayattadır.

Derlemek, Yorumlamak

Bilgisayar sadece Makine kodunu çalıştırabilir. Öyleyse yüksek seviyeli dillerle yazılan program kodları Makine konuda dönüştürülmelidir. Derleyici, bir programı tamamen Makine koduna çevirirken yorumlayıcı bu işlemi eş zamanlı olarak yapar.

Bilinen en eski programlama dillerinden birisi de ALGOL dilidir. 1950′li yıllarda uluslar arası bir komite tarafından geliştirildi ve uzun yıllar değişiklikler yapılarak kullanıldı. Hâlâ Pascal, PL/I ve C gibi dillerin temelini oluşturduğu için yaşamını sürdürmektedir.

C Dilinin Serüveni

Bell Laboratuarlarının etkisi olmadan çağdaş dünyayı düşünmek imkansızdır. 1947 yılında transistor orada icat edildi. 1970’lerde UNIX işletim sistemi orada geliştirildi.Uzun yıllar, büyük bir kısmı Dennis Ritchie tarafından geliştirilen C dili, UNIX işletim sistemi ile ilişkilendirilir. C dili tek harfle temsil edildiğinden bu adın nereden geldiği merak edilebilir: İlk olarak CPL (Combined Programming Language) dili vardı. BCPL (Basic CPL) dili daha sonra CPL dilinden esinlenerek geliştirildi. Sonraları BCPL dilinin basitleştirilmiş bir hali olan B dili ortaya çıktı. C dili de bu B dilinden türetildi. C ismi oradan gelir.

ALGOL ve onun türevi olan dillerde, program parçaları BEGIN ve END kelimeleri arasına yazılır. C ise bu işi küme parantezlerini kullanak yapar. C’de yazılmış programların en belirgin farkı hızlı olmalarıdır. Çünkü C işaretçiler dediğimiz, bellek bölgelerine doğrudan erişmeye yarayan yapılara izin verir. Bazıları C’ye yüksek seviyeli assembly dili der. Çünkü C; bit, byte ve bellek düzeyinde çok iyi çalışır.

Aslında bu yaklaşımın tehlikeli tarafı da var. Yüksek seviyeli dillerin derleyicileri program kodları derlenirken programın çökmemesi ve veri kayıplarına neden olmaması için fazladan kodlar eklerler. C derleyicisi ise hızlı program ortaya koyma adına, fazladan kod eklemez. Bu yüzden, dikkatli davranılmadığında hata oluşturmaya daha elverişlidir. Hatasız program olmaz ise de, C’de bu durum daha yaygındır. Hataların çoğunluğu işaretçi kullanmanın yol açtığı hatalardır.

C, hala çok yaygındır ama bazı açılardan tarih olmuştur. Geleneksel prosedürel diller grubuna dahil edilmektedir. Program içerisinde belirli bir işi yapan ya da algoritmayı gerçekleştiren program parçasına prosedür denir. Bir C programı da, bir grup prosedür ya da fonksiyondan oluşur. Fonksiyonlar, devamlı veriler ile çalışır. Prosedürel yapıda bu veriler ile program kodu iç içe bulunur.

Nesne yönelimli programlama terimini çok sık duymaya başladık. Nesne yönelimli programlama dillerinin (OOP) ilki Palo Alto Araştırma Merkezinde (PARC) geliştirilen SmallTalk dilidir. PARC, Microsoft Windows ve Apple Machintosh’ta da kullanılan grafiksel kullanıcı arayüzü kavramlarını geliştiren Xerox tarafından kurulan araştırma laboratuarıdır.

Nesne yönelimli dilde, programcılar prosedürler yerine sınıflar oluştururlar, kodların ve verilerin birleşiminden oluşan nesneler de bu sınıflardan türetilir. Programlamadaki bu bakış açısı değişimi, çeşitli programlama işlerinde tekrar tekrar kullanılabilecek kodlar yazmaya olanağı sağladı.

C dilinin de nesne yönelimli sürümünü yazmak isteyenler oldu. 1980lerin başında Bjarne Stroustrup tarafından Bell laboratuarlarında C++ (Si plas plas okunur) geliştirildi. C++ dilinin adında geçen ++, C dilinde bir sayıya 1 eklemek için kullanılır, yani sayının değeri 1 artar.

C++ dili, C’nin tüm özelliklerine sahip ama nesne yönelimli olması için bir takım ek özellikler katılmış hali diye özetlenebilir. Ama bu yapı biraz hantal bir yapı oldu. Çünkü C’de olan her şeyi destekleme kaygısı ile garip bir notasyon ortaya çıktı.

Bu hantal yapının yanında, baş edilmesi gereken bir sorun daha vardı. Bilgisayar donanımı hızla gelişiyor. Gereğinden fazla hızlı işlemciler ve gereğinden fazla bellek var. Bir program yazılırken dikkat edilen temel kriterler değişti. Eskiden performans ve ekonomik kaynak kullanımı iken şimdilerde yerini daha hızlı ve hatadan arınmış kod yazmaya bıraktı. Bu da alçak seviyeli yapıdan hızla uzaklaşma ve işaretçi kullanımının azalması demekti. Artık programcılar işaretçi kullanmaktan kaçınıyorlar.

1990’larda Sun Microsystems, C++ dilinden daha esnek bir notasyona sahip olan, daha güvenli kod yazmayı olanaklı kılan bir yapı ortaya koydu, yani Java dilini geliştirdi.

C#’ın Doğuşu

Borland firmasından ayrılan Anders Hejlsberg, 20002li yılların başında Microsoft için C# (Si Şarp okunur) dilini geliştirdi. C#’taki diyez işareti (şarp), C++ taki ++ ın 2 tanesinin üst üste koyulmuş halidir.

C# Java gibi, C# da C’nin tehlikeli özelliklerini almadı. Ama işaretçiler C#’tan tamamıyla çıkarılmadı. Java ile C# arasındaki diğer bir benzerlik, derleyicinin rolündedir. Geleneksel olarak, derleyici kaynak kodu (yüksek seviyeli dil metin dosyası) makina koduna çevirir. Makina kodu, bilgisayar tarafından çalıştırılabilir bir formdadır. Bu da Microsoft Windows ile Apple Machintosh üzerinde aynı programın çalıştırılamayacağı anlamına geliyor.

C# derleyicisi, kaynak kodu bir ara dile (IL) çevirir. Program çalıştırılacağında ise IL makina koduna dönüştürülür. Bunu kullanıcı fark etmez. Teorik olarak, bu iki adımlı işlem, aynı IL kodunun farklı makinalarda da çalışabilmesine olanak tanır. Ayrıca IL formundaki bir programda bulunan kötü ve zararlı kod işletim sistemi tarafından kolaylıkla tetkik edilebilir.

C# Dersleri, Dersler kategorisinde yayınlandı. Etiketler: , . » yorum bırak;

C# Dersler…::Ders1::.. .net Framework

Bir çok uygulama geliştirme dili var. Bu dillerle yazılmış uygulamaları çalıştırmak için ise farklı platformlar var. .Net Framework, Windows tabanlı uygulamalar geliştirebilmek için farklı programlama dillerinin birlikte çalışabileceği ortak bir geliştirme ortamıdır. Bu ortam hem yazılımları geliştirmek hem de çalıştırmak için gereklidir.

Şekil: .Net Framework yapısı

. Net Framework aşağıdaki bileşenlerden oluşur

  • The Common Language Runtime (CLR) Ortak Dil Çalışma Zamanı
    Uygulamaların çalışabilmesi ve yönetilmesine yardımcı olan, dilden bağımsız bir yazılım geliştirme ve çalışma ortamdır.
  • The Framework Class Libraries (FCL) Framework sınıf kütüphaneleri
    .Net çatısı altındaki dillerin ortak kullanabilecekleri kütüphaneleri barındırır.

. Net ortamında yazılımlarınızı dilden bağımsız olarak geliştirebilirsiniz. Örneğin C# ‘ta yazılmış kod derlendiğinde, derleyiciden çıkan kod önce MSIL ya da IL’e dönüştürülür. Bu MSIL ya da IL dosyası çalıştırılabilir bir kod değildir.

MSIL ya da IL: İçerisinde değişken tanımları, değişkenlerin nasıl saklanacağı, metotların nasıl çalıştırılacağı, aritmetik ve mantıksal işlemler, bellek kullanımı v.s. gibi işlerin nasıl yapılacağını içeren özel tipte kodlar barındıran bir dosyadır.

CLR: Program çalıştırıldığında aradile(MSIL ya da IL) dönüştürülen kodların, çalıştırılabilir koda dönüştürme işini CLR yapar. CLR kodu alıp bulunduğu makinanın işlemcisine ve işletim sisteminin anlayacağı şekle (makine diline) dönüştürür. IL kodu makine diline dönüştürülürken JIT (just in time) derleyiciler devreye girer. CLR makine diline çevrilmiş kodu önbellekte tutarak, daha hızlı çalışmasını da sağlar.

MSIL ya da IL’e dönüştürülen her kod  CLR’nin uygulandığı her ortamda çalıştırılabilir. Yani  bu da kodun .Net Framework’ün kurulabileceği her platformda çalıştırılabileceği anlamına gelir.

Kodlar Makine Diline dönüştürülecekse niçin Aradile dönüştürülür de direk makine diline dönüştürülmezler?

Bunun cevabı çok basittir aslında. Örneğin C++ ya da Visual Basic dilleri kullanılarak yazılan kodlar derlenirken bulunduğu ortamın özelliklerine göre yani işlemcinin sahip olduğu komut setleri ya da işletim sisteminin özelliklerine göre derlenirler. Bu da derlenen kodun başka bir ortamda yani farklı bir işlemci ya da işletim sisteminde çalışmamasına sebep olur. O zaman her ortam için kodu tekrar derlememiz gerekir. Bu çok zahmetli ve gereksiz bir iştir. CLR aradili(MSIL) alıp o makinanın anlayabileceği şekle dönüştürür, CLR nin çalışabildiği yani .Net Framework’ün kuralabildiği her ortamda yazılımlarınız çalışır olur.

Common Language Specification (CLS / Ortak Dil Özelliği)

Dil derleyicisinin uyması gereken kuralları içerir. Eğer diğer diller tarafından da kullanılacak yazılım bileşenleri geliştirmek istiyorsak mutlaka geliştireceğimiz dilin CLS uyumlu olmasına dikkat etmemiz gerekir. Böylece CLS ile diller arasındaki iletişim sağlanmış olur.

Common Type System (CTS / Ortak Tip Sistemi)

Veri tiplerini ilgilendiren kuralları içerir. CTS sayesinde programlama dilleri arasında veri türleri arasında da uyum sağlanmış olur. Örneğin Int tipi C# da veya VB.Net’te de tamsayı tiplerinin kapasiteleri aynıdır. Ve birinde derlenen kod  diğerinde rahatlıkla kullanılabilir. CTS sayesinde .Net platformu için geliştirilen tüm diller aynı veri tiplerini kullanılır farklı olan sadece dillerdeki veri tiplerinin tanımlanma yöntemleri ve söz dizilimleridir. Ayrıca cts sayesinde .net uyumlu bir dilde geliştirilen bir nesne diğer dillerde de sorunsuz çalışır.

.Net dillerinden biri ile yazılmış bir programın çalışması için mutlaka sisteminizde .Net Framework’ün ilgili sürümü olmalıdır.

.Net Framework SDK (Software Development Kit)

Yazılım geliştiricilerin .Net Framework üzerinde geliştirme yaparken ihtiyaç duyacakları araçlar, dokümanlar ve birçok örnekler .Net Framework SDK içinde yer alır.

Sadece yazılım geliştirenlerin işine yarayan bir araçtır. İçerisinde bol bol örnekler yer alır.

.net Framework Özellikleri

  • Standart ağ protokollerine ve standarlarına destek
    TCP/IP, SOAP, XML, HTTP gibi standart internet protokolleri ve standartlarına destek verir.
  • Farklı programlama dillerine destek
    Programcılara istedikleri dilde geliştirme özgürlüğü sunan .net bünyesinde bir çok programlama dilini barındırır.
  • Farklı dillerde geliştirilen programlama kütüphanelerine destek
    .net Framework, farklı dillerde oluşturulmuş programlama dillerinde oluşturulmuş program kütüphanelerine destek verir. Kütüphaneler uygulama geliştirmeyi kolaylaştıran bir kere yazılmış bir program parçasını tekrar tekrar yazmaktan kurtaran yapılardır.
  • Farklı platformlara destek
    .net Framework bütün windows platformları için mevcuttur. Farklı bilgi işlem platformlarından insanları, sistemleri ve cihazları birbirine bağlar. Meselâ, Windows XP gbi bir masaüstü platformunu kullanan insanlar veya Windows CE kullanan gezgin bir platformu kullanan insanlar Windows 2003 Server gibi bir sunucu sistemine bağlanabilir.

C# ile .Net Framework arasındaki ilişki

.net framework ve geliştirme ortamları C# dili ile geliştirilmiştir. C#, .net ile birlikte doğmuştur, modern nesne yönelimli dillerin bütün özelliklerini barındırmakla birlikte nesne yönelimli geliştirmeye yeni yaklaşımlar da getirmektedir.

C# Dersleri, Dersler kategorisinde yayınlandı. Etiketler: , . » yorum bırak;

Bloğuma Hoşgeldiniz!!!

Yazılım Mühendisliği Nedir?

Bilgisayar yazılımlarının tasarımı, geliştirilmesi, sınanması ve bakımı konularını ele alan mühendislik dalıdır. Diğer mühendislik dallarıyla karşılaştırıldığında çok yeni olan bu alanda sürekli yeni yöntemler geliştirilmekte ve konu yavaş yavaş belli bir olgunluğa ulaşmaktadır. Temel mühendislik prensiplerinin bu dalda da uygulanması, önceden tahmin edilebilir ve yinelenebilir sonuçların daha çok elde edilmesiyle yazılım mühendisliği gerçek bir mühendislik dalı olma yolunda ilerlemektedir.

Bilisim sektörü bir çok ülke ekonomisinde gelismenin motoru rolü oynamaktadır. Ülkemizde bilisim sektörü oldukça zayıftır, Ar-Ge ve üretime dönük degildir ve sektörde önemli bir insangücü açıgı vardır. Bilisim sektörünün en önemli üretim ve dolayısıyla en önemli gelir alanlarından biri yazılım sistemleridir. Günümüzde yazılım sistemleri, bankalar, sigorta kurumları, saglık sektörü, sirket yönetimi, telekomünikasyon sistemleri, otomotiv endüstrisi, kara/hava/deniz tasımacılıgı gibi hemen hemen tüm alanlarda kullanılan bilgisayar sistemlerinin çok önemli ve kritik bir parçasını olusturmaktadır. Yazılım Mühendisligi 1968 yılından bu yana var olan yeni bir mühendislik dalıdır ve yazılım sistemlerinin mühendislik prensipleri çerçevesinde tasarımı, üretimi ve isletilmesini hedefler. Bilgisayar ve yazılım sistemleri artık günlük hayatın her alanında yogun ve etkin bir sekilde kullanılmakta oldugundan, Yazılım Mühendisligi disiplinlerarası uygulamaları olan ve tüm disiplinlerde rol oynayan bir alandır. Yazılım sistemlerinin gelistirilmesinde ve bu yolla ülke ekonomilerine katkı saglamada son yıllarda önemli asamalar kaydetmis ülkeler arasında Hindistan ve �rlanda, önemli asamalar kaydetmeyi hedeflemis ülkeler arasında ise Meksika sayılabilir. Bu ülkelerin yazılım alanında yaptıgı atılımlar incelendiginde, söz konusu atılımların yazılım alanında her seviyede insan gücünün egitimine dayandıgı görülmektedir. Bu egitim seviyeleri, iki yıllık meslek yüksek okulları egitimi, dört yıllık üniversite/yüksek okul lisans egitimi, yüksek lisans ve doktora seviyesinde ihtisas egitimleri olarak tanımlanabilir. Yazılım sistemlerinin gelistirilmesi emek yogun bir istir ve bu alanda basarılı olunması yüksek sayıda ve iyi egitim almıs insan gücünün varlıgına baglıdır. Yazılım alanında insan gücü egitimi, bilgisayar mühendisligi, bilgisayar bilimleri, yazılım mühendisligi, iletisim ve bilgi teknolojileri, bilgi sistemleri, yönetim bilisim sistemleri gibi bilisimin farklı alanlarında dört yıllık lisans egitimi almıs kisilerin yazılım mühendisligi alanında yüksek lisans seviyesinde ihtisaslasması seklinde olabildigi gibi, yazılım alanının disiplinler arası özelliklerinden dolayı, elektrik, makina, insaat gibi diger mühendislik alanlarında, fizik, kimya, matematik, biyoloji, jeoloji, psikoloji, sosyoloji gibi temel bilim alanlarında, özet olarak bilisim alanlarından farklı alanlarda dört yıllık lisans egitimi almıs olan kisilerin yazılım mühendisligi alanında egitilmesi seklinde de gerçeklestirilebilmektedir. Gerek Türkiye’de gerek diger ülkelerde, yazılım sistemlerinin gelistirilmesinde rol oynayan insan gücü arztalep farklılıgından dolayı pek çok üniversite mezunu yazılım alanında çalısmak istemektedir.

Sistem mühendisliği

Sistem mühendisliği, karmaşık sistemlerin ya da bu sistemleri oluşturan alt sistemlerin tasarımını, üretimini ve bakımını, zaman ve maliyet kısıtlarını da göz önünde bulundurarak, gerçekleştirmek amacını taşır. Günümüz dünyasında, karmaşık sistemler genellikle teknik, biyolojik, sosyolojik, çevresel endüstriyel, politik, finansal ve ekonomik sistemlerden en az birkaçının bir bileşkesi olarak karşımıza çıkmaktadır. Sistem mühendisliği programları, işlevsel olarak tek ve bütün bir birim olan bu karışık sistemlerin analizi için gerekli tüm temel kavram, araç ve metotları öğrenciye sunar. Farklı disiplinlerden çeşitli yöntemleri bir arada kullanabilen sistem mühendisliği programlarını en temel araçlarından bir tanesi de bilgisayarlardır. Sistem mühendisleri çok farklı alanlarda faaliyet gösteren kurumlar içinde oldukça farklı birim ve kademelerde (üretim, planlama, kontrol, yönetim gibi) görev alabilirler.

Web grafik tasarımı

Web grafik tasarımı, grafik tasarım alanı ile yakın ilişkili bir konu olarak ele alınabilir ama kendi içerisinde ayrı bir dal olarak çok geniş bir alanı işgal etmektedir. Klasik anlamda kara kalemle başlayan tasarım alanından farklı olarak web tasarımcısının bilgisayar ve web dünyası hakkında geniş bir bilgi dağarcığına sahip olmasını da gerektirir. Bu yanı ile klasik sanat anlayışından ayrılarak teknolojik bir hızlı tüketim yardımcısı haline gelmektedir. Henüz standartlaşmamış olmakla birlikte kendi kurallarını içinde barındırır.

 

Web standartları

Web standartları, değişik web cihazlarının, web içinde sunulan bilgileri ayni şekilde kullanıcıya göstermesine yardim eden bir takım teknolojileri toplamına verilen isim. Web standartları sayesinde, sunulan bilgi, herkes tarafından erişebilir hale geliyor.

Web dünyasının ana dilleri HTML (Hypertext Markup Language) ve CSS (Cascading StyleSheets). Bu standartlar web tasarımcılarına bir sayfanın nasıl kodlanması gerektiğini göstermenin yani sıra İnternet tarayıcılarına bir sayfanın kullanıcıya nasıl görünmesi gerektiğini söyleyen bir takım kuralları içinde barındırıyor.

World Wide Web Consortium (W3C), Web ile ilgili tüm alanlarda araştırmaları yöneten ve standartları geliştiren ticari kurumlar ve eğitim kurumlarının konsorsiyumudur.

www.sitehazirla.com internet sitesinde web standartları hakkında daha fazla bilgi alabilirsiniz…

Ana kurallar

Erişebilirlik

Web standartları, bazı erişebilirlik kurallarını içerdiğinden, web standartlarını uygulayan bir sayfa, erişebilirlik yolunda büyük bir adım atmış olacaktır. www.aydinwebs.com Arkadaşlar Web Tasarımında Erişile Bilirlik Çok Önemlidir Bundan Dolayı Bir Seo Danışmanından Yardım Almanızdır Seo Danışmanlık Hizmeti İçin www.aydinwebs.com adresine bağlanarak istdiğiniz bilgiye sahip olabilirsiniz

Ulaşılabilirlik

Eğer sunum ve bilgiyi, yeni geliştirilen CSS kuralları ile ayırırsanız, sunulan bilgi, herkese ve her cihaza ulaşabilecektir. Kullanıcı, yepyeni bir bilgisayar ya da cep telefonu tarayıcısı ayni bilgiye sorunsuz bir şekilde ulaşabilecektir.

Hızlı yüklenme

CSS ile yapılan bir sayfa ile tablo ile yapılmış bir sayfa arasındaki boyut farkı yüzde 25 ile 50 arasında değişmektedir. Hızlı olduğunu düşündüğünüz bir web ana sayfasını bilgisayarınıza keydedin ve boyutuna bakarsanız daha iyi anlayacaksınız. Eğer Jakob Nielsen‘e inanan birisi iseniz, Jakob’un yaptığı bir araştırmaya göre kullanıcı bir sayfanın yüklenmesini 20 saniyeden daha fazla beklemiyor. Bakın demişki; bu bir izdüşümdür. Ele alınması şiddetle önerilir ve tartışılır.

Düşük bant genişliği kullanımı

Sayfalarınızı barındıran şirket, kullandığınız band genişliğine orantılı olarak aylık para alır. Eğer web standartları ile hazırlamış olduğunuz sayfaların boyutu küçük ise, web sitenizde daha düşük bir band genişliği kullanacak ve bu size ya da müşterinize para tasarrufu sağlayacaktır.

Arama motorlarında sıralama

Arama motorlarının mantığını bilmeniz gerekir. Örneğin google süper olduğunu düşündüğünüz flash sitenizin içerisinde sadece text tabanlı arama yaparak indekslemeye çalışacaktır. Flash tasarım içerisinde text okunamadığından sayfalarınız google tarafından dikkate alınmayacaktır. Fakat flash kullanılan bir web tasarımın html kodunun içindeki meta tag ve keywordslerini girerseniz sadece bunlar göz önünde bulundurulacaktır. Küçük bir ip ucu olarak ; illa flah intro kullanmanız gerekiyor ise meta tag ve keywordslerinizi yazdıktan sonra flash dışından main page e bir giriş linki verin bu arama motorlarının spiderlarının sitenizin içine girmesine imkân sağlayacaktır.

Bakım kolaylığı

Bilgi ve sunumun ayrılması sayesinde eğer site içinde, sitenin tümünü etkileyecek bir değişlik yapılması gerektiğinde, CSS dosyası üzerinde değişiklik yapılması, tüm siteyi etkileyecektir. Bu şekilde her bir sayfayı tek tek düzenleyeceğinize tek bir değişiklikle sorunun üstesinden gelebileceksiniz.

Hukuksal sorumluluk

Birçok ülkede engelli İnternet kullanıcıları için kanunlar çıkartılmış durumdadır. Uyacağınız kurallar hukuksal sorunlarla karşılaşmanızı da engeller.

Dış bağlantılar

Haber kategorisinde yayınlandı. 1 Yorum »

Java Script Ders 1

Javascript’le Tanışalım

      Javascript, HTML’in bir parçasıdır ve içinde bulunduğu HTML ile birlikte Web Browser programı tarafından yorumlanır. Dolayısıyla, Javascript programı yazmak demek, bir Web sayfası hazırlamak ve bu sayfadaki HTML kodlarının arasına Javascript kodları gömmek demektir.

      İlk Javascript programımızı yazalım. Şu kodu yazıp, merhaba1.htm adıyla kaydedin:

<HTML>
<HEAD>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
<TITLE>Merhaba Dünya!</TITLE>
</HEAD>
<BODY>
<B>Merhaba Dünya</B><br>
<FORM>
<BUTTON onclick=”alert(‘Merhaba Dünya!’)”>TIKLAYINI!</BUTTON>
</FORM>
</BODY>
</HTML>

Sonra ya bu dosyayı iki kere tıklayın; ya da favori Browser programınızı çalıştırın ve bu dosyayı açın. Karşınıza çıkacak düğmeyi tıklayın. İşte sonuç:

Bütün Web sayfaları gibi, Javascript kodunuzun yer aldığı sayfa da tipik bir HTML kod kümesi:

1. Browser programına kendisinin bir HTML dosyası olduğunu birinci satırda beyan ediyor; ve bittiği yer açıkça gösteriliyor.
2. HTML kodu iki bölüm içeriyor: Başlık (Head) ve gövde (Body) bölümleri. Her bölümün nerede başladığı ve nerede bittiği açıkça belirtiliyor.
3. Gövde bölümünde bir Form unsuruna yer veriliyor; fakat bu formun tek ögesi var: Düğme (Button).
4. Daha önce Web sayfalarınıza düğme koyduysanız, bu düğmenin onlardan farklı bir tarafı var: Türü, değeri, vs. belirtilmiyor; sadece “onclick=”alert(‘Merhaba Dünya!’)” şeklinde bir ifadeye yer veriliyor.
5. Ve ilk Javascript programınızda ne Javascript’in adı geçiyor; ne de HTML ile Javascript bölümlerini birbirinden ayırteden, <SCRIPT>..</SCRIPT> etiketine yer veriliyor!

Javascript’te imla kuralları olmakla birlikte bu kurallara yüzde 100 uymanın zorunlu olmadığını ifade ettik. Kural olarak, Javascript bölümü, HTML’in içine <SCRIPT>..</SCRIPT> etiketlerinin arasına gömülür. İşte size bütün kuralları yerine getirilmiş bir Javascript bölümü yazma örneği:

<HTML>
<HEAD>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
<TITLE>Merhaba Dünya!</TITLE>
<SCRIPT LANGUAGE=”Javascript1.2”>
<!–Javascript kodunu eski sürüm Browserlardan gizleyelim
function merhaba() //merhaba isimli fonksiyonu deklare ediyoruz
{ //bu, fonksiyonun başlama işareti
alert (“Merhaba Dünya!”) //fonksiyonun komutu ve komutun gerektirdiği metin
} //bu fonksiyonun bitme işareti
// kod gizlemenin sonu –>
</HEAD>
<BODY>
<B>Merhaba Dünya</B><br>
<FORM>
<BUTTON onclick=merhaba()>TIKLAYINI!</BUTTON>
</FORM>
</BODY>
<HTML>

Bu metni merhaba2.htm adıyla kaydeder ve Browser’ınızda açarsanız, görüntünün ve işlevin tıpatıp aynı olduğunu göreceksiniz. İki metin arasındaki fark, ikincisinin Javascript yazma kurallarına yüzde 100 uymasından ibaret. Bununla birlikte Javascript ile HTML’i birbirinden dikkatlice ayırmanız gereken durumlar, ikisinin birbiriyle kaynaştığı noktalardan daha çoktur. Hatta o kadar ki, Javascript’in ileri sürümüne ilişkin komutlar kullanıyorsanız, eski sürüm Browser’ların kafasının karışmaması ve dolayısıyla ziyaretçinizin bilgisayarının kilitlenmemesi için bunu bile belirtmeniz gereken durumlar olabilir.

Bir de şunu deneyin: önce merhaba.js adıyla şu metni kaydedin:

function merhaba()
{
alert(“Merhaba, Dünya!”)
}

Sonra, merhaba2.htm dosyasında şu değişikliği yapın ve merhaba3.htm adıyla kaydedin:

<HTML>
<HEAD>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″>
<TITLE>Merhaba Dünya!</TITLE>
<SCRIPT SRC=”merhaba.js” LANGUAGE=”JavaScript”>
</SCRIPT>
</HEAD>
<BODY>
<B>Merhaba Dünya</B><br>
<FORM>
<INPUT TYPE=”SUBMIT” NAME=”BUTTON1″ VALUE=”TIKLAYIN!” onclick=”merhaba()”>
</FORM>
</BODY>
</HTML>

Ve merhaba3.htm’i açtığınızda yine aynı görüntü ve aynı işlevle karşılaştığınızı göreceksiniz. Bu üçüncü yöntemde sadece Javascript kodlarını içeren ve dosya adının uzatması “.js” olan bir düzyazı dosyasını HTML’e dışardan da eklemiş olduk.

Dersler, Java Script kategorisinde yayınlandı. Etiketler: , , , . » yorum bırak;
Follow

Get every new post delivered to your Inbox.