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 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

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ı

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ı

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ı

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ı

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ı

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# 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ı

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ı

İç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ı

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ı

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ı

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ı

// 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ı

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ı

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ı

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ı

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ı

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ı

«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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

Ö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ı

Ö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ı

Java Programlamaya Giriş

Java Programlamaya Giriş Java Programlamaya Giriş Amaçlar: 1. Java kurulumu (Netbeans ve JDK) 2. Java Netbeans Kullanımı 3. Program yazma Java Kurulumu Java dili ile programlama yapabilmek için java jdk ve java kodlama yapılabilecek

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.

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ı

JAVA API v2.0 Belge sürümü: 2.0.2

JAVA API v2.0 Belge sürümü: 2.0.2 JAVA API v2.0 Belge sürümü: 2.0.2 1. İçindekiler 1. İÇİNDEKİLER... 2 2. BU BELGENİN AMACI... 3 3. BELGE SÜRÜMLERİ... 3 4. SİSTEM GEREKSİNİMLERİ... 3 5. KULLANIM ŞEKLİ... 4 5.1. GENEL... 4 5.2. UYARILAR...

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com Nesne Yönelimli Programlama Nesne Yönelimli Programlama, 1990 lı yıllarda başlayan ve günümüzde de yoğun olarak kullanılan bir programlama

Detaylı

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır. Bölüm 20 20 Arayüzler Arayüz bir sınıf değildir. Arayüz yazmak sınf yazmaya çok benzer ancak ikisi birbirinden farklı konseptlerdir. Sınıf bir nesnenin özelliklerini ve davranışlarını belirtirken; bir

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

Internet Programming II. Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2014 2015 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 11-14 May. 2014 Form Form İşlemleri Tarayıcıdan bilgi alarak işlem gerçekleştirme FORM elemanları

Detaylı

https://twitter.com/farukbozan 19 Şubat 2016 Cuma

https://twitter.com/farukbozan 19 Şubat 2016 Cuma Bugünkü yazımda çok basit ve temel anlamda Spring ile XML tanım tabanlı bean okuma işlemini anlatmaya çalışacağım. Spring framework bizim yerimize nesnelerin birbirine olan bağımlılıklarını düzenleyip,

Detaylı

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

KONTROL VE OTOMASYON KULÜBÜ

KONTROL VE OTOMASYON KULÜBÜ KONTROL VE OTOMASYON KULÜBÜ C DİLİ İLE MİKROKONTROLÖR PROGRAMLAMA EĞİTİMİ Serhat Büyükçolak Ahmet Sakallı 2009-2010 Güz Dönemi Eğitimleri Mikrokontrolör Gömülü sistemlerin bir alt dalı olan mikrokontrolör

Detaylı

WebInstaller. 1. Kurulum Đçin Gereksinimler

WebInstaller. 1. Kurulum Đçin Gereksinimler WebInstaller Ürün Grubu [X] Fusion@6 [X] Fusion@6 Standard Kategori [X] Yeni Fonksiyon Versiyon Önkoşulu @6 Uygulama E-Netsis.Net uygulamasının kurulumu Netsis\ENetsis.Net\Kurulum dizininde bulunan NetsisWebInstall.exe

Detaylı

C#.NET ile PROGRAMLAMAYA GİRİŞ

C#.NET ile PROGRAMLAMAYA GİRİŞ C#.NET ile Neden C#.NET programlama dili? C, Java ailesinden bir programlama dilidir Platformdan (işletim sistemi-makine) bağımsız yazılım geliştirme Nesne tabanlı (OOP Object Orianted Programming) Consol,

Detaylı

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

enum bolumler{elektronik, insaat, bilgisayar, makine, gida}; BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı

Detaylı

Ders 8 Konu Özeti ve Problemler

Ders 8 Konu Özeti ve Problemler Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu

Detaylı

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1 Görsel Programlama DERS 01 Görsel Programlama - Ders01/ 1 Takdim Planı Nesneye Dayalı Programlama Kavramı Nesne, Sınıf Kavramı Java Programlama Dili Java Programlama Dili Temel Özellikleri Java Sürümleri

Detaylı

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon Dinamik Kodlama Ürün Grubu Kategori Versiyon Önkoşulu [X] Fusion@6 [X] Yeni Fonksiyon @6 Uygulama @6 Serisi ürünlerde, kullanıcı arabirimlerinin her yerine eklenen dinamik kodlama özelliği ile, programın

Detaylı

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. ASP.NET DERS 1 Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. Gelen ekranda Visual C# seçildikten

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

İNTERNET TABANLI PROGRAMLAMA

İNTERNET TABANLI PROGRAMLAMA İNTERNET TABANLI PROGRAMLAMA 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ı

TEMPLATES. Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

