SINIF. Program 2. Program 1

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

Download "SINIF. Program 2. Program 1"

Transkript

1 SINIF Programlama veri ile veri üzerinde yapılan iģlemden oluģur. Veri değiģken iken, veri üzerinde yapılan iģlem fonksiyon olarak düģünülebilir. ġu ana kadar bu ikisini ayrı parçalar olarak kullandık. DeğiĢkenlerimizi fonksiyonlara parametre olarak yolladık. Bu programlama yöntemi büyük projelerde problem oluģturmaktadır. Projeler büyüdükçe projede çalıģan programcı sayısı da artmaktadır. Fonksiyon ile verinin ayrı tutulması programcılar arasındaki iletiģimi zayıflatmaktadır. Program yazılıp piyasaya sürüldükten sonra programcının görevi bitmez. Program içerisinde hatalar bulunabilir veya programa yeni bir özellik eklenilmesi istenebilir. Bu durumda programcının yazılı olan kodun içerisine girip değiģiklikler yapması gerekir. Fonksiyonel programlama bu tip durumlarda problem oluģturulmaktadır. Sınıf yapısı bu tip problemleri ortadan kaldırmak için geliģtirilmiģtir. Sınıf veri ile onun üzerine iģlem yapacak olan fonksiyonu tek bir çatı altında birleģtirmektedir. AĢağıdaki Program 1 de AdSoyAd ve Numara verilerini manipüle eden üç adet fonksiyon yazılmıģtır. Bu fonksiyonlar değiģkenler global olmadığı için, etkileyecekleri veriyi parametre olarak almaktadırlar. Programcı veriyi saklayacağı değiģkeni oluģturacağı gibi fonksiyona nasıl vereceğini de bilmek zorundadır. Program 2 de tanımlanan sınıf Program 1 deki iģlemleri birleģtirmek için kullanılmıģtır. Sınıfa ait fonksiyonlar yine sınıfa ait olan değiģkenlerden haberdar olduğu için parametreye ihtiyaç duymazlar. Sınıftan bir değiģken oluģturduğumuzda hem veriyi hem de fonksiyonları oluģturmuģ oluruz. 1. void AdSoyadGir(char *Ad) 3. cin>>ad; 4. } 5. void NumaraGir(char * No) 6. { 7. cin>>numara; } 9. void Yazdir(char* ad,char* No) 10. { 11. cout<<ad<<" adlı öğrencinin"; 12. cout<<" numarasi "<<No; 13. } 14. int main(int argc,char** argv) 15. { 16. char AdSoyAd[100]; 17. char Numara[100]; AdSoyadGir(AdSoyAd); NumaraGir(Numara); Yazdir(AdSoyad,Numara); 24. } Program 1 1. class Kisi 3. public: 4. char AdSoyAd[100]; 5. char Numara[100]; 6. void AdSoyAdGir() 7. { cin>>ad; 9. } 10. void NumaraGir() 11. { 12. cin>>numara; 13. } 14. void Yazdir() 15. { 16. cout<<ad<<" öğrencinin"; 17. cout<<" numarasi "<<No; 1 } 19. }; 20. int main(int argc,char** argv) 21. { 22. Kisi k1; 23. k1.adsoyadgir(); 24. k1.numaragir(); 25. k1.yazdir(); 26. } Program 2

2 C++ dilinde sınıf tanımlamak için class anahtar kelimesi kullanılır. Sınıf ismi belirlerken dikkatli olmamız gerekir. Ġsim sınıfın temsil ettiği sistemi tam olarak karģılamalıdır. Programcı olarak geliģtirdiğimiz sınıfları daima baģkaları kullanacağını düģünerek tasarlamamız gerekir. EriĢim belirteçleri sınıfa ait olan elemanlara dıģarıdan eriģilip eriģilmeyeceğini belirtir. Bu konuya ilerde daha detaylı değineceğiz. Sınıfın adı 1. class Kisi 3. public: 4. char AdSoyAd[100]; 5. char Numara[100]; 6. void AdSoyAdGir() 7. { cin>>ad; 9. } 10. void NumaraGir() 11. { 12. cin>>numara; 13. } 14. void Yazdir() 15. { 16. cout<<ad<<" öğrencinin"; 17. cout<<" numarasi "<<No; 1 } 19. }; Erişim belirteci Sınıfa ait değişkenler Sınıfa ait fonksiyon Sınıfın sonu Program3

3 Sınıf aslında yeni bir veri türüdür ve bu veri türünü programcı geliģtirir. Veri türü sadece bir verinin hafızada nasıl saklanacağını belirtir. Örneğin int bir tam sayının hafızada nasıl saklanacağını belirten veri türüdür. Yani veri türü sadece bir tasarımdan ibarettir. Bu tasarımları kullanıp değiģkenler oluģturmaktayız. Aynı iģlemi sınıflar içinde yapmamız gerekir. Program 4 ün ilk satırında bu iģlem yapılmaktadır. 3. Kisi k1; 4. k1.adsoyadgir(); 5. k1.numaragir(); 6. k1.yazdir(); 7. } Program 4 NESNE Sınıf tasarımı kullanılarak üretilen yapıya nesne(obje) adı verilir. Program 5 deki sayi1 değiģkeni bir nesneyi temsil etmektedir. Program 5 in 14. satırında KarmasikSayi türünden bir nesne oluģturulmaktadır. Bu satırın ardından stack hafızasının temsili görüntüsü gerilmiģtir. 1. class KarmasikSayi 3. public: 4. int gercek; 5. int sanal; 6. void yazdir() 7. { cout<<gercek<<"+"<<sanal; 9. cout<<" i"<<endl; 10. } 11. }; 12. int main(int argc,char** argv) 13. { 14. KarmasikSayi sayi1; 15. sayi1.gercek = 12; 16. sayi1.sanal = 5; 17. sayi1.yazdir(); 1 cout<<&sayi1.gercek; 19. cout<<&sayi1.sanal; 20. } Program 5 sayi1.sanal 2008 xxxxx sayi1.gercek 2004 xxxxx 14.Satır Sonundaki Temsili Stack Görüntüsü sayi1.sanal sayi1.gercek Satır Sonundaki Temsili Stack Görüntüsü 12+5i

