class IlkKod { public static void main() { Console.WriteLine("Bir Sonraki Yazida Gorusmek Uzere"); } } C YE GİRİŞ (1)

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "www.muhendisiz.net class IlkKod { public static void main() { Console.WriteLine("Bir Sonraki Yazida Gorusmek Uzere"); } } C YE GİRİŞ (1)"

Transkript

1 C YE GİRİŞ (1) C# Bölümünden herkese merhaba. Bundan böyle düzenli olarak bu bölümde temelden başlamak suretiyle C# ile ilgili bilgiler vermeye çalışacağım. Amacımız belli bir konu sırası ile mümkün olduğunca sık güncelleyerek bu bölümü size aktif olarak sunabilmek. Her neyse lafı daha fazla uzatmadan ilk makalemize başlıyalım. Yazılım teknolojilerini takip edenler eminim C# ismini uzun bir süre önce duymaya başlamışlardır. Peki nedir bu C#? Microsoft'un geliştirdiği ve yine Microsoft'a göre Windows İşletim sisteminden sonra BT sektöründeki en büyük gelişme olan ve yatırımlarının %80' nini bu çalışmalara ayırdığı.net 'in bir parçası. Yada şöyle diyelim..net'in resmi dili. Dinamik sayfalar ile birlikte internet üzerindeki web siteleri programlanabilir ekranlar halini aldı. Bu sayfaları asp,php gibi bir takım dillerle hazırlıyabiliyorduk. Özellikle JAVA ile birlikte daha kompleks, daha ciddi servisler hazırlanabilir hale gelmişti. İşte bu noktada Microsoft tarafında.net Framework Beta Piyasaya sürüldü. (Şu anda benim kullandığım Beta2 versiyonu) Farklı modüllerden meydana gelen bu ürünün bir parçasınıda C# oluşturdu. C# haricinde Visual Studio.NET aracılığı ile, gelişmiş başka diller ilede bu servisler geliştirilebilir. Örneğin Dünya üzerinde en çok bilindiği ve kullanıldığı söylenen VBasic yada çok güçlü bir dil olan C++. Peki madem öyleyse niye C#. Nedeni şu; C#.NET Framework ile sıfırdan yaratılmış bir dil. Dolayısıyla.Net'in bütün özellikleri ile uyumlu çalışabiliyor. Ayrıca tam anlamıyla Object Oriented bir dil. Nesneye yönelik programlamanın getirdiği bütün avantajları bünyesinde barındırıyor. Temelde Syntax'ı Java'ya çok benziyor. C++ ve Java ile uğraşanların bu dile kolayca adapte olacağını düşünüyorum. Ben bu sayfalarda hazırladığım kodları Visual Studio.NET' ile hazırlıyorum. Eğer sizin böyle bir imkanınız yok ise Microsoft'un sitesinden Framework SDK yı indirerek(yanlız yanılmıyorsam 110 MB civarı.) bu uygulamaları gerçekleştirebilirsiniz. C# ile ilgili bu kısa ön bilginin üzerine yine kısa bir kod ile bu makalemize burada son verelim. class IlkKod public static void main() Console.WriteLine("Bir Sonraki Yazida Gorusmek Uzere");

2 Boran 1

3 C DEĞİŞKEN VE METHOD TANIMLARI (2) Bu makalemizde C#' ta değişken ve method tanımlama işlemleri üzerinde duracağız. Değişken tiplerini tanıyıp kullanım şekillerine baktıktan sonra Method tanımlama yöntemlerini inceleyeceğiz. Ardından değişkenlerin kullanım yerlerine göre oluşturduğu farklılıkları inceleyerek yazımıza son vereceğiz. DEĞİŞKEN TANIMLAMA -Aşağıdaki satırda integer tipte bir değişken tanımlanıyor ve değişkenin adı belirtiliyor. -İkinci satırda ise tip ve değişkenin ardından initializasyon işlemi gerçekleştiriliyor. int i; //Değişken Tipi ve Değişkenin Adı veya int i=0; //Değişken Tipi - Değişkenin Adı - Değeri -Aynı işlem string tipte bir değişken içinde tekrarlanabilir. string ad; //Değişken Tipi ve Değişkenin Adı string ad="ahmet"; //Değişken Tipi - Değişkenin Adı - Değeri Burada bir hatırlatma C#' ta büyük küçük harf ayrımı vardır. Yani; string ad; ile string Ad; farklı değişkenlerdir. Ayrıca her satırdan sonra (Method ve Koşul tanımlanan satırlar hariç) noktalı virgül konulmalıdır. Şimdide bazı değişken tiplerinin özelliklerine bir bakalım. Tipi Uzunluğu Boyutu Byte Bit integer Char - 16 Bit character Double digits Float - 7 digits int ile arasında 32 Bit integer long ile 64 Bit integer short ile arasında 16 Bit integer METHOD TANIMLAMA İşe bir önceki makalede yazdığımız örnekle başlıyalım. class IlkKod public static void main() Console.WriteLine("Bir Sonraki Yazida Gorusmek Uzere");

4 Boran 2

5 public static void main() satırına bakacak olursak. Burada bir method tanımlama söz konusu. Yanlız bu main() isimli özel bir method. Tıpkı C ve JAVA' da olduğu gibi. Biraz açıklayacak olursak eğer her hangi bir uygulamada main() isimli bir method varsa ilk önce o icra edilir. Yani uygulama ilk önce bu method içindeki işlemleri yaparak çalışmaya başlar. class Test public static void main() Console.WriteLine("Bir Sonraki Yazida Gorusmek Uzere"); public void EkranaBas() Console.WriteLine("Bu Mesajı Göremiyeceksiniz.") Bu yeni kodumuzda ise, Test isimli class' ımıza EkranaBas() isimli yeni bir method ekledik. Bu method içinde, ekranda göstermesi amacıyla Console.WriteLine özelliğini kullanarak bir mesaj yazdık.yanlız bu mesajın içeriğine dikkat ederseniz mesajın ekrana basılmayacağını görebilirsiniz. Bunun nedeni methodun çağırılmaması. Bu kod icra edildiğinde sadece main methodu içinde belirtilen mesaj ekrana basılacaktır. Şimdi Yukarıdaki kodu biraz daha genişletelim. class Test public static void main() Console.WriteLine("Bir Sonraki Yazida Gorusmek Uzere"); Test baglan = new Test(); baglan.ekranabas(); public void EkranaBas() Console.WriteLine("Mesajı Artık Görebilirsiniz.") private void Deneme() Console.WriteLine("AspNedir.com") Evet new keyword'u aracılığı ile Test class'ına ait bir baglan nesnesi oluşturduk ve EkranaBas() methodunu çağırdık. Yanlız burada Deneme() isimli bir method daha var. EkranaBas ile Deneme isimli iki method'a biraz dikkat edicek olursak tanımlama esnasında farklılıklarının olduğunu görebiliriz. EkranaBas methodu public ile başlarken Deneme methodu private ile başlıyor. Aradaki fark: PUBLIC: public ile başlıyan methodlar dışarıdan (yani başka bir class'ın içinden) çağırılabilir. PRIVATE: private ile başlıyan methodlar ise sadece bulunduğu class içinde çağırılabilir. Eğer bu iki kavram kafanızı karıştırdıysa çok üzerinde durmayın. Bir sonraki makalede

6 Boran 3

7 daha ayrıntılı bir şekilde açıklamaya çalışacağım. Şimdi birazda değişkenlerin method lar içinde nasıl kullanıldıklarına ve nasıl sonuçlar verdiklerine bakalım. class Test string yer="class değişkeni"; public static void main() string yer="method değişkeni"; Console.WriteLine(yer); Test baglan = new Test(); baglan.ekranabas(); public void EkranaBas() Console.WriteLine(yer); Bu uygulamada yer değişkeni string tipinde olup iki farklı yerde tanımlanarak yine iki farklı yerde içeriği ekrana basılmaktadır. Şimdi; method içinde tanımlanan değişken sadece o method içinde geçerlidir. Yani main methodu içindeki mesajda ekrana Method Değişkeni yazılacaktır. Ancak EkranaBas() method'unda ise ekrana Class Değişkeni mesajı çıkacaktır.bunun nedeni EkranaBas methodu içinde yer diye bir değişken tanımlı olmadığı için derleyici bu değişkeni gidip class'ın altında arıyacaktır. Bu yazımızda yukarıdaki sorulara cevap arıyacağız. Konuyu kavrıyabilmeniz açısından bir önceki makaleyi ("C#'da Değişken ve Method Tanımlamak") okumanızı tavsiye ederim. FONKSİYONLAR (3) class AspNedir public static void main() AspNedir baglan = new AspNedir();//baglan nesnesi oluşturuluyor. int donendeger = baglan.carp();//baglan nesnesi aracılığı ile Carp Fonksiyonu çağırılıyor. Console.WriteLine(donendeger);//Sonuç ekrana Basılıyor public int Carp() int sayi1 = 2; int sayi2 = 7; int sonuc = sayi1*sayi2; return sonuc;//sonuc değişkeninin içeriği kendisini çağırana döndürülüyor.