TEMPLATES. Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1 PARAMETRİKÇOKŞEKİLLİLİK: TEMPLATES Binnur Kurt kurt@cs.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi C++ ile Nesneye Dayalı Programlama 1 Sınıf Yapısı Kalıtım Çok Şekillilik Templates

Detaylı

Klavyeden Basit Giriş/Çıkış İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada

Detaylı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)... Array (Diziler) Array Aynı tipten çok sayıda değişken topluluğudur. Birden fazla aynı tipteki değerle işlem yapmayı kolaylaştırır. X Y Score1 Score2 40 56 Grade 40 56 80 (0) (1) (2)... (13) Array tanımlama:

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 ix 1 İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19 23 Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 Kayan Nokta Tipleri 30 Sayısal Veri Tipi Dönüşümleri

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

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ı

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ Değişkenler PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ C# Programlama Dili Giriş Değişkenler bir programlama dilinde verilerin depolanma alanlarını temsil eder. Tanımlanan her değişkene bellek bölgesinden bir alan

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); }

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); } FONKSİYONLAR Fonksiyon, programcı tarafından seçilen bir kod bloğuna isim vermek için kullanılan araçtır. Fonksiyon ismi program içerisinde çağrıldığında fonksiyonun temsil ettiği kod çalıştırılır. Örneğin

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 - 4 Nesneye Yönelik Programlamaya Giriş Bu

Detaylı

GÖRSEL PROGRAMLAMA - I 2013-2014

GÖRSEL PROGRAMLAMA - I 2013-2014 GÖRSEL PROGRAMLAMA - I 2013-2014 Ders Hakkında Ders Sorumlusu Öğr.Gör. Ekrem Eşref KILINÇ Dersle İlgili İletişim İçin ekremesrefkilinc@gmail.com Neler Öğreneceğiz? Nesneye yönelik programla nedir? (Metot

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)

Detaylı

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli

Detaylı

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat 1. Kısım Çoktan Seçmeli (48 puan) 1) Aşağıdaki JAVA kod parçası çalıştırıldığında

Detaylı

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir: Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler

Detaylı

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 Bölüm 10 Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 10. Bölüm konuları Çağırma / geri dönme semantiği Yığıt-dinamik yerel değişkeni olan altprogramların gerçeklenmesi İçiçe altprogramlar Statik

Detaylı

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1 İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım:

Detaylı

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java Değişkenler ve Veri Tipleri Operatörler JAVA Java Java SUN bilgisayar şirketince

Detaylı

Karma C/C + + Kodlama