4 Nesneye ait olan değiģken veya fonksiyonlara eriģmek için, nesneyi temsil eden değiģken isminin sağına. operatörü konmalıdır. Program 5 e göz atacak olursak sayi1 nesnesinin sağına nokta operatörü konularak nesneye ait değiģkenlere eriģildiği gibi nesneye ait metotta çağrılmıģtır. (Nesne ). (Nesneye ait değiģken veya fonksiyon ismi) ÜYE FONKSİYONLAR Sınıfa ait olan fonksiyonlara üye fonksiyon veya metot adı verilir. Yapıları normal fonksiyonlardan farklı olduğundan, sınıfa ait olan fonksiyonları kastederken üye fonksiyon ( member function) veya metot(method) isimlerini kullanmamız çok önemlidir. Fonksiyonlar sınıflardan bağımsız bir yapıya sahiptir. YazılmıĢ bir fonksiyonu çağırmak için sadece ismini yazmamız yeterlidir. Metotlar ise ait oldukları nesneye bağlıdırlar. Nesne var olmadan çağrılamazlar. Program 6 daki yazdir metodunu ait olduğu KarmasikSayi sınıfından bir nesne oluģturmadan çağıramayız. Bu yüzden programın 14. satırında önce bir nesne oluģturulmuģ daha sonra oluģturulan bu nesne kullanılarak 17. satırda nesneye ait olan metot çağrılmıģtır. Programın 1satırında ise yazdir isimli bir fonksiyon(metot değil) çağrılmıģtır. Derleyici böyle bir fonksiyonun tanımlı olmadığını görünce hata verecektir. Metotlar, ait oldukları nesnenin bütün değiģkenlerine eriģebilmektedir. Yani metotlar için nesneye ait olan değiģkenler global değiģken gibi düģünülür. Bir metotun ait olduğu nesnin değiģkenlerine eriģmesine içerden erişim adı verilmektedir. Örneğin Program 6 daki yazdir fonksiyonu ait olduğu nesnenin gercek ve sanal değiģkenlerine satırda eriģmektedir. Nesnenin sağına nokta konarak değiģkenlerine eriģme iģleminede dışardan erişim adı verilmektedir.örneğin program 15.,16. ve 17. satırlarında dıģarıdan eriģim yapılmaktadır. 1. class KarmasikSayi 3. public: 4. int gercek; 5. int sanal; 6. void yazdir() 7. { cout<<gercek<<" "<<sanal; 9. } 10. }; KarmasikSayi sayi1; 14. sayi1.gercek = 12; 15. sayi1.sanal = 5; 16. sayi1.yazdir(); 17. yazdir(); 1 } Dışardan Erişim İçerden Erişim Program 6

5 Program 7 nin 21.satırında sayi1 nesnesine ait olan yazdır metodu çağrılırken, 23.satırda yazdır fonksiyon çağrılmıģtır. Bu ve sonraki bölümlerde fonksiyon ve metot dediğimizde aradaki farkı anlamanız çok önemli. 1. void yazdir() 3. cout<<"fonksiyon yazdir"; 4. cout<<endl; 5. } 6. class KarmasikSayi 7. { public: 9. int gercek; 10. int sanal; 11. void yazdir() cout<<gercek<<"+"<<sanal; 14. } 15. }; 16. int main(int argc,char** argv) 17. { 1 KarmasikSayi sayi1; 19. sayi1.gercek = 12; 20. sayi1.sanal = 5; 21. sayi1.yazdir(); 22. cout<<endl; 23. yazdir(); 24. } 12+5i fonksiyon yazdir Program 7 ERİŞİM BELİRTEÇLERİ DıĢardan ve içerden eriģim kavramlarından bahsettik. EriĢim belirteçleri nesneye ait olan elemanların dıģarıdan eriģilip eriģilmeyeceğini belirlerler. Örneğin Program 7 deki public eriģim belirteci altında tanımlaman bütün elemanların dıģarıdan eriģilebilieceğini belirtir. Var olan eriģim belirteçleri üç tanedir. Bunlar: public: Altında tanımlanan elemanlar dıģarıdan eriģime açıktır. private: Altında tanımlanan elemanlar dıģarıdan eriģime kapalıdır. protected: Altında tanımlanan elemanlar dıģarıdan eriģime kapalıdır. private ve protected belirteçlerinin detaylarına kalıtım konusunda değilicektir. Peki neden bu belirteçlere ihtiyaç duyulmuģtur. Bunun temel sebebi sınıfı tasarlayan kiģi (tasarımcı) ile sınıftan nesne oluģturup kullanacak olan kiģinin(müģteri) farklı kiģiler olmasıdır. Tasarımcı ürettiği sınıfın kimi verilerine müģterinin dokunmamasını isteyebilir. Bu dizüstü bilgisayarların sıkıca kapatılmıģ bir kutu ile bize gelmesine benzer. Üretici bilgisayara ait bir çok parçayı bizden gizlemiģtir. C++ açısından düģünürsek hepsi private tanımlanmıģtır. Kimi parçalar ise bilgisayarı kullanabilmemiz için eriģime açık tutulmuģtur. Örneğin klavye ve fare c++ dili açısından public tanımlanmıģtır.