8 Boran 4

9 İlk fonksiyon örneğimizi bitirdik. Şimdi kodumuzu bir inceleyelim. Carp() isimli fonksiyon, public ve integer tipte. Yani bu fonksiyon dışarıdan çağırılabilir ve kendisini çağıran Method yada Fonksiyona integer tipinde bir değer döndürür. Bu döndürme işleminide return ifadesiyle yaparız. Bu örneğe göre fonksiyonun kısa bir tanımını yapacak olursak. Fonksiyon: Eğer yazdığımız kod bloğu geriye bir değer döndürüyorsa fonksiyondur. Döndürmüyor ise fonksiyon değil Method' dur. class AspNedir public static void main() AspNedir baglan = new AspNedir(); int donendeger = baglan.carp(3,7); Console.WriteLine(donendeger); public int Carp(int sayi1, int sayi2) int sonuc = sayi1*sayi2; return sonuc; Yukarıdaki örnekte görüldüğü gibi dilersek bir Fonksiyona dışarıdan değer gönderip, bu değerleri işlemesini sağlıyabiliriz. ARRAY'LER class AspNedir public static void main() int[] myarray=1,2,3; Console.WriteLine(myArray[0]); Console.WriteLine(myArray[1]); Console.WriteLine(myArray[2]); Yukarıdaki örnekte integer tipte bir dizi tanımlayarak değer atamalarını yaptım. Aşağıdaki örnekte ise bu sefer iki boyutlu olan yine integer tipte bir array tanımladım ve For döngüsünü kullanarak dizinin değerlerini atadım. using System; public class Merhaba int[,] myarray; // İki boyutlu bir dizi tanımladık. public static void Main() Merhaba baglan = new Merhaba();

10 Boran 5

11 baglan.ekranabas(); public void EkranaBas() myarray = new int[3,3]; // Dizinin Sınırlarını Belirledik // For döngüleri ile dizi elemanlarının içeriğini girip ekrana basıyoruz. for(int i=0 ; i<=3 ; i++) for(int j=0 ; j<=i ; j++) myarray[i,j] = i+j; Console.WriteLine("myArray[0,1]= 2",i,j,myArray[i,j]); Dilersek bir dizinin sınırlarını dinamik olarakta belirliyebiliriz. Tek yapmamız gereken dizinin sınırlarının oluşturulduğu fonksiyon tarafından dışarıdan değer olarak almasını sağlamak. public void EkranaBas(int row, int col) myarray = new int[row,col]; for(int i=0 ; i<=row ; i++) for(int j=0 ; j<=col ; j++) myarray[i,j] = i+j; Console.WriteLine("myArray[0,1]= 2",i,j,myArray[i,j]); Evet bu makalemizde fonksiyon ve array'leri inceledik. Bir daha ki makalemizde C# Statement'larını inceleyeceğiz. Aslında bu ifadelerden biri olan For Statement'ını bu makalemizde gördük sayılır.

12 Boran 6

13 C# C SHARP A GENEL BAKIS C# Windows uygulamaları geliştirmek için C++ ve Visual Basic programlama dillerine alternatif olarak Visual Studio.NET ile birlikte gündeme gelen bir uygulama geliştime dilidir. C#, bize Visual Studio da yalnızca C++ ile erişebildiğimiz yerlere ulaşabilmemizin yanısıra Visual Basic kadar kolay bir kullanım sağlar. Özellikle.NET için geliştirildiğinden.net kod yapısına en uygun dil olarak bakabiliriz C# a. Bu nedenle C#,.NET framework ünü daha kolay ve daha etkin kullanır. Orta seviye bir programla dili olması ise Visual Basic ve C++ ın en iyi özelliklerini içermesini ve tam bir OOP (Object Oriented Programming) ortamı sunmasını sağlar. C# ı.net framework ünden ayrı olarak incelemek yerine bütünün bir parçası olarak ele almak gerekir. Çünkü.NET ile geliştirilen CLR (Common Language Runtime JVM[Java Virtual Machine] e benzeyen ve birbirinden farklı dillerin IL(Intermediate Language) e compile edilerek oratak çalışmasını sağlayan yapı olarak tanımlayabiliriz),.net kodlarının ortak çalışmasına izin vermektedir. Bu şu anlama gelir ister C#, ister C++, ister Visual Basic, uygulamamızı hangi platformda yazarsak yazalım çatımız hep aynıdır..net, genel amaçlı yazılmış windows platformu programlarında bir devrimdir..net in sağladığı birçok avantaj vardır; kullanımı kolay nesne modellemesi, Garbage Collection ı sayesinde yaratılan kaynakların otomatik olarak temizlenmesi, SQL ve ADO spesifik Data Access, ASP.NET sayfalarının oluşturulmasına yarayan geliştirilmiş library ler ve bunlar gibi birçok yapı. Ancak; her ortam için o ortamın özelliklerine ulaşmak elbette belirli mekanizmalar gerektirir. Örnek verecek olursak Windows, C ve C++ da yazılmış bir dil olduğundan yönetim yine C,C++ kodundan ulaşabildiğimiz Windows API ile sağlanır (Bu, Visual Basic in Windows API nin bütün özelliklerine kolay erişim sağlayamamasının nedenidir). C# ın gerçek faydası burada ön plana çıkmaktadır, C#.NET framework ü için sıfırdan başlanarak tasarlanmış ve bu dilin yazım ve dil özellikleri.net in sunduğu kolaylıklardan basit bir şekilde yararlanabilmesi için geliştirilmiştir. Bir örnek verecek olursak; System.String.NET class library sinde bir class tır ve case convertion ları, substring lerin ayıklanması ve string ifadelerin trim lenmesi gibi bir çok method a sahiptir. C# compiler ı bu class ı otomatik olarak tanıyan kendi string keyword üne sahiptir.

14 Boran 7

15 string MyStr1= Visual ; string MyStr2= Studio ; string MyStr3=.net ; string MyStr4=MyStr1+ +MyStr2+ +MyStr3; MyStr4.ToUpper(); //Sonuç olarak MyStr4 e VISUAL STUDIO.NET değeri atanır..net framework ü, kullanılan kaynakları boşaltmakta çok başarılıdır. Bu başarının sırrı ise managed code içerisindeki değişkenlerin stack yerine managed heap de tutulmasıdır. C# bu gibi işlemleri bizim yerimize otomatik olarak yapmaktadır. Tabiiki.NET platformunda Managed C++ ve VB.NET de aynı özelliklerden C# gibi faydalanabilmektedir. Bu yapının sağlanabilmesi ise Visual Basic ve C++ ın yapısında gerçekleştirilen bir takım değişikliklerle mümkün olmuştur. Bu da Visual Basic ve C++ açısından bakıldığında bir upgrade anlamına gelmektedir. Yapıları ne kadar upgrade edildiyse de yeni bir platform için VB ve C ye geçmişten gelen yazılım geliştirme dilleri olarak bakmak yerinde olacaktır. Bu iki dil bu anlamda.net platformunda yazılım geliştirirken geçmişten gelen alışkanlık ve syntax yapıları yüzünden tam anlamıyla.net için dizayn edilmemişlerdir; bu da yazılım geliştirirken C# a göre bu yazılım geliştirme dillerini dezavantajlı hale getirir. Hatta bu yüzden VB.NET syntax ının hala tam anlamıyla Object Oriented Programming e göre dizayn edilmediği tartışmasını ortaya çıkarmıştır. C# ise karşımıza tertemiz bir defter yaprağı gibi çıkmaktadır. Bunun nedeni ise Microsoft un C# ı tam anlamıyla.net çizgisine göre geliştirmiş olmasıdır. Object Oriented Programming için gerekli syntax dizaynı ve program yazmayı kolaylaştıran yapısı C# ı.net framework ünde çalışmak için mükemmel bir dil haline getirmiştir. C# tam anlamıyla bir Object Oriented Programming dilidir. Bu özellik ise sadece C# ın taşıdığı bir özellik değil tabiiki. C++ ta Object Oriented Programming yapısına sahiptir hatta VB bile Object Oriented olarak tanımlanmıştır. Buna rağmen C++ ve VB açısından olaya yaklaştığımızda birtakım problemlerle karşılarız. C++ ı ele aldığımızda karşımıza tam anlamıyla Object Oriented Programming için geliştirilmiş ve dizayn edilmiş bir programlama dili çıkar ancak geliştirildiği zamanlarda Object Oriented Programming yapısında kodun yeniden kullanımı gibi bir düşünce yoktu. Klasik C++ kodu bütün dilleri desteklemez ve klasik C++ ın çalışabilmesi için, inherit edeceğiniz class ın orijinal source undan class header larına ulaşmanız gerekmektedir.

16 Boran 8

