C++ İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu
|
|
- Derya Konca
- 7 yıl önce
- İzleme sayısı:
Transkript
1 C++ ve Nesne Programlama'ya Giriş İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu Kaya Oğuz Şubat/Mart 2005
2 Tamamlanmamış Belge İçin Genel Açıklamalar, Önsöz, İçerik vs. Bu belge, henüz tamam değildir! Ama tahmini olarak sizi bir ay kadar idare edecek kadar bilgi içeriyor tahminimce. Şubat'ta yazmaya başlamıştım ama uzun süre elleyemedim. O yüzden, her ne kadar 18 sayfa kadar da (16 aslında, iki sayfadan biri bu, diğeri kapak :P ) olsa ben İleri C++ konuları hakkında yazıları bitirene kadar yararlanın istedim. İlk olanı söylediğimize göre, ikincisine gelelim. Buradaki bilgilerin doğru olması gibi bir koşul yok. Bunlar sadece bir öğrencinin anladıklarını yazması olarak düşünülmeli. Mutlaka ders notlarını ve sağlam bir C++ kitabınızı edinin! Buradaki anlatımlar biraz referans niteliğindedir. Hızlıca C ile C++'ın farkları, hızlı bir Sınıflar (Class) ve onların bazı özellikleri anlatılmıştır. Elimdeki plana göre 3) C++ İleri Konular a) Operator Overloading b) Inheritance c) Polymorphism d) Templates e) Streams f) Exceptions g) File Processing 4) C++ ile Veri Yapıları a) Linked List b) Stack c) Queue d) Tree şeklinde anlatacağım daha detaylı bir çok konu vardır! Veri yapılarına ne kadar değinebilirim, onu bile bilmiyorum. Belki sadece Linked List ile bırakırım. Çünkü diğerleri artık Data Structures and Algorithms dersine denk gelen konular. Ama planımı bu şekilde yapmışım bir gazla yarıyıl tatilinde. Sanırsam her istediğimi yazdım. Dediğim gibi, doğrulukları kontrol edilmedi. Kodlar linux üzerinde yazıldı ve Windows bi makinede ne kadar calisir bilmiyorum. Geçen sefer <stdlib.h> eklemeniz gerekiyordu, ama C++ ile neler gerekio, neler gerekmio bana iletin, ona göre onuda buraya ekleyeyim. İlginiz için teşekkürler, Kaya Oğuz
3 A GİRİŞ Gelişen bilgisayar teknolojileri ile istekler ve problemler giderek zorlaşmaya başladı ve artık sorunlara çözüm başka yollardan aranmaya başlandı. Nesne yönelimli programlama tüm sorunlara çözüm değilsede günümüzde en çok tercih edilen çözümlerden biri. C++ ilk olarak C with Classes olarak düşünüldü, daha sonra C'deki increment operatörü ile adını aldı. Nesne yönelimli programlamayı ilerleyen bölümlerde detaylı olarak ele alacağımız için bu ilk bölümde C ve C++'ın benzer yönlerini, yani nesnesiz, top-down programlama içeren bölümlerini inceleyeceğiz. Bunlara kontrol mekanizmaları, fonksiyonlar, diziler, pointerlar gibi konularu dahil edebiliriz. Zaten C'den bildiğinizi varsaydığımız bu konuları hızlı bir şekilde geçeceğiz. C++, C'nin bir üst modelidir diyebiliriz. C programlarının çoğunu C++ derleyicisi ile derleyebilirsiniz. Bu ilk programların derlenmesi için bir iki noktayı görmezden gelmenizi isteyeceğim. Öncelikle bu giriş çıkış işlemleri için C'de include ettiğimiz stdio.h yerine iostream (input/output stream) dosyasını ekleyeceğiz. Burada printf/scanf yerinede cout/cin eşdeğerlerini kullanacağız. Bundan başka programın başına gibi bir ifade yazacağız. Bu ileride göreceğimiz sınıflarla ilgili bir olay. Kısaca birden fazla library olunca bu librarylerin içerdiği sınıf ve fonksiyonların birbirine karışmaması için uygulandığını bilmeniz yeterli olacaktır. std, içinde cout ve cin'i içerir. Eğer bunu yazmazsanız doğrudan cout yerine std::cout yazmanız gerekecekti. Örneklerimizde çok fazla cout/cin kullanacağımız için başta bunu belirtmek daha düzenli ve rahat olacaktır. Yazının tamamında C ile aranızın iyi olduğu düşünülmüştür... İlk Programlar İlk programlarda hem C hem C++ kodunu işleyerek karşılaştırmanızı sağlayacağız. İlk olarak ünlü Merhaba Dünya programını yazalım. #include <stdio.h> printf("merhaba Dunya\n"); cout << "Merhaba Dunya" << endl; Gördüğünüz gibi, C'ye gayet benzer bir şekilde çalışıyor. Her programın bir main fonksiyonu var. Bunun dışında C'deki printf yerine cout biraz daha karışık gibi duruyor olabilir. cout, << işareti ile arka arkaya ne görürse ekrana yazdırır. Değişkenlerle arası daha iyidir. Bir sonraki programda da bunu görebilirsiniz. Şimdi, kullanıcıdan iki sayı isteyip toplamlarını ekrana yazan iki programı karşılaştıralım: #include <stdio.h> int a, b; printf ("Iki sayi giriniz : "); scanf ("%d %d", &a, &b); printf ("Girdiginiz sayilar : %d - %d\n", a, b);
4 printf ("Toplamlari : %d\n", a+b); int a, b; cout << "Iki sayi giriniz : "; cin >> a >> b; cout << "Girdiginiz sayilar : " << a << " " << b << endl; cout << "Toplamlari : " << a+b << endl; İki program arasında tek fark, printf/scanf'in yerini cout/cin alması gibi gözüküyor. Ama cout/cin'in kullanım olarak biraz daha rahatlığı gözünüze çarpmış olabilir. scanf'teki gibi & işareti ile pointer yapmak yok ya da printf'te yazarken ki gibi değişken tipini %d gibi belirtmekte yok. \n yerine göze daha güzel gözüken endl (end line) gibi bir olayda var... Bu kısa karşılaştırmalardan sonra artık doğrudan C++ kodlarına bakabiliriz. Kontrol Yapıları C'de olduğu gibi C++'tada program akışını kontrol edebilmek için if, if/else, switch gibi kontrol, for, while, do while gibi döngü yapıları vardır. Aşağıda örneklerle yer alıyorlar... int a, b; cout << "a ve b icin degerler giriniz : "; cin >> a >> b; if ( a>b ) cout << "a, b'den buyuk" << endl; else if ( b>a ) cout << "b, a'dan buyuk" << endl; else cout << "a ve b birbirine esit" << endl; Aşağıda for ve while döngüleri, yine C'ye çok benzer durumdalar. Fakat, for için kullandığımız değişkeni, farkettiyseniz parantez içinde tanımladık. GCC derleyicisi (linux üzerindeki derleyici) buna C ile izin vermez.
5 for (int i=0;i<10;i++) cout << i << endl; int k = 0; while (k>=0) cout << "bir sayi giriniz (cikmak icin -1) : "; cin >> k; cout << "girdiginiz sayi : " << k << endl; Son olarak, do-while ve switch içeren bir örnek yazalım: int choice = 0; do cout << "1 - Ilk Secim" << endl << "2 - Ikinci Secim" << endl << "3 - Cikis" << endl << "Seciminiz : "; cin >> choice; switch(choice) case 1: cout << "ilk secim secildi" << endl; break; case 2: cout << "ikinci secim secildi" << endl; break; case 3: cout << "simdi cikiliyor" << endl; break; default: cout << "oyle bi secenek yok ki?" << endl; break; while (choice!= 3);
6 Fonksiyonlar Programlama fonksiyonsuz olmaz elbette. Fonksiyonlar, aynı C'deki gibi tanımlanırlar. Bir tipleri vardır. O tipte return ederler. int toplama (int a, int b) return (a+b); int x,y; cout << "x ve y icin degerler : "; cin >> x >> y; cout << "toplami : " << toplama (x,y) << endl; C'den pek farklı değil, di mi? Fonksiyonların aldığı değişkenleri öntanımlı değerlere bağlayabiliriz (default değerler) : int hacim (int boy = 1, int en = 1, int yuksek = 1) return boy*en*yuksek; cout << "Ontanimli deger : " << hacim() << endl; cout << "Sadece 1 degisken : " << hacim(10) << endl; cout << "2 Degisken : " << hacim(10,10) << endl; cout << "3 Degisken : " << hacim(10,10,10) << endl; Fonksiyon çıktı olarak 1, 10, 100 ve 1000 verecektir. Diziler (Arrays) Programların algoritmadan sonraki en önemli noktası, verinin nasıl saklanacağıdır. Bu konuda ilk büyük yardımcıda dizilerdir. C'den bildiğiniz dizilerde burada aynen kullanılıyor. Diziler, yine C'den bildiğiniz gibi pointerlarla yakından ilgililer... srand(time(null)); int dizi[100];
7 int toplam = 0; for (int i=0;i<100;i++) dizi[i] = rand()%101; toplam += dizi[i]; cout << "Ortalama : " << toplam/100 << endl; Arraylerle ilgili C'den bildiğiniz fonksiyonlara gönderme gibi işlemler aynen geçerlidir. Pointerlar ve Bellek Yönetimi C ve C++'ın en önemli konularından olan pointerlar C'deki gibi bellek adreslerini tutmaktadırlar. C++'ın ilerleyen konularında da iyi bir pointer bilgisi gerekecektir. Burada, tekrar amaçlı bir kaç fonksiyon ile pointerları hatırlayalım. int x = 5; int* xptr = &x; cout << "x : " << x << endl << "x (adresi) : " << &x << endl << "xptr (bellek adresi olarak) " << xptr << endl << "xptr (adresteki deger olarak) " << *xptr << endl; Yukarıdaki basit örnektede görebildiğiniz gibi, & işareti herhangi bir değişkenin adresini veriyor. xptr ise pointer olarak tanımlanmış ve adres değişkenlerini tutuyor. xptr'ın gösterdiği adresteki değeri görebilmek için * işaretini kullanıyoruz. & ve * birbirlerinin tersi olarak adlandırılabilir. Örneğin x değişkeninin adresi &x, bu adresteki değeri görmek için *(&x) kullanırsak, x'i yaz demekle aynı olaya geliyor... Şimdi, fonksiyonlara gönderilen pointerlar, call by reference ve call by value gibi iki önemli noktaya değinelim. Herhangi bir fonksiyona değişken gönderdiğinizde bu değişkenlerin kopyaları orada oluşur ve onların üzerinde işlem yapılır. Eğer doğrudan değişken üzerinde değişiklik yapmak isterseniz pointer olarak göndermeniz gerekir. int kareal(int x) // bu fonksiyon bir deger return ediyor // bu return edilen degeri asagida // yakalamamiz lazim... return x*x;
8 int x = 3; // sadece kareal(x) yazmak bir sey ifade // etmiyor, cunku return edilen deger // yakalanmadi kareal(x); // calismasi icin return edilen degeri // yine x'e esitlemeliyiz x = kareal(x); cout << "x'in karesi alindi : " << x << endl; Şimdi, yukarıdaki fonksiyonu pointerla yapalım. void kareal(int* xptr) // DIKKAT! bu kez bi sey return etmiyor! // void tanimli.. dogrudan gonderilen degisken // uzerinde islem yapiyoruz. *xptr = (*xptr) * (*xptr); int x = 3; // simdi sadece kareal(&x) yazacagiz. // burada da x'in basina & koyduk ki adres // gitsin... kareal(&x); cout << "x'in karesi alindi : " << x << endl; Bu işlem daha çok yer değiştirme fonksiyonlarında işe yarar. Örneğin swap fonksiyonunu bir normal bir de pointerla yapıp deneyelim: void swap1(int a, int b) // bu ilk swap, pointersiz... int temp; temp = a; a = b; b = temp;
9 void swap(int* aptr, int* bptr) // bu da dogrudan orjinalleri uzerinde calisan int temp; temp = *aptr; *aptr = *bptr; *bptr = temp; int a = 3; int b = 4; cout << "a'nin ilk degeri : " << a << endl << "b'nin ilk degeri : " << b << endl; swap1(a,b); cout << "swap1 fonksiyonundan sonra;" << endl << "a'nin degeri : " << a << endl << "b'nin degeri : " << b << endl; swap(&a, &b); cout << "swap fonksiyonundan sonra;" << endl << "a'nin degeri : " << a << endl << "b'nin degeri : " << b << endl; İlk fonksiyon olan swap1 ile değerler fonksiyon içinde tekrar tanımlandıkları için, fonksiyon içinde swap oluyorlar. Ama swap fonksiyonu doğrudan pointerlar ile gönderilen değişkenler üzerinde işlem yapıyor... Pointerların asıl işe yaradıkları alan dinamik bellek yönetimindedir. Herhangi bir pointer yarattığınızda bu pointer bellekte bir yeri gösterir ama nereyi gösterdiği belli değildir. Her değişken gibi onuda initialise etmek gerekir. Kafanızdan bellek adresi veremeyeceğiniz için yardımcı fonksiyonlarla bellekten adres istersiniz. Eğer istemezseniz, değişkenin rasgele gösterdiği yer müsait olmayabilir ve belleğe yazma hatası alırsınız. C'de bu olayı malloc (memory allocate) ile yapıyorduk. int* xptr; xptr = (int *) malloc(sizeof(int)); Burada, malloc ile int'in boyutu kadar bir yer istedim (sizeof fonksiyonu sağolsun). malloc bize void pointer gönderiyor, onu da int pointer'a cast ettim. Bu uzun işlemler yerine C++'ta new ile yer açabiliyorsunuz... geçmiş olsun :) int* xptr; xptr = new int;
10 B SINIFLAR ve NESNELER Programlama teknikleri arasında son yılların en popüleri olan ve büyük ihtimalle daha uzun süren yıllar boyunca bu popülerliğini devam ettirecek olan nesne yönelimli programlamaya hoşgeldiniz! Nesne programlama bir yönden çok basittir. Çünkü günlük yaşadığımız çevreden esinlenerek hazırlanmıştır. Çevremizde gördüğümüz nesnelerin bağlı oldukları sınıflar vardır. Örneğin bütün insanların belli özellikleri aynıdır. Hepimiz insan sınıfına bağlı bir nesneyiz diyebiliriz. Aynı şekilde makas sınıfına ait bütün nesnelerinde belli özellikleri ve işlevleri vardır. Bu nesneler (ya da genel olarak sınıflar) birbirleri ile iletişime ve etkileşime geçebilirler. Örneğin makas sınıfından bir nesne kendi kendine kesemez, insan sınıfından bir nesnenin onu kullanması gerekir. İşte nesne programlamada da program nesnelerin birbirleri ile etkileşiminden oluşur. Nesne programlamada, nesnelerin değişkenleri ve fonksiyonları vardır. Örneğin bir program için bir köpeği modellemek isteyebilirsiniz. Yaşı, boyu kilosu gibi değişkenleri, havla(), evikoru() gibi fonksiyonları olabilir. Ya da bir arabayı modellemek isteyebilirsiniz, onunda vitesdegistir() gibi fonksiyonları olacaktır. Nesne programlamanın en önemli koşullarından biri bilgi gizleme olayıdır. Yani, arabayı kullanan biri vites değiştirirken neler olduğunu, nasıl çalıştığını bilmek zorunda değildir. Diğer önemli özelliği ise modülerliliğidir. Nesneleri daha sonra başka programlarda da kullanabilirsiniz. struct ve class C'de, struct bile değişik yapılar kullanıyorduk. class ile de struct'tan daha gelişmiştir. Artık biraz örneklerle devam edelim. #include <string> class Kopek public: int yas; string adi; ; void Havla() cout << adi << ": Hav Hav Hav!" << endl; Kopek karabas; // karabas die bi kopegimiz var! karabas.yas = 3; karabas.adi = "Karabas"; // havla karabas! karabas.havla();
11 Kopek findik; findik.adi = "Findik"; // havla findik! findik.havla(); Gördüğümüz gibi, struct'lar gibi, nesnenin iç değişkenlerine nokta (.) ile ulaşabiliriz. Ama sınıfın başında public diye bir kelime geçti? Erişim Seviyeleri (public, protected, private) Structlardan farklı olarak, class'ların değişken ve fonksiyonlarına erişim belli seviyelerdedir. Gerçek hayattaki nesnelerde de olduğu gibi, bir köpeğin yaşını değiştirme şansınız yoktur. Yaşı, zamana göre değişir. Ama adını istediğiniz zaman değiştirip ona karabaş yerine rex ismini verebilirsiniz, kendisi bundan hoşlanmasada... İşte bu tip erişim seviyeleri üç şekilde belirlenir; public, protected, private. Eğer bir nesnenin private bir değişkeni ya da fonksiyonu varsa, onu kendinden başkası kullanamaz. protected değişken ve fonksiyonlara nesnenin kendi sınıfından nesneler ulaşabilir. Son olarak public değişkenlere herkes ulaşabilir ve değiştirebilir. Genelde, private tanımlanan değişkenler public yazılan fonksiyonlar sayesinde değiştirilir. Bunlar ilk başlarda set/get fonksiyonları olarak yer ederler kafanızda, hemen bir kaç örnekle görelim: (bu ilk kod derlenmez!) #include <string> class Kopek private: int yas; string adi; ; public: void setadi(string name) adi = name; string getadi() return adi; int getyas() return yas;
12 Kopek karabas; karabas.setadi("karabas"); cout << karabas.getadi() << endl; cout << karabas.adi << endl; Yukarıdaki kodu derlemeye çalıştığınızda: bash-3.00$ g++ setget.cpp -o setget setget.cpp: In function `': setget.cpp:9: error: `std::string Kopek::adi' is private setget.cpp:35: error: within this context bash-3.00$ yukarıdaki hatayla karşılaşırsınız. Hata diyor ki, bu Kopek sınıfının adi isimli değişkeni private bu yüzden erişemiyorsunuz. Şimdi cout << karabas.adi içeren satırı silelim, ve tekrar derleyip çalıştıralım. Ekrana köpeğin adını yazacaktır. C'den hatırladığımız en önemli noktalardan biri, değişkenlerin ilk değerlerinin olmasıdır. Yukarıdaki örnekte karabas'in yaşını belirleyemedik. Mesela bütün köpekler için öntanımlı bir başlangıç değişkeni verebilirdik. Nesneler ilk yaratıldığında çalışan bir fonksiyonla bu sınıf içindeki değişkenlere ilk değerlerini verebiliriz. Bu ilk çalışan fonksiyon lara constructor adı verilir. Constructorlar sayesinde nesneleri ilklendirebiliriz (initialise edebiliriz). Constructorların tek kuralı sınıf adı ile fonksiyon adının aynı olmasıdır! Hemen Kopek sınıfımız için bir constructor yazalım: #include <string> class Kopek private: string adi; int yas; public: Kopek() adi = "Kopegim"; yas = 2; void setadi(string name) adi = name; string getadi() return adi; int getyas() return yas; void Bilgiler() cout << "Kopegin adi : " << adi << endl
13 ; << "Kopegin yasi : " << yas << endl; Kopek karabas; karabas.bilgiler(); karabas.setadi("karabas"); karabas.bilgiler(); Kodu detaylı açıklarsak; constructor fonksiyonunun sınıf adıyla aynı olması ve herhangi bir tipi (void ya da int gibi) olmaması dikkatinizi çekmiş olmalı. Bu fonksiyon içinde sınıfın iki private değişkenine ilk değerleri verildi. Daha sonra önceki fonksiyondaki adını tekrar verme (set), adını ve yaşını öğrenme (get) fonksiyonları da yazıldı. Bunlar gayet basit private değişkenlere yeni değerlerini eşitleyen fonksiyonlar. En son bir de Bilgiler() diye bir fonksiyon ile köpeğin bilgilerini ekrana yazdırmak istedim. main'e gelince; karabas denen köpeğimizi yarattıktan sonra ekrana bastırıyoruz ki ilk değerlerini doğru almış mı diye görelim. Sonra bu köpeğimize gerçek adı olan karabas ismini set fonksiyonumuz ile veriyoruz. Bundan sonra köpeğimizin adı, Bilgiler() fonksiyonunun çıktısınından da görebileceğiniz gibi karabas. protected değişkenler, kalıtım bölümünde detaylı incelenecektir. Şimdilik üzerinde durmayacağız. Daha çok örnek Constructorların bir çok özelliği vardır. Örneğin bir nesne için birden fazla constructor yazabilirsiniz. #include <string> class Kopek private: string adi; int yas; public: Kopek() adi = "Kopegim"; yas = 2; Kopek(string name) adi = name; yas = 1;
14 ; void Bilgiler() cout << "Kopegin adi : " << adi << endl << "Kopegin yasi : " << yas << endl << endl; Kopek karabas; Kopek findik("findik"); karabas.bilgiler(); findik.bilgiler(); Burada Kopek() constructorı dışında Kopek(string name) gibi bir fonksiyon daha var. İsimleri aynı olsa da parametreleri farklı olduğu için bunlar farklı fonksiyon sayılırlar. Kopek sınıfından bir nesne yaratırken istediğinizi kullanabilirsiniz, derleyiciniz doğru constructorı seçecektir. Nasıl constructor sınıftan bir nesne yaratıldığında çalışıyorsa, Destructor denen fonksiyonda nesne silindiğinde çalışır. Destructor, constructor gibi sınıf isminden oluşur ama başına bir ~ işareti gelir. Örneğin Kopek sınıfının constructor'ı Kopek(), destructor'ı ~Kopek()'tir. Birazdan bununla ilgili bir örnek yapacağız. C++'ta programlama, genel olarak nesnelerin birbirlerine gönderdikleri mesajlarla gerçekleşir. İşin içinde genelde birden çok nesne olur. Bu yüzden nesnelerin birbirlerini tanımaları gerekir. Bu tanıma işlemi tıpkı fonksiyon prototipleri gibidir. Eğer bir nesne, diğer bir nesneyi içeren fonksiyon veya değişken içeriyorsa, doğal olarak, o tipin belirli olması gereklidir. Kopek sınıfı örneğinde string sınıfından adi nesnesi var, en yukarıda include ile string nesnesi tanımlanmıştır ve böylece Kopek sınıfının bu sınıftan haberi vardır. Sınıflar birbirleri ile alakalıysa her private değişken için set/get fonksiyonlarını yazmanız can sıkıcı veya gereksiz olabilir. Sadece belli diğer bir sınıf, sınıfın private'larına erişmesi gerekiyorsa, bu iki sınıfı friend olarak belirleyebilirsiniz. Artık arkadaş olan sınıflar birbirlerinin private değişkenlerine ulaşabilirler. friend olayını illa iki taraflı yapmak zorunda değilsiniz. Sadece bir taraf arkadaşlık verebilir. Aşağıdaki örnekte olduğu gibi: #include <string> class Defter friend class Kalem; private: string icindekiler; public: Defter() icindekiler = "defter bos"; void displayic()
15 cout << icindekiler << endl; ; class Kalem public: void Yaz(Defter* d, string a) d->icindekiler = a; // icindekiler private olmasına rağmen değiştirildi ; Defter yeni; Kalem kalem; kalem.yaz(¥i,"yeni bisiiler yazdim kalemle"); yeni.displayic(); Burada, d->icindekiler ile, Defter sınıfının private değişkenlerine friend olması sayesinde değiştirebildik. Bu arada, tekrar olsun diye söylüyorum, eğer Yaz fonksiyonunda pointer kullanmazsanız, orjinal üzerinde işlem yapamazsınız. Sınıfları yazarken, eğer büyük bir sınıf ise rahatlık açısından fonksiyon prototiplerini sınıf içinde tanımlayıp, sınıf tanımından sonra fonksiyonların içlerini doldurabilirsiniz. Bu hem bütün sınıfa daha hızlı bir bakış sağlar, hemde okunabilirliliği arttırır. class Ogrenci private: string adi; string adresi; public: Ogrenci(); Ogrenci(adi); string getadres(); void enrollclass(); void havefun(); ; string Ogrenci::getAdres() return adresi; void Ogrenci::haveFun() // gerekli kodlar... Yukarıdaki örnekte, public: altındaki fonksiyonlar daha sonra :: işareti ile sınıf tanımı dışında yazılmıştrı. Bunun için yine önce değişken ya da fonksiyon tipi, arkasından sınıfın adı, sonra
16 :: ve fonksiyon adı yeterlidir. Büyük sınıflarda bütün fonksiyonları bir arada görmek bu yöntemle daha rahat olur. Sınıflarla ilgili son önemli detayda, static değişkenlerdir. Static değişkenler, adından da anlaşılabileceği gibi, durağan değişkenlerdir. Örneğin, bir sınıfa ait kaç eleman olduğunu sayabilirsiniz. Burada hem destructor örneğini de kullanabiliriz. #include <string> class Koyun public: int static koyunsayisi; Koyun() koyunsayisi++; cout << "Koyun yaratildi! Toplam koyun sayisi: " << koyunsayisi << endl; ~Koyun() koyunsayisi--; cout << "Koyun öldü!! (kalan : " << koyunsayisi << " ) " << endl; ; int Koyun::koyunSayisi = 0; Koyun a[10]; cout << "yaratilan koyun sayisi : " << Koyun::koyunSayisi << endl; Programı irdelersek, static tanımlanan koyunsayisi değeri, yaratılan her Koyun nesnesi için aynı oluyor. Her nesne yaratıldığında bir tane artıyor. Bir koyun array'i yarattığımızda, zaten 10 kere bu Constructor çalışıyor, sonra ekrana koyunsayisi bastırılıyor, program biterken, Koyun nesneleri silindiği için, destructor'ları çalışıyor. Destructor'ı çağırmasak bile otomatik çalıştığına dikkat edin. Diğer bir noktada, sınıfın değerlerine ulaşmak için :: işlecini bu kez bir fonksiyon değil bir değişken için kullanmamız... Ekran çıktısını aşağıda görebilirsiniz: Koyun yaratildi! Toplam koyun sayisi: 1 Koyun yaratildi! Toplam koyun sayisi: 2 Koyun yaratildi! Toplam koyun sayisi: 3 Koyun yaratildi! Toplam koyun sayisi: 4 Koyun yaratildi! Toplam koyun sayisi: 5 Koyun yaratildi! Toplam koyun sayisi: 6 Koyun yaratildi! Toplam koyun sayisi: 7 Koyun yaratildi! Toplam koyun sayisi: 8 Koyun yaratildi! Toplam koyun sayisi: 9 Koyun yaratildi! Toplam koyun sayisi: 10 yaratilan koyun sayisi : 10 Koyun öldü!! (kalan : 9 ) Koyun öldü!! (kalan : 8 ) Koyun öldü!! (kalan : 7 )
17 Koyun öldü!! (kalan : 6 ) Koyun öldü!! (kalan : 5 ) Koyun öldü!! (kalan : 4 ) Koyun öldü!! (kalan : 3 ) Koyun öldü!! (kalan : 2 ) Koyun öldü!! (kalan : 1 ) Koyun öldü!! (kalan : 0 )
18 C C++ İLERİ KONULAR Artık C++ ile az çok bir yakınlığınız olduğunu düşünerek ileri C++ konularına geçebiliriz. C++'ı özel yapan, bu özellikleridir. Operator Overloading
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ı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ı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ı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ı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ı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ı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ıHafta 12 Karakter Tutan Diziler
BLM111 Programlama Dilleri I Hafta 12 Karakter Tutan Diziler Yrd. Doç. Dr. Caner ÖZCAN Katar (String) Tanımlama Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 9: Sınıf İçerik Sınıf Tanımı Nesne Tanımı İkili Kapsam Çözme Operatörü UML ile Sınıfların Gösterimi 2 Sınıf kavramı, nesne-tabanlı programlamanın temelini oluşturur.
DetaylıDiziler (Arrays) Çok Boyutlu Diziler
Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.
Detaylı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ı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ıÇoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say
İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input
Detaylı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ıDeney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri
Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri 7.0. Amaç Ve Kapsam Deneyde C dilinde kullanılan fonksiyon tanımlama ve parametre aktarım yöntemleri hakkında bilgi verilecektir. 7.1. Deneyden
Detaylı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 ) 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ıC++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié
Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama
Detaylı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ıKarakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır
stringh floath Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır 32 Sorgulama İfadesi - if Deyimi (5 Hafta) Bu deyim sorgulamanın tek basamakta yapılacağı yerlerde
Detaylı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ı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ı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ıWEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu
WEB TASARIM I Öğr. Gör. M. Mutlu YAPICI Ankara Üniversitesi Elmadağ Meslek Yüksekokulu Ders İzlencesi Hafta Modüller/İçerik/Konular 1. Hafta PHP Tanımı ve Sunucu Kurulumları 2. Hafta PHP Yazım Notasyonu
DetaylıDiziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU
Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip
Detaylı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ı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ıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA İŞARETÇİ ELEMANLI SINIFLAR REFERANSLAR OPERATÖRLERİN AŞIRI YÜKLENMESİ ATAMA OPERATÖRÜ Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü İşaretçi Elemanlı Sınıflar
DetaylıC++ ile Nesneye Dayalı Programlama
Nesne İşaretçileri 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 Nesneİşaretçileri Çok Şekillilik
Detaylıİstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER
DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin
Detaylı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ıif (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");
Koşul İfadeleri ve Akış Kontrolü Koşul ifadeleri ve akış kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadır. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir
DetaylıProgramlama Dilleri Laboratuvarı
2014 2015 Programlama Dilleri Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. İsmail KURNAZ Laboratuvar Sorumluları: İÇİNDEKİLER Deney 1: Bilgisayar Kavramları, Algoritma Geliştirme ve Çözümü, Programlamaya
DetaylıB02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri
B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması
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 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance
Detaylı/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve
Detaylı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ıİ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ıLambda İfadeleri (Lambda Expressions)
Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki
Detaylı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ı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ıBölüm 9. Altprogramlar ISBN
Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda
Detaylısayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)
5. İşaretç iler (pointers) C dilinin öyle bir özelliği vardır ki, programlama dilleri arasında kendisini diğerlerinden ayıran bir fark olarak sunulur: işaretçiler. Aslında, bazı diğer dillerde de direkt
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 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ı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ıC Dersleri Bölüm 3 : Program akışı
İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu www.ieubt.org C Dersleri Bölüm 3 : Program akışı Sorularınız için : programlama@ieubt.org Hazırlayan : Görkem PAÇACI (gorkem.pacaci@std.ieu.edu.tr) C Program
Detaylı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ıNESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş
Özlem AYDIN NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü C DİLİNİN BİR ÜST-KÜMESİ OLARAK C++ Genel olarak, C de mevcut olan her şey C++ da da vardır. C dilinde
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA
BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı
DetaylıNesneye Yönelmek. veya sadece formülleri bilgisayarın anlayacağı dile çevirmeyi bilen birinin C++ kullanma yöntemleri. Gökhan Ünel
Object Orientation Tonguç (Rador) to the OO speaker: - What are your objects and how do you orient them? Speaker: -Ha?..?! Gökhan: - With a... magnetic field?... ~1996 Nesneye Yönelmek veya sadece formülleri
DetaylıÖ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ı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ıBM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü
BM-209 Nesne Yönelimli Programlama Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü Java Programlama Dili Java bayt kodları Java Sanal Makineleri üzerinde
Detaylı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ıÖ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ı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ıDizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.
DİZİLER/ARRAY: Dizi yi çeşitli şekillerde tanımlamak mümkün. Dizi içlerinde birden fazla değer saklayabilen veri kümeleridir diye tanımlarsak uygun olur sanırım. Diziler yan yana dizilmiş kutucuklar olarak
DetaylıTemel Bilgisayar Programlama Final Sınavı Çalışma Notları
Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak
DetaylıBil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi
Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini
Detaylı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ı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ıÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER
ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER // 5 adet ogrenci icin 8 adet sinavi // temsil etmesi icin bir ogrenci tablosu // olusturuyoruz. Bunun icin 5x8 bir matris // yaratilmasi
DetaylıHafta 13 Fonksiyonlar
BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.
Detaylı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ı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ı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ı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ıBLM 111 ALGORİTMA VE PROGRAMLAMA I
1 BLM 111 ALGORİTMA VE PROGRAMLAMA I ÇOK BOYUTLU DİZİLER, YAPILAR [MULTIDIMENSIONAL ARRAYS, STRUCTURES] ÇOK BOYUTLU DİZİLER Çok boyutlu diziler tanımlayabiliriz. İki boyutta, çok boyutlu diziler bellek
Detaylı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ı/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.
Selçuk Üniversitesi Mühendislik-Mimarlık Fakültesi Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :26.11.2012, 60 dak. Dikkat!!! Soru kitapçığında
DetaylıStatik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları
Statik Veri Üye ve Metotlar Genel olarak bir sınıfa ait nesnelerin verileri bellekte farklı bölgelerde yer alır. Ancak bazı durumlarda, belirli bir üyenin ortak bir alanda tek bir kopyasının bulunması
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 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 10 Statik ve Anlık Öğeler
Bölüm 10 Statik ve Anlık Öğeler Statik ve Anlık Öğeler Statik öğeler, bir sınıfta static sıfatıyla nitelendirilen değişkenler ve metotlardır. Bunlara sınıf değişkenleri de denilir. static nitelemesi almayan
Detaylı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ı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ıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi
Detaylıişlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);
case 2 : C = 0.5088-0.0011*(B-135); break; case 3 : C = 0.4978-0.0010*(B-145); break; case 4 : C = 0.4878-0.0009*(B-155); break; default : printf("yanlış seçenek\n");} cout
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 7: Yapılar Diziler İçerik Yapıların Tanımı Yapılara İlk Değer Atama Yapı Elemanlarına Erişim İç içe Yapılar Yapılar ve Fonksiyonlar 2 Yapılar (structures) içinde
Detaylı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ı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ışeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;
Dosya İşlemleri Nedir? Programlarınızı girdi (input) olarak aldığı verileri bir text dosyasında yada word dosyasında vb. saklamasıdır. Artık C programınızın yaratıp içine veriler koyacağı text dosyasını
DetaylıKoşullu Önermeler (if else)
Koşullu Önermeler (if ) Koşullu Önermeler Şu ana kadarki önermelerimiz birbiri ardına sıralı bir şekilde çalışıyorlar. Aşağıdaki durumlarda nasıl çalışacaklar peki? bir koşula bağlı olarak bir önermeyi
DetaylıYAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta
YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin
DetaylıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
DetaylıC#(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ıNesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik
Binnur Kurt kurt@ce.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi Sınıf Yapısı Kalıtım Çok Şekillilik Nesneye Dayalı Programlama 2 1 İşaretçiler, veri değil, verinin yerleşik bulunduğu
Detaylı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ı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ı11- FONKSİYONLAR (FUNCTIONS)
1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar
Detaylı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ı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ıSınav tarihi : Süre : 60 dak.
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =
Detaylı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ıAHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ
AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar İki Yönlü Bağlantılı Liste Uygulaması HAZIRLAYAN
DetaylıFall Object-Oriented Programming Laboratory 02 - Structures
2017-2018 Fall Object-Oriented Programming Laboratory 02 - Structures 10.10.2017 1. Diziler. Bir tamsayi dizisinin elemanlarını ekrana yazdırmak için void printarr(int arr[], int elem_count) prototipli
DetaylıAkış Kontrol Mekanizmaları
Akış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün
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;
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ı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ı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ı