6 Nesneye dayalı programlama yönteminin en önemli özelliklerinden birisi de az önce bahsettiğimiz bilgi saklama(information hiding) yöntemidir. Program 8 deki KarmasikSayi sınıfının iki değiģkeni private olarak tanımlanmıģtır. Yani bu iki değiģkene dıģarıdan eriģilemez. Eğer ki program derlenirse derleyici programın 15. ve 16. Satırındaki komutları hatalı bulacaktır ( Derleyicinin verdiği hatayı incelemek sizler için faydalı olacaktır). Yazdir metodu public eriģim belirtecinin altında yazıldığı için dıģarıdan eriģime açıktır. Bu sebeple 17.satırın iģletilmesine bir hata söz konusu olmaz. 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. void yazdir() { 9. cout<<gercek<<"+"<<sanal; 10. } 11. }; 12. int main(int argc,char** argv) 13. { 14. KarmasikSayi sayi1; 15. sayi1.gercek = 12; 16. sayi1.sanal = 5; 17. sayi1.yazdir(); 1 } Program 8 1. class KarmasikSayi int gercek; 5. int sanal; 6. public: 7. void yazdir() { 9. cout<<gercek<<"+"<<sanal; 10. } 11. }; 12. int main(int argc,char** argv) 13. { 14. KarmasikSayi sayi1; 15. sayi1.gercek = 12; 16. sayi1.sanal = 5; 17. sayi1.yazdir(); 1 } Program 9 Programdan da görüleceği gibi eriģim belirteçleri altlarındaki değiģkenleri etkilemektedir. 3.satırda yazılan private eriģim belirteci 6.satırdaki public eriģim belirtecine kadar aktif olmaktadır. 6.satırdan sonra public eriģim belirteci aktif olur. EriĢim belirteçleri yazıldıktan sonra : simgesinin yazılması gerekir. Derleyici bu sayede private yazısının bir eriģim belirteci olduğunu anlayacaktır. EriĢim belirtecenin kullanılmadığı değiģkenler için varsayılan(default) eriģim belirteci private dir. (Varsayılan(default) kelimesi programcılık hayatınız boyunca karģınıza çok çıkacaktır.) Program 9 da ki gercek ve sanal değiģkenlerinin bir eriģim belirteci bulunmamaktadır. C++ derleyicisi bu durumda bizim yerimize gercek ve sanal değiģkenlerini private yapmaktadır.

7 SINIF TASARLAMA Sınıflar gerçek dünya nesnelerini temsil etmek için kullanılacaktır. Örneğin bir kütüphane bilgi sistemini düģünelim. Kütüphanede kitaplar ve kitabı alacak olan öğrenciler olacaktır. Kütüphane yönetimi için yazacağımız programda kitapları ve öğrencileri temsil etmesi için sınıflar geliģtirilemelidir. Kitap sınıfını düģünelim. Kitap hakkında ne bilgilere ihtiyacımız olacak hemen yazabiliriz. Kitap adı Yazar ISBN numarası Basım yılı.. Sınıf içerisinde programda kullanacağımız veriler olmalı. Örneğin kitabın ağırlığı gerekli bir veri olmadığı için sınıf içerisinde bulunması da gerekmez. Aynı Ģekilde öğrenci içinde bir tasarım yapılabilir. Adı Soyadı Numarası Üzerindeki kitap sayısı Öğrencinin yaģı,boyu veya ağırlığı ilgimizi çekmediğinden sınıfımız içerisinde de yer almayacaktır. Eğerki sağlık sistemi tasarlayacak olsaydık bu bilgilere de ihtiyacımız olabilirdi. 1. class Kitap 4. char adi[100]; 5. char yazar[100]; 6. int ISBN; 7. int basimyili; }; Program class Ogrenci 4. char adi[100]; 5. char soyadi[100]; 6. int numara; 7. int kitapsayisi; }; Program 11 ġuan için sınıflarımıza ait olan değiģkenleri tanımladık. Simdi de sınıfımızın yapacağı iģleri tanımlamamız gerekiyor. En temel iģlem olarak Kitap ve Öğrenci sınıfının durumlarını ekrana çıkartacak olan bir fonksiyon yazabiliriz. Fonksiyonumuzun ismi yazdır olsun. Yazacağımız fonksiyonlar ait oldukları nesnenin bütün elemanlarını ekrana çıkartacaktır.

8 1. class Kitap 4. char adi[100]; 5. char yazar[100]; 6. int ISBN; 7. int basimyili; 9. void yazdir() 10. { 11. cout<<adi<<" "<<yazar<<" "; 12. cout<<isbn<<" "<<basimyili; 13. } 14. }; Program class Ogrenci 4. char adi[100]; 5. char soyadi[100]; 6. int numara; 7. int kitapsayisi; 9. void yazdir() 10. { 11. cout<<adi<<" "<<yazar<<" "; 12. cout<<isbn<<" "<<basimyili; 13. } 14. }; Program 12 Kitap ve öğrenci verilerini dıģardan girmemizi sağlayacak olan bir fonksiyon da tasarlayacabiliriz. Fonksiyonumuzun ismi verigir olabilir. Fonksiyonların çağrılması Program 13 ve Program 14 de gösterilmektedir. 1. class Kitap 4. char adi[100]; 5. char yazar[100]; 6. int ISBN; 7. int basimyili; 9. void yazdir() 10. { 11. cout<<adi<<" "<<yazar<<" "; 12. cout<<isbn<<" "<<basimyili; 13. } void verigir() 16. { 17. cin>>adi>>yazar; 1 cin>>isbn>>basimyili; 19. } 20. }; int main(int argc,char** argv) 23. { 24. Kitap k1; k1.verigir(); 27. k1.yazdir(); 2 } Program class Ogrenci 4. char adi[100]; 5. char soyadi[100]; 6. int numara; 7. int kitapsayisi; 9. void yazdir() 10. { 11. cout<<adi<<" "<<yazar<<" "; 12. cout<<isbn<<" "<<basimyili; 13. } void verigir() 16. { 17. cin>>adi>>yazar; 1 cin>>numara>>kitapsayisi; 19. } 20. }; int main(int argc,char** argv) 23. { 24. Ogrenci o1; o1.verigir(); 27. o1.yazdir(); 2 } Program 14