17 Daha sonraları COM sayesinde dil uyumluluğu sağlandı ve programlama dilleri (VB,VJ++,C ve C++) çok basit bir şekilde COM objesi olarak yazılan classlara ulaşabildiler. Ancak COM öğrenmesi çok zor bir yapı olması dezavantajını hep taşıdı ve tam anlamıyla klasik Object Oriented Programlama yolunda inheritence ı destekleyemedi. Diğer bir yandan VB COM yazma platformu sağlayan ve COM un karmaşık yapısını uygulama geliştirenlerden gizleyen bir yapıya sahiptir. Ancak çoğu Object Oriented Programming uzmanının da söylediği gibi VB gerçek anlamda OOP modeline sahip değildir çünkü inheritence ı desteklemez. C# ise her iki dünyanın avantajlarını bize sunmaktadır. Tam anlamıyla inheritence ı destekler fakat bunun yanısıra.net framework ü source dosyalarımıza ulaşmadan inheritence sağlayabilmek için compile edilmiş durumda bulunan library dosyalarını (assembly) sağlar. Bu sayede.netprogramcılık tarihinde ilk kez programlama dilleri arasında çapraz geçişlere izin veren ve gerçek anlamda bir yeniden kullanım olanağı sağlayan bir platform olmuştur. Inheritence bir class ın içerisinde başka class ları base almamızı sağlayan Object Oriented Programming modelin bir özelliğidir. Örneğin standart olarak kullandığınız bir menu,toolbar ve statusbar yapısı var, bir form üzerinde ilgili standartlarınızı yerleştirdiniz, başka bir formda da aynı özellikleri kullanmak istediğinizde tek yapmanız gereken oluşturduğunuz ilk formu base almak ve yeni formunuza inherit etmek. Yeni formunuz inherit ettiğiniz formun bütün özelliklerini içeren yeni bir form olarak karşımıza çıkacaktır. Development tarafından baktığımızda bu işlem bize zaman kazandıran ve yeniden kullanım imkanı sağlayan bir yapıdır. C# orta seviye bir programlama dilidir. Bir sıralama yapacak olursak C# ın bu sıralamadaki yeri aşağıdaki gibi olacaktır. Assembly o C,C++ C#,J++ Visual Basic o VBA, Scripting Dilleri

18 Boran 9

19 Listemizde yukarıdan aşağıya doğru inecek olursak aşağıya indikçe dillerin öğrenimi kolaylaşır.daha az kod yazarak ve daha az zaman harcayarak istediğimiz projeleri gerçekleştirebiliriz. Assembly ile yazılım geliştiriyorsak hiç alışık olmadığımız bir performansla karşılaşırız ancak assembly öğrenmesi, yazılım geliştirmesi en zor platformlardan birisidir. Bu nedenle assembly dili ile yazılmış programlar genellikle çok yüksek performansın ön planda olması gereken bazı device driver lar, oyun subroutine leri ve işletim sistemlerinin temel dosyalarıdır (win.com gibi). C++ ise GUI (Graphical User Interface) geliştirmek için tercih edilmesi gereken bir dildir. Eğer daha basit bir şekilde GUI ler geliştirmek istiyorsak tercihimiz tabiiki Visual Basic olmalıdır. GUI lerde performans ön planda değildir çünkü burada limit faktörü kullanıcıdadır yani kullanıcının mouse ı hızlı tıklamasındadır!.. C#, Visual Basic ile C++ arasında bulunan boşluğu gidermek için dizayn edilmiştir. C#, C++ ile yazılabilen ve yazılırken C++ kadar zor olmayan aynı zamanda Visual Basic ten daha yüksekte program yazmak isteyen yazılımcıları hedef almıştır. C++ ve VB arasındaki boşluğu dolduran ve pek tatmin edici olmayan J++ bu durumuna rağmen C# ile birçok yönden benzerlik göstemektedir. C#, C++ ın syntax ına çok benzeyen bir syntax a sahiptir ve C++ ın birçok özelliğini destekler örneğin inheritence (multiple olmamasına rağmen). Bu nedenle C++ programcıları C# ı çok kolay bir şekilde öğrenebileceklerdir. Visual Basic programcıları kendilerini yepyeni bir syntax ve birçok object oriented kavramı ile karşı karşıya bulacaklardır ancak C# ı öğrenmek, C++ ı öğrenmekten çok daha kolaydır. C# ın C++ ve Visual Basic arasında bir dil olduğuna iyi bir örnek olarak memory management gösterilebilir. Visual Basic deki tek memory management şudur: nesnelerle işiniz bittiğinde set nesne=nothing demeniz yeterlidir, bunu yapmayı unutursanız olacak tek kötü şey sistem kaynakları ve memory nin gerektiğinden biraz daha uzun bir süre kullanılması olacaktır. Diğer taraftan, C++ developer lara hangi değişkenin hafızada ne kadar kalacağının ayarını yapma imkanı vermek ve böylelikle hafızanın daha etkin kullanımını sağlamakla kalmaz, bunu nerdeyse zorunlu kılar. C++ da yazılmış programların memory management bug larına maruz kalmaları ve hafızada kayıplara yol açması Visual Basic de gerçekleşmez. C# memory management ta Visual Basic in yolunu izler, yani sorumluluk dilin kendisindedir. Ancak VB nin aksine C# da memory yi kendiniz sınıflandırmak isterseniz yazdığınız kodun bir bölümünü unsafe olarak belirtebilir ve sonra da C++ da olduğu gibi Memory için yer ayırıp daha sonra bu kısmı boşaltabilirsiniz.

20 Boran 10

21 Şu ana kadar bahsettiklerimizi değerlendirecek olursak Microsoft un.net platformuna uygun olarak ürettiği C# a Visual Basic yada C++ dilleri ile uygulama geliştiren developerların aynı çatı altında toplanacağı bir yapı olarak bakabiliriz. Daha az zaman harcayarak, daha az kod yazarak daha güçlü applikasyonlar geliştirmek için C# mükemmel bir platform gibi gözüküyor. C# ile tanışmak ve çalışmak gerçekten heyecan verici. İyi ki doğdun C#. Temel Programlama ve C# (1) Value Tipleri ve Tanımlanması Value tipleri için C#, C ve C++ programcılarının seveceği bir tanımlama syntax ına sahiptir. Anlaşırlılık sağlamak amacıyla her tanımlama için bir statement kullanılabilir veya alternatif olarak aynı anda birden fazla tanımlama yapılabilir. int i; // Basit Tanımlama // Bileşik tanımlama int i,j,k; Tek yada bileşik tanımlamalar sırasında değişkenlere başlangıç değerleri de atanabilir. // Basit bir tanımalama ve initializasyon int i=5; //Bileşik bir tanımlama ve initializasyon int x=3,y=8,z=-1; C# aynı zamanda C ve C++ gibi for ve loop döngülerinin başlangıcında değişken tanımlama ve initializasyona izin verir. for (int j=0;j<5;j++) C# memory buglarını önlemek amacıyla tanımladığınız değişkenin bir değer atamasına tabi tutulup tutulmadığını compile sırasında inceler. Bu işlem sayesinde atanan bu değerin işletim sistemi tarafından programınızın akışı sırasında memoryden release edilmesi engellenmiş olur.

22 Boran 11

23 using System; public class ForcedInit public static int Main() int k; Console.WriteLine(k); return 0; Yukarıdaki kodu compile ettiğimizde bir compiler hatası ile karşılarız: use unassigned local variable k. Programı hatasız bir şekilde derleyebilmek için k değişkenini initializasyona tabi tutmamız gerekir. using System; public class ForcedInit public static int Main() int k=0; //k değişkeni tanımlandı ve initialize edildi Console.WriteLine(k); return 0; Bu kodu compile ettiğimizde ise herhangi bir hata ile karşılaşmayız çünkü k değişkeni tanımlanmış ve aynı zamanda initializasyona işleminden geçmiştir yani bir başlagıç değeri almıştır. Referans Tipleri ve Tanımlanması Referans tiplerinin bir instance ının yaratılması sırasında new keyword ü kullanılır. new keyword ü kullanıldığında C# referans tipinin bir instance ını heap de yaratır ve ilgili instance ın referans değerini döndürür; bu sayede geri dönen referansı bir değişkende tutabiliriz. using System; public class ReferenceType public int MyData; public class SimpleClass public static int Main() ReferenceType obja;

24 Boran 12

25 //new keyword'ü kullanılarak ReferenceType instantiate ediliyor obja=new ReferenceType(); obja.mydata=5; return 0; Aynı objeye birden fazla farklı referans atamak mümkündür. using System; public class ReferenceType public int MyData; public class SimpleClass public static int Main() ReferenceType obja; ReferenceType objb; ReferenceType objc; obja=new ReferenceType(); obja.mydata=5; //Aşağıdaki kod ile obja'nın aynı instance referansını //objb ve objc'ninde almasını sağlarız. objb=obja; objc=obja; return 0; Bir objeye referans verildiğinde referans ı destroy etmek için referans ın tanımladığı nesneye null değeri atamak yeterlidir. Bu önemli bir işlemdir çünkü Common Language Runtime (CLR) ile yönetilen Garbage Collector (GC) ilgili nesneyi otomatik olarak memory den release etmek yani işini yapabilmek için bunu bilmek zorundadır. using System; public class ReferenceType public int MyData; public class SimpleClass public static int Main() ReferenceType obja;