Karma C/C + + Kodlama Karma C/C+ + Kodlama /********************************************************** * Bâkır EMRE * emre ~ enderunix.org * EnderUNIX Yazılım Gelistirme Takım ı * http:/ /www.enderunix.org * * Sürüm : 1.0 *

Detaylı

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I GENEL DERS BİLGİLERİ Öğretim Elemanı : İzzet TAMER Ofis : MUH 311 Ofis Saatleri : Pazartesi: 14:10 15:00, Salı:

Detaylı

C++ Operatörler (Operators)

C++ Operatörler (Operators) C++ Operatörler (Operators) Konular Operatörler o Aritmetiksel (Matematiksel) Operatörler o Karşılaştırma Operatörleri o Mantıksal Operatörler o Atama Operatörleri o Bit Düzeyinde Operatörler o Özel Amaçlı

Detaylı

1 JAVASCRIPT NEDİR? 1

1 JAVASCRIPT NEDİR? 1 İÇİNDEKİLER IX İÇİNDEKİLER 1 JAVASCRIPT NEDİR? 1 2 TEST ORTAMINI TANIMAK (FİREFOX VE FİREBUG) 5 Firefox 6 Firebug 8 CSS Sekmesi 10 DOM Sekmesi 11 Net ve Çerezler Sekmeleri 11 Script Sekmesi 11 Konsol Sekmesi

Detaylı

İÇİNDEKİLER İÇİNDEKİLER KODLAB

İÇİNDEKİLER İÇİNDEKİLER KODLAB İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

Nesneye Dayalı Programlama Laboratuvarı

Nesneye Dayalı Programlama Laboratuvarı 2013 2014 Nesneye Dayalı Programlama Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Salih GÖRGÜNOĞLU Laboratuvar Sorumluları: M. Zahid YILDIRIM İÇİNDEKİLER Deney 1: Visual Studio ve C++'a Giriş Uygulamaları...

Detaylı

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 Kaynaklar: Sefer Algan, Her Yönüyle C#, 6. Baskı, Pusula Yayıncılık. www.sharpnedir.com 1. DÜZEYLERİNE GÖRE BİLGİSAYAR DİLLERİ Script Dilleri Yüksek Düzeyli Diller

Detaylı

2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI 2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI KOÜ Mekatronik Mühendisliği Bölümü/MKT-103-Görsel Programlama Dersi - Ara Sınav J-grubu Ad-Soyad:...No:... J GRUBU-süre:70dk 1.) Aşağıdaki

Detaylı

İNTERNET TABANLI PROGRAMLAMA- 4.ders

İNTERNET TABANLI PROGRAMLAMA- 4.ders HAZIR FONKSİYONLAR İNTERNET TABANLI PROGRAMLAMA- 4.ders STRING FONKSİYONLARI (KÜTÜPHANESİ) Çoğu web sitesinde olduğu gibi kullanıcıdan kullanıcı adını ve şifresini aldıktan sonra bu değerleri veri tabanından

Detaylı

BİLG214. 20.10.2009 Dr. Mustafa T. Babagil 1

BİLG214. 20.10.2009 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ı

Automatically Upgrade (new) Client push installation Software update point installation Group Policy installation Logon script installation

Automatically Upgrade (new) Client push installation Software update point installation Group Policy installation Logon script installation Merhaba, bu yazımda client agent kurulumu ve ou yapılandırılmasından bahsedeceğim.sccm de client agent kurulum işlemini birden çok şekilde yapabilirsiniz. Microsoft tarafında belirtilen methodlar aşağıdadır.

Detaylı

Hafta 2 EkLab 1. C ye Giriş. Ozan ŞENYAYLA Çağrı YENİCE

Hafta 2 EkLab 1. C ye Giriş. Ozan ŞENYAYLA Çağrı YENİCE Hafta 2 EkLab 1 C ye Giriş Ozan ŞENYAYLA Çağrı YENİCE http://ozansenyayla.com/programlama.php KAYNAK: Görkem Paçacı / İlker Korkmaz / Kaya Oğuz - İEU BT Hafta 2 GİRİŞ EkLab 1 Programlama, genel olarak,

Detaylı

Standard Template Library

Standard Template Library Standard Template Library Uluslararası Bilgisayar Enstitüsü Ege Üniversitesi Ahmet Bilgili & Serkan Ergun STL ANSI/ISO Standard C++ ın içerdiği algoritmalar ANSI/ISO Standard C++ ın içerdiği algoritmalar

Detaylı

Linux Assembly Programlamaya Giriş

Linux Assembly Programlamaya Giriş Linux Assembly Programlamaya Giriş Barış Metin Konular gcc / gas / ld Intel ve AT&T söz dizimleri gdb INT 80H C kütüphane fonksiyonları Stack Frame Örnek

Detaylı

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN 0-321-49362-1

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN 0-321-49362-1 Bölüm 5 Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN 0-321-49362-1 Bölüm 5 Konular Giriş Adlar(Names) Değişkenler(Variables) Bağlama Kavramı(The

Detaylı

Data Structures Lab 1 2012-Güz

Data Structures Lab 1 2012-Güz Data Structures Lab 1 2012-Güz C# Ortamı Tanıtımı ve Uygulama Geliştirilmesi Visual Studio 2010 Ortamının Temini -NYG'ndan MSDN üyeliği için başvuru dilekçesi alınıp doldurulmalı ve yine NYG'ye teslim

Detaylı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı JSON Korsanlığı Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı İnternetin gün geçtikçe hayatımızdaki önemi arttı ve web siteleri milyonlarca insan tarafından girilen yerler haline geldi. Artık çevremizden

Detaylı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar Fonksiyon Tanımı Karmaşıkveuzunprogramları,

Detaylı

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)

Detaylı

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu ASP.NET TEMELLERİ Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu İnternet Nasıl Çalışır? Sunucu istemci modeline göre çalışır. Fiziksel olarak bu sistem genelde isteği yapan

Detaylı

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; } for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) ifadeler; Başlangıç değeri; koşul içinde tanımladığımız değişkene ilk değerin atanmasını sağlar. Koşul: Döngünün

Detaylı

İş Akış Yönetimi LOGO Kasım 2014

İş Akış Yönetimi LOGO Kasım 2014 İş Akış Yönetimi LOGO Kasım 2014 İçindekiler İş Akış Yönetimi... 3 Görevler... 4 Görev Bilgileri... 5 Mesajlar... 7 Zaman Ayarlayıcı İşlemler... 8 Zamanlanmış Görevler... 10 Zamanlanmış Görev Bilgileri...

Detaylı

Uygulamalar 4 IsMissing Fonksiyonlar ve Alt Programlar Prosedür Parametreleri Public Function f(x,y,optional t, Optional k) End Function 1.

Uygulamalar 4 IsMissing Fonksiyonlar ve Alt Programlar Prosedür Parametreleri Public Function f(x,y,optional t, Optional k) End Function 1. Uygulamalar 4 IsMissing (Değişken) Visual Basic te fonksiyon veya alt programlara giriş parametresi olarak Optional deyimi kullanılırsa o parametre kullanılmadan da o fonksiyon çağrılabilir. IsMissing

Detaylı

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No. Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:

Detaylı