9 KURUCU METOT Bir nesne oluģturulduğunda otomatik olarak çağrılan bir fonksiyon bulunmaktadır. Bu metot kurucu metot. Kurucu metot sınıf ile aynı isme sahiptir ve bir dönüģ değeri yoktur. Program 15 in 21.satırında KarmasikSayi sınıfından bir nesne oluģturulmaktadır. Nesneyi oluģturan derleyici sınıf ismi ile aynı isme sahip olan kurucu metodu otomatik olarak çağıracaktır. Ekran çıktısına bakacak olursak öncelikle kurucu metodun çağrıldığını göreceğiz. 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. KarmasikSayi() { 9. gercek = 5; 10. sanal = 10; 11. cout<<"kurucu"<<endl; 12. } 13. void yazdir() 14. { 15. cout<<gercek<<"+"<<sanal; 16. } 17. }; 1 int main(int argc,char** argv) 20. { 21. KarmasikSayi sayi1; sayi1.yazdir(); 24. } Program 15 kurucu 5+10i Kurucu metot public eriģim belirteci altına yazıldığına dikkat etmeliyiz. Eğerki kurucu private altına yazılmıģ olsaydı KarmasikSayi sınıfından bir nesne oluģturamazdık. Bir nesne oluģturduğumuzda kurucu metodun çağrılmasıda dıģarıdan eriģim gibi düģünülmelidir. Kurucu private olursa derleyici bu metodu çağıramayacağından hata verecektir. Kimi özel durumlarda kurucu metot private olabilir. Ama Ģuan için kurucu metotları daima public yapacağız. Sınıfımızda kurucu metot tanımlamadığımızda derleyici bizim yerimize gövdesi olmayan bir metot tanımlayacaktır. Sınıftan bir nesne oluģturduğumuzda derleyici her zaman yapacağı gibi kurucu metodu çağıracaktır. Fakat bu sefer bizim değil derleyicinin bizim yerimize tanımladığı gövdesi olmayan(yani hiçbir iģ yapmayan) metot çağrılacaktır.

10 PARAMETRELİ KURUCU METOT Kurucu metotlar parametre alabilmektedir. Program 16 da kurucu metot iki parametre almaktadır. Kurucu metodu derleyici çağırdığından parametreleri bir Ģekilde derleyiciye vermemiz gerekir. Programın 21.satırında nesne oluģturulurken kurucu metodun ihtiyaç duyduğu parametrelerde verilmektedir. 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. KarmasikSayi(int g,int s) { 9. gercek = g; 10. sanal = s; 11. cout<<"kurucu"<<endl; 12. } 13. void yazdir() 14. { 15. cout<<gercek<<"+"<<sanal; 16. } 17. }; 1 int main(int argc,char** argv) 20. { 21. KarmasikSayi sayi1(2,3); sayi1.yazdir(); 24. } Program 16 kurucu 2+3i Program 17 nin 5. satırında kurucu metoda üç parametre verilmektedir. Derleyici otomatik olarak sınıf tanımı içeirisinde üç parametresi olan bir kurucu metot arayacaktır. Böyle bir fonksiyon olmadığından hata verecektir. Aynı Ģekilde programın 7. Satırında parametresi olmayan bir kurucu metot arayacaktır. Derleyici böyle bir metodu bulamadığından yine hata verecektir. Burada dikkat edilmesi gereken eğer bir tane kurucu oluģturursak derleyici bizim yerimize herhangi bir kurucu oluģturmayacaktır. 3. KarmasikSayi sayi1(2,3); KarmasikSayi sayi2(2,3,4); KarmasikSayi sayi3; 9. } Program 17

11 Genelde parametreli kurucu fonksiyon tanımlanırken beraberinde hiç parametre almayan bir kurucu da tanımlanır. Burada amaç programcıların (müģteri) parametre vermeden de nesne oluģturulmasına imkan tanımaktır. Program 17 e göz atarsak gövdesi boģ olan parametresiz bir kurucu metot tanımlanmıģtır. Bu sayede programın 26.satırındaki komut hata vermeyecektir. 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. KarmasikSayi() { 9. } 10. KarmasikSayi(int g,int s) 11. { 12. gercek = g; 13. sanal = s; 14. cout<<"kurucu"<<endl; 15. } 16. void yazdir() 17. { 1 cout<<gercek<<"+"<<sanal; 20. } 21. }; 22. int main(int argc,char** argv) 23. { 24. KarmasikSayi sayi1(2,3); KarmasikSayi sayi2; 27. } Program 17 Buradan çıkartacağımız diğer bir sonuçta metotların aģırı yüklenebileceğidir. Kurucu metotlar dıģarıdan çağrılamazlar. Program 18 in 5. ve 7. satırında komutları derleyici hata olarak görecektir. 3. KarmasikSayi sayi1; sayi1.karmasiksayi(2,3); sayi1.karmasiksayi(); 9. } Program 18

12 STACK VE NESNE Ġsmi olan her değiģkenin stack hafızasında tutulduğundan bahsetmiģtik. Aynı Ģekilde ismi olan nesnelerde stack alanına yerleģtirilecektir. Ġsmi olandan kasıt nesnenin bir isim ile temsil edilebilmesidir. Program 19 un iģletilmesi sırasında stack hafızasındaki değiģim aģağıda gösterilmektedir. 4.satırda tanımlanan sayi1 adlı nesne 6. satırda yok edilmektedir. Aynı Ģekilde 9.satırda tanımlanan sayi2 nesnesi 11.satırda yok edilmektedir. 3. { 4. KarmasikSayi sayi1; 5. cout<<"ilk nesne"<<endl; 6. } 7. int a = 12; int b = 44; 9. KarmasikSayi sayi2; } sayi1.sanal 2008 xxxxx sayi1.gercek 2004 xxxxx 4.Satır Sonundaki Temsili Stack Görüntüsü Program a b Satır Sonundaki Temsili Stack Görüntüsü xxxxx 2004 xxxxx 6.Satır Sonundaki Temsili Stack Görüntüsü 2012 a b sayi2.sanal 2000 xxxxx sayi2.gercek 1996 xxxxx 9.Satır Sonundaki Temsili Stack Görüntüsü