26 Boran 13

27 //new keyword'ü kullanılarak ReferenceType instantiate ediliyor obja=new ReferenceType(); //Aşağıdaki kod ise ilgili objeyi Garbage Collector(GC)'i //kullanarak memoryden de-allocate etmek için hazırlıyor. obja=null; return 0; Periyodik olarak GC (Garbage Collector) referans ına null değeri atanmış objeleri tespit eder ve onların otomatik olarak memory den de-allocate edilmesini sağlar. Değişken Tipleri ve Dönüşümleri Program buglarını ortadan kaldırmak için (bug-free programs) C# çok güçlü typed bir dildir. Değişkenler arasındaki dönüşümler sadece ihtiyaç duyulduklarında kullanılmalıdır. Örnek verecek olursak bool tanımlı bir değişkeni string değişken tipindeki bir değere dönüştürmek için bunu belirtmeniz gerekmektedir. Bu sayede program otomatik olarak değişken tiplerini convert etmekle uğraşmayacaktır, bu da programın daha hızlı çalışmasını sağlayacaktır. using System; public class Donusum public static int Main() bool MyBool=true; string i,j; i=mybool; MyBool=false; j=mybool; Console.WriteLine(i); Console.WriteLine(j); Console.ReadLine(); return 0; Yukarıdaki kodu compile ettiğimizde bir hata ile karşılarız: Cannot implicitly convert type bool to string.

28 Boran 14

29 Programın düzgün olarak çalışabilmesi için bool değişken tipinin.tostring() metodu kullanılarak ilgili çevrimin belirtilmesi gerekmektedir. using System; public class Donusum public static int Main() bool MyBool; string i,j; MyBool=true; i=mybool.tostring(); MyBool=false; j=mybool.tostring(); Console.WriteLine(i); Console.WriteLine(j); Console.ReadLine(); return 0; Boxing ve Unboxing Value ve referans tipleri arasında dönüşümler mümkündür. Stack te tutulan bir value tipinin heap de tutulan bir referans tipine dönüştürülmesi işlemine boxing, heap de tutulan bir referans tipinin stack te tutulan bir value tipine dönüştürülmesi işlemine ise unboxing adı verilir. using System; public class BoxingExample public static int Main() object obja; int i,j; //i stack'te tutulan value tipinde bir değişkendir. i=10; //Bu işlem ile i'ye heap'de bir referans değeri atanır (boxing) obja=(object)i;

30 Boran 15

31 //Bu işlem ise referans değerini stack'de tutulan //bir value değerine atar (unboxing) j=(int)obja; Console.WriteLine(j); Console.ReadLine(); return 0; Unboxing işlemi sırasında heapde tutulan referans tipinin değerinin stack de tutulan value tipinin değeri ile uyumlu olmasına dikkat etmek gerekmektedir. Aşağıdaki örnekte int değerini byte değerine unbox ederek bir runtime hatası oluşmasına neden olunmuştur. Boxing ve unboxing işlemleri ile ilgili birtakım alıştırma kodları yazmak bu tip işlemlerin anlaşılması açısından faydalı olacaktır. using System; public class BoxingExample public static int Main() int i=10; object obja; byte j; obja=(object)i; j=(byte)obja; Console.WriteLine(j); Console.ReadLine(); return 0; Array ler C# array ler için bize yeni bir syntax sunmaktadır.array tanımlaması sırasında köşeli parantezler kullanılır ve tanımlama işlemi sırasında değerler atanabilir. using System; public class ArrayExample public static int Main() //Aşağıdaki işlem array tanımını ve //değer atamasını gerçekleştirir. int[] aryint=1,2,3;

32 Boran 16

33 return 0; Bu yöntem ile 2,3 ve çok boyutlu arrayler tanımlanabilir. using System; public class ArrayExample public static int Main() //Aşağıdaki işlem 2D bir array tanımını ve //değer atamasını gerçekleştirir. int[,] aryint= 1,2,3, 4,5,6, 7,8,9 ; return 0; Alternatif olarak new keyword ü ile dimension ı daha sonra belirtilmek üzere bir array tanımlanabilir. protected bool[,] MyBool; İstenildiği takdirde array dinamik olarak da oluşturulabilir. Aşağıdaki örnekte array ilgili class ın constructor ına eklenerek class yaratıldığında dimension ı dinamik olarak tanımlanan bir dizi yaratılması sağlanmıştır. using System; public class Arrays private int MaxCols; private int MaxRows; private bool[,] MyBool; public Arrays(int Rows, int Cols) MaxCols=Cols; MaxRows=Rows; MyBool=new bool[rows,cols]; public class ArrayExample public static int Main()

34 Boran 17

35 Arrays MyArray=new Arrays(1,2); return 0; C# aynı zaman orthogonal (dikey) ve jagged (çapraz her rowda farklı eleman sayısına sahip diziler) array tanımlamalarına izin verir. Aşağıdaki örnek 1.rowunda 1, 2.rowunda 2, 3. rowunda 3 elemana sahip bir diagonal matris (yatay) tanımı yapacaktır. using System; public class ArrayExample public static int Main() int[][] ary=new int[3][]; ary[0]=new int[1]; ary[1]=new int[2]; ary[2]=new int[3]; ary[0][0]=1; ary[1][0]=2; ary[1][1]=3; ary[2][0]=4; ary[2][1]=5; ary[2][2]=6; for (int i=0;i<=2;i++) for (int j=0;j<=i;j++) Console.Write(ary[i][j].ToString()+" "); Console.WriteLine(); Console.ReadLine(); return 0; Bütün C# array leri System.Array tipinden inherit edilir ve bu bize birçok avantaj sunar. Aşağıdaki örnekte System.Array class ının birkaç method unu ve avantajlarını görüyoruz. using System; public class ArrayExample public static int Main() int[] ary=7,3,9; //Aşağıdaki kod tanım sırası ile değerleri

36 Boran 18

37 Enumeration //ekrana yazdırır foreach (int j in ary) Console.Write(j.ToString()+" "); Console.WriteLine(); //Aşağıdaki kod Matris'i ters çevirir Array.Reverse(ary); foreach (int j in ary) Console.Write(j.ToString()+" "); Console.WriteLine(); //Aşağıdaki kod ise dizi elemanlarını sıralar Array.Sort(ary); foreach (int j in ary) Console.Write(j.ToString()+" "); Console.ReadLine(); return 0; Enumarationlar kişiye özel integer tiplerdir. Enumaration tanımlandığında tanımlanan tipin alabileceği değerler belirlenmiş olur. Enumarationlar ile geliştirdiğimiz class ın içerisine istenmeyen değerlerin programcı tarafından assign edilmesini engeller ve intellisense özelliği ile programcıya kullanılabilecek parametrelerin değerlerini göstermeden programın kolay kullanımını sağlarız. using System; public class EnumerationExample enum Renkler Siyah,Beyaz,Kirmizi,Mavi; public static int Main() Renkler[] j=renkler.beyaz,renkler.kirmizi,renkler.mavi,renkler. Siyah; for (int i=0;i<4;i++) Console.WriteLine(j[i]); Console.ReadLine();

38 Boran 19

39 Constant return 0; Program içerisinde hiç değişmeyecek değerler kullanmak istediğimizde sabitler yani constant kullanılır. Constant tanımlama aynı zamanda client programcılarına kullanabilecekleri limitleri göstermek açısından da faydalı olabilir. abstract public class Deneme public const int MaxRows=50; public const int MaxCols=100; C# ta Program Akış Kontrol Mekanizmaları Data tipleri hakkında birçok noktaya değindikten sonra şimdi de akış kontrol mekanizmalarına göz atabiliriz. Fonksiyonlar Fonksiyonlar programın akışı sırasında en çok başvurduğumuz yapılardır. Fonksiyon kullanmanın nedenlerini 3 şekilde açıklayabiliriz: Yeniden kullanım, Çok fazla değişen fonksiyonelliği sağlamak, Kodun ne yaptığını anlatmaya yardımcı olmak. Fonksiyon Tanımlama Bir fonksiyon matematikte olduğu gibi geriye her zaman bir değer döndürür. Bu tanımdan yola çıkarak tanımlayacağımız fonksiyonun ne tip değer döndüreceğini de söylememiz gerekmektedir. Aynı zamanda fonksiyonlar ın içerisine yine tipi belli değerler parametere olarak gönderilebilir. Geriye döndürdüğümüz değeri ise return statement ı ile compiler a belirtiriz. Eğer geriye bir parameter göndermek istemiyorsak o zaman kullanmış olduğumuz yapı fonksiyon değil bir metoddur. Bir class içerisinde tanımlı bir fonksiyonu class içerisinden instance ını yaratmadan kullanabilmek için static keyword ünü kullanırız. Aşağıdaki örnek static bir fonksiyon tanımlayarak içeriye gönderilen iki parametreden büyük olanını geriye döndürmektedir. public static int Max(int value1, int value2) int ReturnValue; if (value1>value2)