13 YOK EDİCİ METOT Nesneler yok edildiğinde derleyici otomatik olarak yok edici adı verilen metotları çağırmaktadır. Kurucu metotlar gibi yok edici metotlarda sınıf ile aynı isme sahiptir. Yok edici fonksiyonlar isimlerinin önüne ~ simgesi almaktadır. 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. KarmasikSayi() { 9. gercek = 10; 10. sanal = 20; 11. cout<<""<<endl; 12. } 13. ~KarmasikSayi() 14. { 15. cout<<"yok edici "<<endl; 16. } 17. void yazdir() 1 { 20. cout<<gercek<<"+"<<sanal; 21. } 22. }; 23. int main(int argc,char** argv) 24. { 25. { 26. KarmasikSayi sayi1; 27. } 2 int a = 33; 29. int b = 44; 30. KarmasikSayi sayi2; 31. } sayi1.sanal sayi1.gercek Satır Sonundaki Temsili Stack Görüntüsü yok edici 27.Satır Sonundaki a b Satır Sonundaki Temsili Stack Görüntüsü Program 20 yok edici yok edici 31.Satır Sonundaki a b sayi2.sanal 2000 xxxxx sayi2.gercek 1996 xxxxx 30.Satır Sonundaki Temsili Stack Görüntüsü

14 OluĢturduğumuz nesneler heap hafızasından alan almıģ olabilirler. Nesne yok edildiğinde heapden alınan alanında serbest bırakılması gerekir. Yok edici fonksiyonların en önemli görevlerinden biriside budur. Program 21 deki Yazı sınıfından bir nesne oluģturulduğunda heap hafızasından 100 baytlık bir alan alınıyor. Programın 23.satırındaki komut iģletildiğinde stack ve heap hafızasının alacağı görüntü aģağıda verilmiģtir. y1 nesnesi yok edilğinde otomatik olarak nesnenin yok edici fonksiyonu çağrılmaktadır. Yok edici fonksiyonda heap hafızasından alınan alanı serbest bırakmaktadır. 1. class Yazi 4. char *pbuff; 5. public: 6. Yazi() 7. { pbuff = new char[100]; 9. } 10. ~Yazi() 11. { 12. delete[] pbuff; 13. } 14. }; 15. int main(int argc,char** argv) 16. { 17. { 1 Yazi y1; 20. } 21. int a = 33; 22. Yazi y2; 23. int b = 43; 24. } Program xxxxx a y2.pbuff b Satır Sonundaki Temsili Stack ve Heap Görüntüsü HEAP HE BOŞ AP 100 bayt y1.pbuff Satır Sonundaki Temsili Stack ve Heap Görüntüsü 2008 xxxxx Satır Sonundaki Temsili Stack ve Heap Görüntüsü 2008 xxxxx a Satır Sonundaki Temsili Stack ve Heap Görüntüsü HEAP HE BOŞ AP 100 bayt HEAP HE BOŞ AP BOŞ HEAP HE BOŞ AP BOŞ

15 Yok edici metot nesnenin sistemden aldığı kaynakları serbest bırakmakla görevlidir. Kaynak genelde heap alanıdır. Fakat kimi zaman dosya veya thread gibi kaynaklarıda sisteme iade edilebilir(serbest bırakma). Sınıfımızı tasarlarken sistemden alınan kaynaklarında takipçisi olmamız gerekir. C++ dili sistem kaynalarının kullanımında programcıyı diğer yüksek seviyeli dillere göre daha özgür bırakmaktadır. Bu özgürlük beraberinde programcının kaynakları kullanamaması tehlikesini de getirmektedir. METOTLARIN SINIF DIŞINDA TANIMLANMASI Metotlar sınıfın gövdesi dıģında da yazılabilmektedir. Aslında çoğu zaman bu teknik kullanılmaktadır. Metodu sınıf içerisinde tanımladığımızda derleyici sınıf ile metot arasındaki bağı rahatlıkla kurabiliyordu. Fakat metodu sınıfın dıģında yazdığımızda derleyiciye metodun hangi sınıfa ait olduğunu belirtilmesi gerekir. Metodların Sınıf Ġçerisinde Yazılması 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. KarmasikSayi() { 9. gercek = 10; 10. sanal = 20; 11. cout<<""<<endl; 12. } 13. ~KarmasikSayi() 14. { 15. cout<<"yok edici "<<endl; 16. } 17. void yazdir() 1 { 20. cout<<gercek<<"+"<<sanal<<endl; 21. } 22. }; Program 21 Metodların Sınıf DıĢında Yazılması 1. class KarmasikSayi 4. int gercek; 5. int sanal; 6. public: 7. KarmasikSayi(); ~KarmasikSayi(); 9. void yazdir(); 10. }; KarmasikSayi::KarmasikSayi() 14. { 15. gercek = 10; 16. sanal = 20; 17. cout<<""<<endl; 1 } 20. KarmasikSayi::~KarmasikSayi() 21. { 22. cout<<"yok edici "<<endl; 23. } 24. void KarmasikSayi::~yazdir() 25. { 26. cout<<gercek<<"+"<<sanal; 27. } Program 22

16 Metotların hanfi sınıfa ait olduklarını belirmek için :: operatörü kullanılmaktadır. Metotun gövdesi yazılırken öncelikle dönüģ türleri yazılıp ardından ait oldukları sınıf ismi ile :: operatörü yazılmaktadır. Daha sonra fonksiyon ismi parametreleri ile beraber yazılır. Dönüş Türü (Sınıf İsmi ) :: (metot ismi ve parametreler) İŞARETÇİ VE NESNE ĠĢaretçiler nesne göstermek içinde kullanılabilirler. ĠĢaretçiler ile gösterilen nesnenin elemanlarına eriģmek için. operatörü yerine -> operatörü kullanılmaktadır. Program 23 ün 5.satırında tanımlanan p iģaretçisine sayi1 nesnesinin adresi atanmaktadır. Programın 3. Satırında oluģturulan nesnenin yazdır fonksiyonunu sayi1 ismi ile çağırabileceğimiz gibi p iģaretçisini kullanarak da çağırabiliriz( 9.Satır). p ĠĢaretçinin soluna * operatörünü yerleģtirdiğimizde derleyici gösterilen nesnesiyi kastettiğimizi anlamaktadır. Programın 11.satırında bu teknik kullanılarak sayi1 nesnesine ait yazdir metodu p iģaretçisi kullanılarak çağrılmıģtır. 3. KarmasikSayi sayi1; KarmasikSayi* p =&sayi1; sayi1.yazdir(); 9. p->yazdir(); (*p).yazdir(); 12. } Program i 10+20i 10+20i Yok edici sayi1.sanal sayi1.gercek p İşaretçi -> (Nesne elemanı) (*İşaretçi). (Nesne elemanı) 5.Satır Sonundaki Temsili Stack Görüntüsü

17 HEAP VE NESNE (DİNAMİK NESNE OLUŞTURMA) Nesneler stack hafızasında oluģturulabileceği gibi heap alanında da oluģturulabilirler. Yine new operatörü kullanılarak bu iģlem halledilebilir. Program 24 ün 5.satırında heap alanında bir nesne oluģturulmakta ve oluģturulan nesnenin baģlangıç adresi p iģaretçisine atanmaktadır. Ekran çıktısına dikkat edecek olursak yok edici fonksiyonun çağrılmadığını görürüz. Nesne heap alanında oluģturulduğu için nesnenin yok edilmesi de programcıya aittir. Heap alanında oluģturduğumuz diğer değiģkenler gibi nesneyi de delete operatörü ile yok etmeliyiz. Program 25 de oluģturulan nesne 9.satırda yok edilmektedir(serbest bırakılmakta). 3. KarmasikSayi* p = NULL; p = new KarmasikSayi p->yazdir(); } Program 24 p xxxxx 5.Satır Sonundaki Temsili Stack ve Heap Görüntüsü HEAP HE BOŞ AP sanal 20 gercek i 3. KarmasikSayi* p = NULL; p = new KarmasikSayi p->yazdir(); 9. delete p p = 0; 12. } Program 25 p xxxxx 11.Satır Sonundaki Temsili Stack ve Heap Görüntüsü HEAP HE BOŞ AP BOŞ 10+20i yok edici

18 Heap alanında nesne oluģturmaya dinamik nesne oluģturmak denir. Biz de ilerleyen bölümler de bu tabiri kullanacağız. Nesneler genelde heap hafızasında oluģturulmaktadır.örneğin Java ve C# dilleri bütün nesnelerini heap alanında oluģturmaktadır. Stack hafızası faydalı olmasına rağmen programcının her isteğine karģılık verememektedir. Özellikle yönetimi konusunda programcının hareket alanını sınırlandırmaktadır. Meslek hayatınızın ilerleyen safhalarında kullanacağınız bir çok programlama tekniği stack hafızasında gerçekleģtirilememektedir. Bu sebepten dolayı ilerleyen bölümlerde nesnelerimi büyük çoğunlukla dinamik olarak oluģturacağız. Tabi ki nesnemizi yok ederkende delete operatörünü doğru yerde kullanmayı unutmayacağız. NESNE ATAMA DeğiĢkenler atama iģlemine tabi tutulabildiği gibi nesnelerde kendi aralarında atama iģlemi yapabilmektedir Örneğin Program 26 da oluģturulan sayi1 ve sayi2 nesnelerini inceleyelim. 7.satırdaki atamadan önce iki nesnenin hafızadaki görüntüsü verilmiģtir. atamadan sonra sayi1 nesnesine ait olan değiģkenlerin sayi2 değiģkenleri ile aynı değere sahip olduğu görülecektir. Buradan atama iģlemi ile eģitliğin sağındaki nesnenin bütün değiģkenlerinin, eģitliğin solundaki atanan nesneye kopyaladandığını çıkartabiliriz. 3. KarmasikSayi sayi1; KarmasikSayi sayi2(33,44); sayi1=sayi2; 9. sayi1.yazdir(); sayi2.yazdir(); 12. } 33+44i 33+44i yok edici yok edici Program 26 sayi1.sanal sayi1.gercek sayi2.sanal sayi2.gercek Satır Sonundaki Temsili Stack Görüntüsü sayi1.sanal sayi1.gercek sayi2.sanal sayi2.gercek Satır Sonundaki Temsili Stack Görüntüsü

19 DİKKAT EDİLMESİ GEREKENLER 1. Bir nesneyi gösterecek olan işaretçi bir nesne değildir Program 27 nin 3. Satırında KarmasikSayi türünden bir nesne gösterecek p adlı bir iģaretçi oluģturulmuģtur. ĠĢaretçiler gösterdiği ne olursa olsun 4 bytelık alan kaplayan ve sadece sayı tutan değiģkenlerdir. Eğer 3.satır sonundaki temsili stack görüntüsüne bakacak olursak buradan 3.satırda bir KarmasikSayi nesnesinin oluģturulmadığını görebiliriz. Buna ek olarak iģaretçi tanımlandığında bir değer atanmadığı için ilk değeri yerleģtirildiği hafıza alanında daha önceden var olan sayı olacaktır. Programın 5.satırında ise p iģaretçisinin gösterdiği (her hangi bir adres olabilir) nesne için yazdir metodu çağrılıyor. Bu adreste bir nesne olmadığı için yapılan iģlem hatalıdır. Yapılan iģlemde bir grammer hatası olmadığından derleyici hata vermeyecektir. Fakat program çalıģıp 5.satıra geldiğinde hatalı bir sonuç ile karģılacağımız aģikardır. 3. KarmasikSayi* p; p->yazdir(); 6. } Program 27 p 2008???? 2004???? 2000???? 1996???? 3.Satır Sonundaki Temsili Stack Görüntüsü Program 28 de hatamızı düzeltiyor ve heap alanında bir KarmasikSayi nesnesi oluģtuyoruz. OluĢan nesnenin adresi kurucu metot çağrıldıktan sonra p iģaretçisine atanmaktadır. Ekran çıktısına bakacak olursak nesne oluģturma iģleminin 6. Satırda gerçekleģtiğini görebiliriz. Çünkü ekrana öncelikle 4. satırdaki mesaj çıkmıģtır. 3. KarmasikSayi* p; 4. cout<<"atama yapilmadi"<<endl; p= new KarmasikSayi(22,33); 7. p->yazdir(); } p ???? HEAP HE AP BOŞ Program 28 atama yapilmadi 22+33i 6.Satır Sonundaki Temsili Stack ve Heap Görüntüsü İşaretçi nesne değildir. sanal 22 gercek 33