40 Boran 20

41 ReturnValue=value1; else ReturnValue=value2; return ReturnValue; Fonksiyonu Aktif Hale Getirmek Fonksiyonun aktif hale getirilebilmesi için fonksiyon adından sonra parantezler ve hemen ardından içeriye gönderilecek parametreler belirtilir ve parantez kapatılır. Aşağıdaki örnek ile yukarıda yazılan Max fonksiyonun kullanımı görülmektedir. using System; public class FunctionExample public static int Max(int value1, int value2) int ReturnValue; if (value1>value2) ReturnValue=value1; else ReturnValue=value2; return ReturnValue; public static int Main() int k; k=max(1,5); Console.WriteLine(k); Console.ReadLine(); return 0; Fonksiyonlar ve Parametreler C# ta fonksiyon kullanımı sırasında value tipler value referans tipler ise referans olarak fonksiyon içerisine geçer. Bu pratik olarak şu demektir fonksiyonun içerisine gönderilen değer parametrenin bir kopyasıdır ve değer üzerinde yapılan herhangi bir değişiklik parametrede bir değişikliğe yol açmaz. Bunu bir örnekle açıklamak yerinde olacaktır.

42 Boran 21

43 using System; public class ByValSample //void deyimi ile geriye parametre döndürmeyeceğimiz //yani kullanılan fonksiyonun bir metod gibi davranacağını //belirtiyoruz. public static void ChangeValue(int y) y=20; return; public static int Main() int x=10; Console.WriteLine("Metod çağrılmadan önce x="+x); ChangeValue(x); Console.WriteLine("Metod Çağrıldıktan Sonra x="+x); Console.ReadLine(); return 0; Eğer C# ın bu davranışını değiştirmek istersek yani fonksiyona parametre olarak gönderilen değer üzerinde yapılan herhangi bir değişikliğin aynı zamanda değişkene de yansımasını istiyorsak parametre tanımında geçişin referans olarak yapıldığını belirtmek zorundayız. Bu sayede parametrede yapılan bir değişiklik fonksiyona gönderilen değişkene yansıyacaktır. Bu işlemi gerçekleştirirken tek dikkat etmemiz gereken şey fonksiyona gönderilen parametrenin bir değere sahip olması yani kullanılmadan önce initialize edilmesi gerekliliğidir. using System; public class RefSample //ref keyword'ü ile parametrenin referans olarak //işlem göreceğini belirtiyoruz. public static void ChangeValue(ref int y) y=20; return; public static int Main() int x=10; Console.WriteLine("Metod çağrılmadan önce x="+x);

44 Boran 22

45 //İçeriye gönderilen parametrenin referans olarak //geçmesini sağlıyoruz. ChangeValue(ref x); Console.WriteLine("Metod Çağrıldıktan Sonra x="+x); Console.ReadLine(); return 0; Eğer initialize (değeri henüz atanmamış) olmayan bir değer fonksiyona göndereceksek aynı zamanda gönderilen değerin ilgili initialization işlemine tabi tutulması gerektiğini belirtmek zorundayız bunu yapmak için ise out keyword ü kullanılmaktadır. Aşağıdaki örnek bu yöntem ile referanssal bir geçiş sağlamaktadır. using System; public class OutSample public static void ChangeValue(out int y) y=20; return; public static int Main() int x; ChangeValue(out x); Console.WriteLine("Metod Çağrıldıktan Sonra x="+x); Console.ReadLine(); return 0; Diğer bir keyword ise içeriye gönderilecek kaç tane parametre olacağının bilinmediği durumlarda kullanılmak üzere geliştirilmiş params keyword üdür. Bu sayede fonksiyon içerisine n tane parametre gönderilebilir. Aşağıdaki örnek içeriye gönderilen n parametreden en küçük olanı bulmaktadır. using System; public class ParamExample

46 Boran 23

47 public static int FindMinimum(params int[] values) int intmin=-1; //.Length ile fonksiyona herhangi bir //parametre gönderilip gönderilmediğini anlıyoruz. if (values.length>0) intmin=values[0]; for (int i=1;i<values.length;i++) if (values[i]<intmin) intmin=values[i]; return intmin; public static int Main() int j,k; //j değişkenine 2 değerden küçük olanı atanıyor. j=findminimum(5,4); //k değişkenine FindMinimum fonksiyonuna 12 tane //parametre gönderilerek gönderilenlerin en küçüğü //atanıyor k=findminimum(5,4,1,-1,-8,1000,34,100,1000,10001,- 100,1); Console.WriteLine(j); Console.WriteLine(k); Console.ReadLine(); return 0;

48 Boran 24

49 Namespace, Value ve Referans Type'ların Kullanımı Namespaces Diğer.Net dilleri gibi C# ta.net base class library sinde tanımlanmış datatype ları kullanır. Bu classlar namespace adı altında gruplanmıştır. Namespace e diğer bir tanımlama ile classları kullanırken fonksiyonel bir şekilde ulaşmamızı sağlayan logic containerlar diyebiliriz. Örnek olarak System.Winforms namespace i Winform applikasyonları için gerekli kontrol ve classları içerir. Genellikle namespace deki ilk kelime class ın geliştirildiği organizasyonun adı olur. Farklı bir vendor un verdiği isimlerle aynı programda kullanıldığında herhangi bir olası isim benzerliğini engellemek içinse namespacelerde genellikle uzun tanımlamalar kullanılır. namespace Netron.Otomasyon.OtomasyonClasses //class tanımlamaları using keyword ü ile de namespaceler içerisinde bulunan classları çalışmamıza çekeriz. namespace using keyword ü ile çekildikten sonra artık herhangi bir period belirtmeden namespace içerisinde bulunan tanımlamalara ulaşabiliriz. using Netron.Otomasyon.OtomasyonClasses; using keyword ü ile compile işlemi sırasında modüller arasında herhangi bir link tanımlamış olmayız. using keyword ü ile ilgili ilginç bir şey ise onu alias type tanımlamak için kullanabilmemiz. Aşağıdaki örnek System.Int32 type ını MyInteger adıyla kullanmamızı sağlar. using MyInteger=System.Int32; public class AliasOrnek public static MyInteger Main() MyInteger i=1; MyInteger j=i+1; System.Console.WriteLine(j); return 0;

50 Boran 25

51 System Namespace Common Laguage Specification (CLS) bir programlama dili tarafından desteklenmesi kaçınılmaz olan bir çok datatype ı tanımlayan zengin bir library e sahiptir. Bu libraryde bulunan Boolean, string, integer, kronolojik ve finansal valueların hepsi System namespace inin içerisinde yer alır. Bütün typelar object type ından inherit edilir. Böylece bir object in referansı herhangi bir tipdeki değişkeni tutmak için kullanılabilir. Long type ın bit olarak büyüklüğü 64 e çıkarılmıştır. Bu sayede Whistler ve XP platformlarında 64 bitlik programlar için bir hazırlık sağlanmıştır. (64 bitlik olan bu işletim sistemleri Intel in yeni nesil 64 bitlik işlemcisi Itanium uyumludur) Value ve Referans Tipleri.NET dilleri tarafından kullanılan yada yaratılan her class value ve referans tipleri olarak kategorilendirilebilir. Value ve referans tipleri iki karakteristikle farklılık gösterir : hafızada tutuldukları yerler ve atama işlemi contextlerindeki davranışları. Value tipler stackte tutulur, her iki value değeri için yapılmış atama işlemi ile hafızada birbirinin kopyası iki bölüm oluşturulur. Referans tipler ise heap de tutulur. Her iki referans değeri için yapılmış atama işlemi ile memory deki tek bir yere iki ayrı referans oluşturulur. Aşağıdaki kod ile iki value değerine atama yapılmakta ve hafızada iki değer kopyası oluşturulmaktadır. (kodu derleyip çalıştırmak için /unsafe switch ini kullanın) using System; public class Simpleclass public static int Main() int i; int j; i=5; j=i; Console.WriteLine("i="+i); Console.WriteLine("j="+j); unsafe if (&i==&j)

52 Boran 26

53 Console.WriteLine("i ve j'nin adresleri aynı"); else Console.WriteLine("i ve j'nin adresleri farklı"); Console.ReadLine(); return 0; Bu kod ise iki referans değerine atama yapmakta ve hafızadaki tek kopyaya ulaşmaktadır. using System; public class ReferenceType public int MyValue; public class SimpleClass public static int Main() ReferenceType i; ReferenceType j; i=new ReferenceType(); i.myvalue=5; j=i; Console.WriteLine("i.MyValue="+i.MyValue); Console.WriteLine("j.MyValue="+j.MyValue); unsafe if (i==j) Console.WriteLine("i ve j aynı adreste"); else Console.WriteLine("i ve j farklı adreste"); Console.ReadLine(); return 0;