20 2. Dinamik nesneleri silmek programcının görevidir. Dinamik olarak oluģturulan nesnelerin yok edilmesi (serbest bırakılması) programcının görevidir. Program 28 deki kodu inceleyecek olursak bir nesne dinamik olarak oluģturulmuģ fakat serbest bırakılmamıģtır. Dolayısıyla nesneye ait olan kurucunun çağrılmasına ragmen yok edici çağrılmamıģtır. Bu hata program 29 da düzeltilmiģtir. 3. KarmasikSayi* p; 4. cout<<"atama yapilmadi"<<endl; p= new KarmasikSayi(22,33); 7. p->yazdir(); delete p; 9. } Program 29 Nesne silindi atama yapilmadi 22+33i Yok edici Program 30 un 3.satırında KarmasikSayi türünden bir nesne dinamik olarak oluģturuluyor. Fakat oluģturulan nesnenin adresi hiç bir iģaretçide saklanmadığı için nesneyi serbest bırakma Ģansımızda olmayacaktır. 3. new KarmasikSayi(22,33); } Program 30 Program 31 de nesne dinamik olarak oluģturduktan sonra gelen adres kullanılarak nesnenin yazdır metodu çağrılıyor. 3. (new KarmasikSayi(22,33))->yazdir(); } Program i

Bir hafıza hücresinin adres bilgisini tutmaya yarayan değiģkenlere iģaretçi adı verilir. ĠĢaretçiler aģağıdaki gibi tanımlanırlar.

Bir hafıza hücresinin adres bilgisini tutmaya yarayan değiģkenlere iģaretçi adı verilir. ĠĢaretçiler aģağıdaki gibi tanımlanırlar. ĠġARETÇĠLER Bir hafıza hücresinin adres bilgisini tutmaya yarayan değiģkenlere iģaretçi adı verilir. ĠĢaretçiler aģağıdaki gibi tanımlanırlar. ĠĢaretçi türü ĠĢaretçi değiģkeninin ismi int * p ĠĢaretçi

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ı

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ı

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ı

Nesneye Yönelik Programlama (OOP) 7.Hafta

Nesneye Yönelik Programlama (OOP) 7.Hafta Nesneye Yönelik Programlama (OOP) 7.Hafta Örnek : Yapılar vs Sınıflar Yapılar ve sınıflar büyük oranda benzerlik gösterirler. Yapıların sakladığı veriler her zaman public yani erişime açıktır. Sınıflarda

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ı

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ı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2) BLM-112 PROGRAMLAMA DİLLERİ II Ders-3 İşaretçiler (Pointer) (Kısım-2) Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Dinamik Bellek Yönetimi Bir program çalıştırıldığında

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ı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

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ı

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ı

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ı

Örnek1: #include <iostream> #include <string> using namespace std;

Örnek1: #include <iostream> #include <string> using namespace std; BTEP243 Ders 5 Nesne İşaretçileri İşaretçiler, bildiğiniz gibi bir değişkenin bellekte tutuldukları yerin adresini tutarlar. Nesne işareçtileri konusundaki işaretçiler, nesnelerin bellek üzerinde bulundukları

Detaylı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

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ı

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ı

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ı

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ı

Nesneye Dayalı Programlama

Nesneye Dayalı Programlama SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 4 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim"

Detaylı

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: FORTRAN (FORmula TRANslation) Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: 1 2...5 6 7...72 73...80 A B C D E A Bölgesi: (1. kolon) B Bölgesi: (2-5

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ı

Pointers (İşaretçiler)

Pointers (İşaretçiler) Pointers (İşaretçiler) Pointers (İşaretçiler) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ile ilişkilidir. Donanımsal açıdan

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ı

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ı

C# Metotlar ve Metot Tanımlama

C# Metotlar ve Metot Tanımlama C# Metotlar ve Metot Tanımlama Metot Kavramı : Metotlar bir program içerisinde aynı işi gerçekleştiren satırları belirli düzende sadece bir kez oluşturarak gerektiğinde tekrar tekrar kullanabilmemizi sağlayan

Detaylı

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel

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ı

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1 Görsel Programlama DERS 02 Görsel Programlama - Ders02/ 1 Kodun Tekrar Kullanımı ve Kalıtım(Inheritance) Nesneye yönelik programlamanın diğer programlama paradigmalarına karşı bir avantajı kodun yeniden

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar 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

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA SANAL FONKSİYONLAR VE ÇOK BİÇİMLİLİK Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü GİRİŞ C++, hem derleyici-zamanlı hem de çalışmazamanlı çok biçimliliği destekler.

Detaylı

Program AkıĢ Kontrol Yapıları

Program AkıĢ Kontrol Yapıları C PROGRAMLAMA Program AkıĢ Kontrol Yapıları Normal Ģartlarda C dilinde bir programın çalıģması, komutların yukarıdan aģağıya doğru ve sırasıyla iģletilmesiyle gerçekleģtirilir. Ancak bazen problemin çözümü,

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ı

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ı

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ı

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ı

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ı

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ı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 14: Çoklu İşlev İçerik Çoklu İşlevin Gerçekleştirilmesi Saf Sanal Fonksiyonlar ve Soyut Sınıflar Sanal Yıkıcı Fonksiyonlar Statik ve Dinamik Bağlama 2 Çoklu İşlev

Detaylı

Veri Yapıları Lab Notları 1

Veri Yapıları Lab Notları 1 C++ Programlama Dili Veri Yapıları Lab Notları 1 C++ dili, hızlı ve düşük seviye özelliklere erişmek isteyen uygulamaların yazılması için popüler bir dildir. C programlama diline birçok ekstra özellik

Detaylı

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR METOTLAR İÇİNDEKİLER Metotlar Metot Oluşturma ve Kullanma Metot Parametresi Olarak Diziler Değer ve Referans Parametreleri Metotların Aşırı Yüklenmesi Kendini Çağırabilen Metotlar NESNE TABANLI PROGRAMLAMA

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ı

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ı

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ı

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ı

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading)

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading) Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading) C++ da hazır olarak var olan operatörlere (+, -, *, /,!,

Detaylı

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

7- Turbo Pascal Programlamada Alt Programlar (Procedure) 7- Turbo Pascal Programlamada Alt Programlar (Procedure) Alt programların ana programda yapacağımız ek işlevleri üstlendiğinden daha önceki bölümde bahsetmiştik. Alt programlar genelde ana program bloğu

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ı

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ı

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ı

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ı

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ı

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

Detaylı

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 12: Operatör Yükleme İçerik 12.1 Operatör Yükleme Fonksiyon Tanımı 12.2 Üye Olmayan Fonksiyonlar 12.3 Operatör Yüklemede Arkadas Fonksiyon Kullanımı

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ı

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

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ı

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma C Programlama Dr. Serkan DİŞLİTAŞ 7.1. Metot Kavramı Programlama dillerinde bütün kod satırlarının

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ı

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir. Sınıflar (Classes) Çözülmesi istenene problemi çeşitli parçalara ayırıp her bir parça arasındaki ilişkiyi gerçeğine uygun bir şekilde belirleme tekniğine nesne yönelimi denir. Bu parçalar arasındaki ilişkiyi

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ı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon

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ı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

Bigisayar Programlama

Bigisayar Programlama Bigisayar Programlama (GÜZ 2015) DERS-02: C de Programlamaya Giriş Yrd. Doç Dr. Yakup EMÜL Cumhuriyet Üniv., Teknoloji Fakültesi Yazılım Mühendisliği Bölümü yakupemul@cumhuriyet.edu.tr Ofis Saatleri :

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ Assembly Dili Assembly programlama dili, kullanılan bilgisayar

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Yapılar ve Birlikler enum Deyimi

Detaylı

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 2 hafta ÖDEV NO: 5 1- BANKA

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ı

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

Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan

Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan 2 C Programlarının Yapısı Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan yapıtaşlarıdır. Bir C programının,

Detaylı

Algoritma ve Programlama II Dersi 3.ÖDEVĠ

Algoritma ve Programlama II Dersi 3.ÖDEVĠ Algoritma ve Programlama II Dersi 3.ÖDEVĠ 1. 3 boyutlu uzayda koordinatları dıģarıdan girilen bir üçgenin normalini ve açılarını bulan programı yazınız. 3 boyutlu uzaydaki bir V vektörünün x,y ve z koordinatları

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme İşaretçi Kavramı

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ı

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ı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 6: Diziler İçerik Diziler Dizi Elemanlarına İlk Atama Diziler ve Fonksiyonlar İki Boyutlu Diziler İki Boyutlu Dizi Tanımı İki Boyutlu Dizi Elemanlarına Erişim

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 08.03.2011 1 Çok Boyutlu Diziler Önceki derslerimizde dizileri görmüştük. Kısaca özetleyecek olursak, belirlediğimiz sayıda değişkeni bir sıra içinde tutmamız, diziler sayesinde gerçekleşiyordu.

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ı

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı

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ı

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ı

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

NESNE MODELLERİ : SINIFLAR

NESNE MODELLERİ : SINIFLAR NESNE MODELLERİ : SINIFLAR Bu bölümünden itibaren C++ programlama dilinin nesneye dayalı programlamaya yönelik özellikleri tanıtılacaktır. Bu özellikler yazılımların kalitesini yükseltmek amacıyla geliştirilmişlerdir.

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ı

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ı

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

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 5: Fonksiyonlar İçerik Standart Kütüphane Fonksiyonları Kullanıcı Tarafından Tanımlanan Fonksiyonlar Fonksiyon Tanımı Fonksiyon Prototipi void Fonksiyonları Parametreli

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ı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Dosya İşlemleri (Rastgele Erişim)

Detaylı

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b. Diziler Dizi Nedir Ortak özelliğe sahip birden fazla bilginin oluşturduğu bütün bilgi kümelerine veya hafızada art arda sıralanmış aynı türden verilerin oluşturduğu yapıya dizi denir. Kısaca; Bellekte

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ı

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end 4 Metotlar Hemen her programlama dilinde var olan metot kavramı Ruby için de aynıdır. Bazı kaynaklarda metot terimi yerine fonksiyon terimi kullanılır. Bu kitapta iki terimi eşanlamlı kullanacağız. Ruby

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ı

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 4: Diziler Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları

Detaylı

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

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir. www.csharpturk.net Türkiye nin C# Okulu Yazar Yunus Özen Eposta yunus@yunus.gen.tr Tarih 08.04.2006 Web http://www.yunusgen.tr ARİTMETİK OPERATÖRLER VE KULLANIM ŞEKİLLERİ Bilgisayarlar yapıları gereği,

Detaylı

Java Class Yapısında Finalize Metotunun Kullanımı

Java Class Yapısında Finalize Metotunun Kullanımı Java'da finalize() Metodu: Java dili kullanılmayan nesneleri silmek için arka planda çalışan bir sisteme sahiptir. Bu yüzden C++ gibi dillerde dinamik nesne tanımlarında mutlaka yer alması gereken nesneyi

Detaylı