54 Boran 27

55 Primitives olarak adlandırılan pek çok değişken tipi C# da value tipi olarak kabul edilir : integer value tipi gibi. Aynı zamanda struct ile tanımlamanan user tipler de value tipinde tanımlamalardır. Instance Constructrolar Constructor lar objeleri initialize ettiğimizde devreye giren özel metodlardır. Eğer obje class ı içerisinde bir constructor tanımlı değilse bile compiler tarafından otomatik olarak boş bir constructor sağlanır. Bir objenin yaratılması işlemi iki aşamada gerçekleşir: Birinci aşamada obje için memory de alokasyon gerçekleştirilir. Her obje new operator ü kullanarak yaratılır. Bu kural için herhangi bir exception yoktur. Bunu explicit olarak kod içerisinde gerçekleştirebiliriz, yada compiler bunu otomatik olarak yerine getirir. int[] MyIntArray=1,2,3,4; int[] MyIntArray1=new int[4]1,2,3,4; Yukarıdaki deklarasyonlar ın her ikiside aynı işi yapmaktadır. Bir objenin yaratılmasındaki ikinci aşamada ise constructor çağrımıdır. Constructor new ile allocate edilen memory i obje ye çevirir. İki tip constructor ın varlığından bahsedebiliriz: static ve instance. Instance constructor lar objelerin initialize ı için kullanırlırlar. Static constructor lar ise class ların initialize ı için kullanılırlar. C++ da initialize işlemi gerçekleştirmeden new operator ü memory allokasyonu ve yine new keyword ü ile daha önceden allocate edilmiş memory i initalize etmek mümkündür. Bu ayrım C# da mümkün değildir. Bu yöntem ile C# memory deki yapı

56 Boran 28

57 okunmadan önce doğru değere atanma yapılmasını garanti etmiş olur. Default constructor class ile aynı isimdedir, geriye bir değer döndürmez ve bir metod değildir (void). Default constructor ın herhangi bir parametresi yoktur. İstenildiği takdir de parametrik constructor lar tanımlanılabilir. Constructor aynı zamanda implicit olarak static olmayan alanları initialize işlemine tabi tutar. int, double, decimal gibi nümerik alanlar 0 a, bool alanlar false a Referans tipler null a, Struct ların içerdiği alanların hepsi yukarıdaki yapıya uygun olarak initialize işlemine tabi tutulurlar. Default constructor ın bu işlmeleri yapmasının iyi yanlarının yanı sıra dezavantajlı yanlarıda vardır: Mesela bir tarih class ın da yıl, ay ve gün değerlerinin 0 dan başlamasını istemeyiz. Böyle durumda kendi constructor ımızı tanımlamamız gerekmektedir. Aşağıdaki örnekte default constructor kullanan bir class ve kullanımı görülmektedir. using System; class Tarih public short Gun,Ay,Yil; class Class1

58 Boran 29

59 [STAThread] static void Main(string[] args) Tarih a=new Tarih(); Console.WriteLine("Yıl:0",a.Yil); Console.WriteLine("Ay:0",a.Ay); Console.WriteLine("gün:0",a.Gun); Console.ReadLine(); Bu class ı test ettiğimizde Ay, Gun ve Yıl değerlerinin 0 a set edildiği rahatlıkla görülmektedir. Default constructor ı devre dışı bırakıp kendi constructor ımızı yazmak istersek kodumuz aşağıdaki şekilde olacaktır: using System; class Tarih public short Gun,Ay,Yil; public Tarih() Gun=1; Ay=1; Yil=1970;

60 Boran 30

61 class Class1 [STAThread] static void Main(string[] args) Tarih a=new Tarih(); Console.WriteLine("Yıl:0",a.Yil); Console.WriteLine("Ay:0",a.Ay); Console.WriteLine("gün:0",a.Gun); Console.ReadLine(); Bu kod çalıştığında ise tarihi ile karşılaşırız. Default constructor ve kendi oluşturduğumuz constructor arasındaki fark açık bir şekilde görülmektedir. Constructor lar tıpkı metod larda olduğu gibi overload edilebilirler. Bu sayede class ımızın farklı initialization işlemlerine tabi tutulması sağlanılabilir. Overload etme işlemi gayet basittir. Class ile aynı isimde ve diğer constructor dan farklı parametreler kabul eden bir tanım vererek bunu sağlayabiliriz. Az önce gördüğümüz örnekteki constructor ı overload edecek olursak:

62 Boran 31

63 using System; class Tarih public short Gun,Ay,Yil; public Tarih() Gun=1; Ay=1; Yil=1970; public Tarih(short Day,short Month,short Year) Gun=Day; Ay=Month; Yil=Year; class Class1 [STAThread] static void Main(string[] args) Tarih a=new Tarih(); Tarih b=new Tarih(2,2,2002);

64 Boran 32

65 Console.WriteLine("a.Yıl:0",a.Yil); Console.WriteLine("a.Ay:0",a.Ay); Console.WriteLine("a.Gün:0",a.Gun); Console.WriteLine("b.Yıl:0",b.Yil); Console.WriteLine("b.Ay:0",b.Ay); Console.WriteLine("b.Gün:0",b.Gun); Console.ReadLine(); Görüldüğü gibi a ile ilgili olan tarih iken b ile ilgili olan tarih parametrik olarak ikinci constructor a yönlendiği için tarihini elde etmiş oluruz. Dikkat ettiyseniz birinci constructor içerisinde de ikincisine benzer bir işlem yaptık; basit bir assignment işlemi. Her seferinde aynı kodu yazmaktansa diğer bir yöntem ile işimizi biraz daha kolaylaştırabiliriz birinci constructor çağrıldığında onu ikinci constructor a yönlendirebiliriz: using System; class Tarih public short Gun,Ay,Yil; public Tarih():this(1,1,1970) public Tarih(short Day,short Month,short Year)

66 Boran 33

67 Gun=Day; Ay=Month; Yil=Year; class Class1 [STAThread] static void Main(string[] args) Tarih a=new Tarih(); Tarih b=new Tarih(2,2,2002); Console.WriteLine("a.Yıl:0",a.Yil); Console.WriteLine("a.Ay:0",a.Ay); Console.WriteLine("a.Gün:0",a.Gun); Console.WriteLine("b.Yıl:0",b.Yil); Console.WriteLine("b.Ay:0",b.Ay); Console.WriteLine("b.Gün:0",b.Gun); Console.ReadLine(); Birinci constructor da yaptığımız :this(1,1,1970) yönlendirmesi ile üç parametre kabul eden ikinci constructor ı çağırmış olduk. Bu yönteme initializer list adı verilmektedir. Bu

68 Boran 34

69 noktada bilmemiz gereken bir kural ise bir initializer list içerisinde tanımlı metod un kendi kendini çağıramamasıdır. Class içerisinde bazen readonly değişkenler kullanmak istiyebiliriz. Yani değeri bir kere assign edildikten sonra kullanıcı tarafından değiştirilmesini istemediğimiz değişkenler. Bu şekildeki değişkenler class içerisinde aşağıdaki şekilde tanımlanılabilirler: public readonly int MinYil=0; Bu tanımlama ile sonradan değiştirilemeyecek bir değer ataması yapmış oluruz. Fakat bazı durumlarda bu değerin class ın yaratımı içerisinde değişmesini isteyebiliriz. Mesela class içerisinde bir array imiz var ve initialization sırasında bu array in Max range inin belirlenmesini istiyoruz. Bu durumda bir şekilde kullanıcıya readonly olan bu değere bir kereye mahsus bir assignment şansı vermek zorundayız. Bu gibi durumlarda ise constructor ları kullanmak zorunda kalırız. Bir örnekle bakacak olursak: using System; class MyArray public readonly int MaxRangeOfArray; public int[] MyArr; public MyArray(int MaxRange) MaxRangeOfArray=MaxRange;

70 Boran 35

71 public void CreateArray() MyArr=new int[maxrangeofarray]; class Class1 [STAThread] static void Main(string[] args) MyArray a=new MyArray(1); a.createarray(); a.myarr[1]=2; Console.ReadLine(); MaxRangeOfArray değişkenine yapmış olduğumuz atama sadece constructor içerisinde gerçekleşebilir. Constructor dışında herhangi bir metod içerisinde bu değişkene yapılacak atama compiler ın hata vermesine neden olacaktır. CONSTRUCTORS using System; class AspNedir public int number=3; public AspNedir() // Constructor Methodumuz number = 5;

72 Boran 36

73 public void setnumber(int newnumber) number = newnumber; public int getnumber() return number; Konumuza direkt örnek bir kod yazarak başladım. İncelersek eğer şimdiye kadar ki makalelerimiz de tanımladığımız methodlara hiçte benzemiyen bir method tanımlaması yaptığımızı görebilirsiniz. AspNedir() isimli bu methodumuzun iki önemli özelliği var. İlki adının class'ımızın adı ile aynı olması. Diğeri ise herhangi bir return değerinin olmayışı. Bildiğiniz gibi methodları tanımlarken return tiplerini de belirtmek zorundaydık. Method eğer herhangi bir değer döndürmeyecekse return tipini void olarak belirtiyorduk. Ancak burada sözü geçen methodumuz için bunların hiç birisi geçerli değil. Class ile aynı adı taşıyan ve herhangi bir return değeri olmayan methodlara Constructor Methodlar diyoruz. Herhangi bir class'ı çağırdığımızda ilk önce o class'a ait constructor çalışır. Dolayısıyla, eğer her hangi bir işlemin class ilk çağırıldığında yapılmasını istiyorsak bu işlemleri constructor içinde veya constructor tarafından tetiklenen başka bir method içinde yapabiliriz.bu yöntemini genelde class'a ait bir takım değişkenlerin değerlerini set etmek için kullanırız. Şimdi yukarıda ki class'ımızı çağıracak olan methodumuzu yazalım. public static void Main() AspNedir test = new AspNedir(); Console.WriteLine(test.getNumber()); Console.ReadLine(); Burada methodun döndüreceği değer 5 olucak. Daha önce belirttiğim gibi her hangi bir class'ı çağırdığımızda ilk önce o class'ın Constructor methodu çalıştırılır. Örneğimizde ki constructor' da number değişkenini set ederek değerini beş'e eşitliyor. Yukarıda, herhangi bir class'ı çağırdığımızda ilk önce constructor'ın çalışmaya başladığını belirttik. Peki eğer çağırılan class'ın herhangi bir constructor'ı yoksa ne olucak,örneğin daha önce hazırladığım makalelerde ki örneklerin hiç birinde constructor methodunu yazmamıştım. Aslına bakarsanız her class'ın default bir constructor methodu vardır ve boştur. Yani demin ki örneği baz alırsak; public AspNedir() // Default Constructor Methodu Constructor'ımıza dışarıdan değer de gönderebiliriz. Şöyle ki; using System;

74 Boran 37

75 class AspNedir public int number; public AspNedir(int newnumber) // Dışarıdan değer alan Constructor Methodumuz number = newnumber; public int getnumber() return number; Dışarıdan değer alan Constructor'ı ise şu şekil de çağırabiliriz. public static void Main() AspNedir test = new AspNedir(12); Console.WriteLine(test.getNumber()); Console.ReadLine(); Dilersek aynı class için de birden fazla constructor tanımlıyabiliriz. Yukarıda ki örneklerde de gördüğünüz gibi constructor' lar her hangi bir isim ile tanımlanmadıklarından derleyici hangi constructor'ın çağırıldığını methodun dışarıdan aldığı parametrelere göre ayırır. Aynı işlem method ve fonksiyonlar için de geçerlidir. Buna Overloading denir. Şimdi bu kavramı inceliyelim. OVERLOAD KAVRAMI İsimleri aynı ancak dışarıdan aldığı parametrelerin pirimitiv tipleri farklı olan iki ayrı method yada fonksiyon tanımlama işlemine Overloading denir. Bir örnek vericek olursak. using System; class AspNedir public static void Main() AspNedir test = new AspNedir(); Console.WriteLine(test.TestMethod("İlk Methodu Çağırıyorum")); Console.WriteLine(test.TestMethod(6)); Console.ReadLine(); public String TestMethod(String newmesaj) String mesaj = "String deger alan Methodhodu çağırdınız =" + newmesaj; return mesaj; public String TestMethod(int sayi) String mesaj = "Integer deger alan Methodhodu çağırdınız =" + sayi; return mesaj; Görüldüğü gibi iki methodun da isimleri ve return tipleri aynı olmasına rağmen dışarıdan aldığı parametre tipleri

76 Boran 38

77 farklı olduğu için istediğimiz methodu yada fonksiyonu çağırabildik. Aynı işlemi yukarıda anlattığım constructor'lar için de gerçekleştirebiliriz. OVERWRITE KAVRAMI Bazen daha önce programın herhangi bir yerinde tanımlamış olduğumuz bir method yada değişkeni ezmek isteriz. Yani aynı tipte ve özelliklerde bir method yada değişken daha yaratarak ilk önce yaratılanın etkisiz kalmasını sağlıyabiliriz. Tabi bu bilerek yapılabileceği gibi dikatsizlik sonucu istenmeden de gerçekleşebilecek bir olay. Bu makalemizde şimdilik sadece değişkenleri overwrite etme üzerin de duracağız. using System; class AspNedir public int deger = 7; public int testmethod() int deger = 3; return deger; public static void Main() int deger = 5; AspNedir test = new AspNedir(); Console.WriteLine("Değişkenin testmethod Değeri ="+test.testmethod()); Console.WriteLine("Değişkenin Main Fonksiyonuna Ait Değeri ="+deger); Console.WriteLine("Değişkenin Class Değeri ="+test.deger); Console.ReadLine(); Yukarıda ki örnekte görüldüğü gibi integer tipteki "deger" değişkeni aynı uygulama içinde farklı bloklarda üç kere tanımlanmasına rağmen hata vermedi. Bir değişkenin değerini ekrana basmaya kaltığımız zaman, değer ilk önce bulunulan blok içinde aranır. O blok içinde eğer tanımlı böyle bir değişken varsa değeri ekrana basılır. Aksi taktirde Class seviyesine çıkılarak istenen değişkene bakılır. Yoksa uygulama zaten böyle bir değişken tanımlı değil diye hata vericektir.

78 Boran 39

79 C#' ta IO (Girdi/Çıktı) İŞLEMLERİ Bilgisayarımızın sürücüleri, dosya ve klasör yapıları ile ilgili gerekli bilgileri almamızı yada herhangi bir text dosyası yaratma,içine bilgi girişi yada içindeki bilgileri okuyabilmemizi sağlıyan işlemlere IO (input/output) işlemleri diyoruz. Yukarıda saydığım işlemleri yapabilmemizi sağlıyacak olan gerekli class ve methodlar.net geliştirme ortamında System.IO namespace 'i içinde yer alır. Dosya ve klasörler üzerinde işlem yapmamızı sağlıyan dört sınıf vardır. Bunlar; Directory DirectoryInfo File FileInfo Directory ve File Sınıfları yeni bir klasör yada dosya yaratma-silme işlemlerinizi yaparken,directoryinfo ve FileInfo ise adından da anlaşılacağı gibi daha çok, ilgili klasör yada dosya hakkında çeşitli bilgileri almanızı sağlıyacak olan sınıflardır. using System; using System.IO;//System.IO namespace'i namespace AspNedir public class systemio public static void Main() //Driver Listesi Diziye Atılıyor. string[] suruculer = Directory.GetLogicalDrives(); foreach (string liste in suruculer) Console.WriteLine("surucu=0",liste); //İstediğim Herhangi Bir Dosyaya En Son Ne Zaman //Erişildiğini de File Sınıfının GetLastAccessTime //Methodu ile Öğrenebilirim. string d=(file.getlastaccesstime(@"c:\aspnedir.txt")).tostring(); Console.WriteLine (d); Console.Read(); Örnekte Directory sınıfının GetLogicalDrives ve File Sınıfının GetLastAccess methodlarını gördük. Directory ve File Sınıfının diğer bazı özelliklerine bakacak olursak. File Directory AppendText() Copy Create Delete Exist CreateDirectory Delete Exist Move GetDirectories

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

Operator Aşırı Yükleme (Operator OverLoading)

Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme Operatör metotları bir nesnenin ifadeler içinde operatörlerle kullanıldığı zaman davranışını belirler. Temel veri türleri için operatörler

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Ders 8: Metotlar. barisgokce.com

Ders 8: Metotlar. barisgokce.com Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

Detaylı

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar Nesneler ve Türler Sınıflar ve Yapılar Arasındaki Farklılıklar Sınıf Üyeleri Değer ve Referans Türde Olan Aktarımlar Yapıcılar ve Statik Yapıcılar Read-Only Statik Sınıflar Object Sınıfı Sınıflar Sınıflar

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Tür Dönüşümü 1 Farklı türden değişkenlerin aynı ifade içinde işlem görmeleri için tür dönüşümü kullanılır. Tür dönüşümlerini aşağıdaki şekilde gruplara ayırmak mümkündür: Tür Dönüşümleri Bilinçli(explicit)

Detaylı

C#(Sharp) Programlama Dili

C#(Sharp) Programlama Dili Değişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Diziler (Arrays) 1 Dizi Kavramı Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların

Detaylı

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz. C# da Diziler Diziler için aynı tipteki verilerin tutulduğu bir koleksiyon diyebiliriz. Örneğin integer verinin bir yığın şeklinde tutulması için dizileri kullanırız. C# da diziler referans tipinde değişkenlerdendir.

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

C# nedir,.net Framework nedir?

C# nedir,.net Framework nedir? 1 C# nedir,.net Framework nedir? C# nedir? C#, C/C++ ve Java dillerinde türetilmiş,bu dillerin dezavantajlarının elenip iyi yönlerinin alındığı, güçlü basit, esnek, tip-güvenli(typesafe,tür dönüşümlerindeki

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi İÇİNDEKİLER Değişken Nedir? Değişken kullanımı faydaları. Değişken türleri Değişken görünürlüğü (scope) Değişken türleri arası dönüşümler Örnek

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

BMH-303 Nesneye Yönelik Programlama

BMH-303 Nesneye Yönelik Programlama BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon Tanımı Fonksiyon

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

4. Bölüm Programlamaya Giriş

4. Bölüm Programlamaya Giriş 4. Bölüm Programlamaya Giriş Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ 4.1. C# ile Program Geliştirme Net Framework, Microsoft firması tarafından açık internet protokolleri ve standartları

Detaylı

11- FONKSİYONLAR (FUNCTIONS)

11- FONKSİYONLAR (FUNCTIONS) 1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 2 C# Programlama Dili Elemanları Bu bölümde;

Detaylı

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler. MVC MVC Anlamakta zorluk çekiyorsanız bu yazımı dikkatle okumanızı tavsiye ediyorum. Derslerde öğrencilerimin en çok zorlandıkları konu MVC nin mantığıdır. Önce MVC anlamaya çalışmak yerine MVC den biraz

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı

Detaylı

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach() (LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip

Detaylı

Programlama Dilleri III 1

Programlama Dilleri III 1 Temel Veri Türleri Programlama Dilleri III 1 İlk C# Programı class ilk_program1 static void Main() System.Console.WriteLine("Merhaba C#"); C# dilinde yazılmış kaynak kod dosyalarının uzantıları.cs dır.

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Ders 4: Diziler (Arrays( Arrays) barisgokce.com Ders 4: Diziler (Arrays( Arrays) Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Diziler Aynı tipteki bir veri gurubunun bir değişken içinde saklanmasıdır. Veriler Hafızada

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 10: Yapıcı ve Yıkıcı Fonksiyonlar Yapıcı Fonksiyonlar İçerik Yapıcı Fonksiyon Tanımı Üyelere İlk Atama Yapıcı Fonksiyonu Yükleme Yapıcı Fonksiyon Çağırımı Kopya

Detaylı

Hafta 13 Fonksiyonlar

Hafta 13 Fonksiyonlar BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.

Detaylı

BTEP243 Ders 3. class Yazım Kuralı:

BTEP243 Ders 3. class Yazım Kuralı: BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Diziler Dizi Tanımlama ve İlk Değer Atama Dizi Elemanlarının Kullanılması Dizi İşlemleri Java da Diziler JAVA DA DİZİLER 4 Dizi; tek bir veri tipinde,

Detaylı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne

Detaylı

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama İçerik Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili kavramlar Bu hafta:

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı

Detaylı

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Ders #2 (2 Kasım 2009) İçerikç Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA İŞARETÇİ ELEMANLI SINIFLAR REFERANSLAR OPERATÖRLERİN AŞIRI YÜKLENMESİ ATAMA OPERATÖRÜ Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü İşaretçi Elemanlı Sınıflar

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

Detaylı

Diziler İndisli Değişkenler

Diziler İndisli Değişkenler Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 1 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler ve Değişkenler Values & Variables 2 1 Değişkenlerin Özellikleri Tipi

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 5 Veri Tipleri (Devam) Yrd. Doç. Dr. Melike Şah Direkoğlu Konular Dizi Tipleri Kayıt Tipleri Birleşik Tipler Küme Tipleri İşaretçi ve Referans Tipleri Alındığı

Detaylı

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

if (ad == Sabri) Console.WriteLine(Merhaba Sabri. Ne zamandır gözükmüyodun...); Koşul İfadeleri ve Akış Kontrolü Koşul ifadeleri ve akış kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadır. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir

Detaylı

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI 2.2 Değişkenler Ve Sabitler 2.2.1 Değişkenler Değişkenler bir programlama dilinde verilerin depolanma alanlarını temsil eder. Tanımlanan her değişkene bellek bölgesinden bir alan ayrılır. Bu bellek bölgesine

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

Detaylı

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 8 DB içerisinde CLR Bileşenleri" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı SQL Server ve.net CLR SQL Server içerisinde

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

/*int sayi1, sayi2,toplam=0;

/*int sayi1, sayi2,toplam=0; static void Main(string[] args) { //--------------------1. ders-------------------- -------- / ekrana yazma ekrandan okuma sayısal değerleri okuma yer tutucular basit tip dönüşümü / /int sayi1, sayi2,toplam=0;

Detaylı

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez... Javada Diziler Java da diziler nesnedir; içerisinde belirli sayıda eleman bulunur. Eğer bu sayı sıfır ise, dizi boş demektir. Dizinin içerisindeki elemanlara eksi olmayan bir tam sayı ile ifade edilen

Detaylı

Java String İşlemleri

Java String İşlemleri Java String İşlemleri Karakterler (Characters) "char" kelimesi bir karakter tanımlamak için kullanılır. Karakter tek tırnak içine alınmalıdır. Bir char'ın aralığı 0 ile 65536 arasındadır. Char türü işaretsiz

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 1 (Değerler, Değişkenler, İşleçler, Tip Dönüşümleri, Mantıksal Operatörler) Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler

Detaylı

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi 2011-2012 Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Programlama Dili Nedir? 2 Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 11: Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 3 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Sınıflar ve Fonksiyonlar Tekrar kullanılabilir kodlar 1 Nesne Tabanlı Tasarım

Detaylı

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

Veri Tipleri Aşağıdaki programdaki 5 hatayı bulunuz.

Veri Tipleri Aşağıdaki programdaki 5 hatayı bulunuz. Aşağıdaki programdaki 5 hatayı bulunuz. class hata public static void main() int x; int y; Console.WriteLine("X in degeri = "x); y = x / 2 Console.Write("y nin değeri = x / 2 = "); Console.WriteLine(y);

Detaylı

C# Çalışma Örnekleri

C# Çalışma Örnekleri C# Çalışma Örnekleri namespace sabittanimlama class program static void main (String [] agrs ) const String s="merhaba "; Console.WriteLine(s); Console.readLine ; merhaba namespace calisma class program

Detaylı

Karabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ

Karabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ WEB TEKNOLOJİLERİ VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak

Detaylı

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kalıtım Kavramı Java da Çok Biçimlilik Kavramı Fonksiyonların Çok Biçimliliği Yapıcı Fonksiyonun Çok Biçimliliği Java da Kalıtım Kavramı 4 Kalıtım;

Detaylı

Diziler (Arrays) Çok Boyutlu Diziler

Diziler (Arrays) Çok Boyutlu Diziler Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Görsel Programlama 1

Görsel Programlama 1 Görsel Programlama 1 1. Ekrana Hello world! yazan c# console application kodları: Console.Write("Hello world!"); 2. Ekranda ilk satıra Hello, ikinci satıra world! yazan kod: Console.WriteLine("Hello");

Detaylı

10/17/2007 Nesneye Yonelik Programlama 3.1

10/17/2007 Nesneye Yonelik Programlama 3.1 Procedure-Based Programming in C++ Çoğu gerçek dünya problemleri binlerce kod satırı gerektirir ( MS Windows NT 5.0 25 million dan fazla kod satırından oluşmaktadır). Yazılımın tasarımı, kodlanması ve

Detaylı

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1 Programlama Dilleri III 2007-2008 Bahar BM 211 Programlama Dilleri 3 1 Ders Hakkında Ders Sorumlusu Öğr.Gör. Bora UĞURLU Ders Slaytları İçin http://members.comu.edu.tr/boraugurlu/ Dersle İlgili İletişim

Detaylı

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58; BTEP212 Java DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI Lab7 bazen bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Akış Konrol Mekanizmaları 1 Koşul İfadeleri Programlar içersinde bazı durumlarda programın akışının değişmesi ya da farklı işlemlerin yapılması gerekebilir. Bazen de seçimlerin yapılması ya da belirli

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma C de Detaylı Üs Alma Programı Bu uygulama yazısında C de pow() fonksiyonunu kullanmadan üs hesabı yapan programı yazmaya çalıştım. Başta tanımladığım float tipinde 2 fonksiyon sayesinde + lı ve li üs değerleriyle

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

JAVADA DİZİ İŞLEMLERİ

JAVADA DİZİ İŞLEMLERİ JAVADA DİZİ İŞLEMLERİ Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız.

Detaylı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu. Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html

Detaylı

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir: BÖLÜM 4 Değişken Tipleri Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir: type identifier [ = value][, identifier [=

Detaylı

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve AraştırmaMerkezi 2 İçindekiler 2. ASP'nin Dili... 3 2.1 YAZILIM

Detaylı

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler C Programlama Dr. Serkan DİŞLİTAŞ 3.1. Sabitler Sabitler, tanımlanmasıyla birlikte program içerisinde

Detaylı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı