24 Şubat 2018 Cumartesi

VİRTUAL (Sanal Fonksiyon) NEDİR?

Sanal Fonksiyona neden ihtiyaç duyulur ?

Sanal fonksiyonları çok biçimli programlama tekniği (polymorphism) ile kullanılır. Bir sınıfın fonksiyonunun miras alan diğer sınıflar tarafından kullanılmasını sağlamak için virtual anahtar kelimesiyle tanımlarız. Bunun nedenini bir örnek ile açıklayayım. Diyelim ki bir kare sınıfımız var. Bu sınıf için alan hesaplayabiliriz, çizim yaptırabiliriz , çevre hesaplayabiliriz. Diğer bir sınıf olan üçgen ise kare’den miras alsın. Üçgen içinde aynı fonksiyonları kullanabiliriz değil mi ? Bunu yapabilmemiz için kare sınıfımızdaki fonksiyonlarımızı virtual anahtar kelimesiyle deklare etmemiz gerekir yani prototiplerini virtual ön eki ile yazarız. Lafı çok uzatmadan örnek kodumuz ile olayı biraz somutlaştırayım.
class dortgen
{
    public:
    virtual int alan(int taban, int yukseklik){
       return taban*yukseklik;
    }
    int cevre(int taban, int yukseklik){
       return 2*(taban+yukseklik);
    }
};
class ucgen : public dortgen
{
    public:
    int alan(int taban, int yukseklik){
       return (taban*yukseklik)/2;
    }
};
Yukarıdaki kodu ile anlatıldığı gibi dortgen sınıfımızın virtual fonksiyonu olan alan ucgen sınıfımızda da aynı isim ile farklı işlevi gerçekleştirecek şekilde tanımlanabilir.
Aşağıdaki örnek kodumuzu inceleyelim.
int main() { dortgen *ptr; // ptr temel sınıfa ait bir pointer ucgen nesne1; //nesne1'de türemiş sınıfa ait bir nesne
ptr = &nesne1; // Temel sınıfa ait bir pointera türemiş sınıfın adresini atayabiliriz
    ptr->alan();   // Ekranda hangi şeklin alanı hesaplandı ?
return 0; }
Yukarıdaki kodu uygun şekilde ekleyip çalıştırdığımızda sınıflarımızdan hangisi için alan hesaplaması yaptı ? Program içinde temel sınıfımız olan dortgen'den oluşturduğumuz bir pointer tipli değişkene türetilmiş sınıfımızın adresini verdik. Sonra bu değişken ile alan() fonksiyonumuza ulaştık. Pointerımız programın o kısmında ucgeni gösterdiği için ucgen alanı hesaplanacaktır. Bu örnek genişleterek farklı kullanım alanları oluşturulabilir.
Şimdilik bu konuda söylenecekler bu kadar bir sonraki başlığımız olan Saf Sanal Fonksiyonlara değinerek yazımı tamamlıyorum.
Saf sanal fonksiyonlar kullanım olarak aynı şekildedir. Fakat temel sınıfımız içerisinde sadece virtual fonksiyonlarımız vardır. Bu sınıfa soyut sınıf denir.Soyut sınıfımızdan bir nesne türetmemiz mümkün değildir. Aynı zamanda soyut sınıftan miras alan tüm sınıflar virtual tanımlanmış olan fonksiyonlara sahip olmalıdır. Bu söylediklerim birer kuraldır ve eksikliğinde derleyici koşma hatasına sebep olurlar.

17 Şubat 2018 Cumartesi

C++ da ## OPERATORU

Bazen "birleştirme" operatörü olarak adlandırılan çift ​​sayı işareti veya "simge yapıştırma" operatörü ( ## ), nesne benzeri ve işlev benzeri makrolarda kullanılır. Ayrı belirteçlerin tek bir işaretle birleştirilmesine izin verir ve bu nedenle makro tanımında ilk veya son işaret olamaz.

Polymorphism (çok biçimlilik)

Polimorfizm kelimesi birçok forma sahip olmak demektir. Genellikle polimorfizm, bir sınıf hiyerarşisi olduğunda ve devralma ile ilişkili olduğunda oluşur.
C ++ polimorfizmi, üye işlev çağrısının, işlevi çağıran nesne türüne bağlı olarak farklı bir işlevin yürütülmesine neden olacağı anlamına gelir.

Inheritance (miras alma)

Nesne yönelimli programlamanın en önemli kavramlarından biri miras konusudur. Miras, başka bir sınıf açısından bir sınıf tanımlamamızı sağlar; bu da bir uygulamanın oluşturulmasını ve bakımını kolaylaştırır. Bu aynı zamanda kod işlevselliğini ve hızlı uygulama süresini yeniden kullanma fırsatı sağlar.
Bir sınıf oluştururken, tamamen yeni veri üyeleri ve üye işlevler yazmak yerine programcı, yeni sınıfın varolan bir sınıfın üyelerini devralması gerektiğini belirtebilir. Bu mevcut sınıfa taban sınıfı denir ve yeni sınıfa türetilmiş sınıfa denir .

Kapsülleme (Encapsulation)


Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu özellik, dilin nesne kullanıcısından gereksiz uygulama ayrıntılarını saklar. Oluşturulan bir sınıf (class) içerisinde kullanıcının işlemlerini daha kolay gerçekleştirebilmesi için bazı işlemler birleştirilerek tek bir işlem gibi gösterilir. Bu birleştirme işlemine kapsülleme denir.

Class Definition

Erişim belirteçleri (access modifier) sayesinde kapsülleme çok daha kolay yapılmaktadır. Erişim belirteçleri, oluşturulan sınıf veya sınıf içindeki elemanların erişim seviyelerini belirlemek için kullanılan anahtar kelimeler grubuna verilen isimdir. Metotlar ve değişkenler bir anahtar sözcük ile önceden bellirlenen sınırlar dahilinde kullanılabilir. Bu anahtar kelimeler şu şekilde sıralanabilir.
  • public: Sistemdeki bütün sınıfların erişebilmesini sağlar. Yalnızca aynı proje içinden değil, diğer projelerden de erişim sağlanabilir.
  • private: Bir "özellik (property)"in veya "metod"un sadece tanımlandığı sınıftan erişilebilmesini sağlar. Oluşturulan sınıf veya yapıların "public" olması açık bir şekilde belirtilmez ise, derleyici tarafından "private" olarak belirlenir.
  • internal: Aynı derleyici (assembly) içinde bulunan tüm sınıflardan erişim sağlanır. 
  • protected: Sadece tanımlandığı sınıfın içinde ve o sınıftan türetilmiş diğer sınıfların içinde erişilebilir.
Class Definition
             - class Name
             - {
             - public :
                   >> constructor(s)
                   >> destructor
                   >>  function members
                   >> data members
              - protected :
                   >> function members
                   >> data members
              - private :
                   >> function members
                   >> data members
               - } 

10 Şubat 2018 Cumartesi

C++ da # KULLANIMI

C++ programları kendi derleyicisi ile de ilişki halinde olacaktır.
Bu ilişki C++ önişlemcileri tarafından sağlanacaktır.
Önişlemcler çeşitli emirlerden oluşabilir.
Bu emirler C++ derleyicisinin kaynak kodunu denetlemekte kullanılır.
Önişlemci emirleri C++ programı içinde (#) işareti ile başlar.
C++ in en çok kullanılan önişlemci emirleri #include ve #define ile tanımlanmaktadır.
önişlemci emirleri (;) işareti ile sonlandırılamaz!

6 Şubat 2018 Salı

C++ ÖRNEK PROGRAMLAR

C++ programlama dili ile hazırlanmış Basit örnekler aşağıda dosya içeriği ve kod listesi bulunmaktadır
  • 2 3 ve 5 e tam bölünme
  • 3 e veye 4e tam bölünme
  • arttırma for ile
  • arttırma
  • denklem
  • c++ faktoriyel
  • Not karşılığı
  • c++ not ortalaması bulma
  • tek cift toplam
  • c++ eleman
  • matrisinin elemanlarını bulma
  • float toplam,ortalama
  • A ve B matrislerinin toplamı olan C matrisi
  • c++ en büyük sayı
  • matris toplamı
  • girilen sayının faktoriyeli
  • en küçük sayı bul
  • girilen sayilarin e kökü
  • n ve r değeri
  • dik üçgen
  • doğru hesaplamalı
  • ek fonksiyon
  • ek,eb,ort fonksiyon
  • matris çarpımı
  • c++ öğrenci takip
  • c++ resepsiyon
  • c++ sinüs

C++ DELETE


     Bellek bloğunu kaldırır.
delete işlecini bir nesne üzerinde kullanmak onun belleğini kaldırır. Nesne silindikten sonra bir işaretçinin başvurusunu kaldıran bir program öngörülemeyen sonuçlara veya çökmeye neden olabilir.
delete bir C++ sınıf nesnesi için belleği kaldırmak için kullanıldığında, nesnenin belleği kaldırılmadan önce nesnenin yok edicisi çağrılır (nesnenin bir yok edicisi varsa).
delete işlecinin işleneni değiştirilebilir bir l-değeri ise, nesne silindikten sonra değeri tanımsızdır.

C++ NEW

C++, kendi kullanımı için bazı tanıtıcıları ayırır. ... Ona, uzun zamanlı bellek de diyebiliriz. Program, C++ new işlecini kullanarak küme belleği ayırır.
New : dinamik bellek kullanımı ve işlemleri.

C++ Nesne İşaretçileri



- Nesne işaretçileri artırıldığında, diğer tür işaretçilerde olduğu gibi sıradaki nesneyi işaret ederler.
- Nesne işaretçisi oluşturulduğunda bir nesne oluşturulmaz. Sadece var olan bir nesne için işaretçi oluşturulur.

myclass ob(120);
myclass *p;
p=&ob;

CONSTRUCTOR VE DESTRUCTOR KAVRAMLARI


Bir constructor (Yapılandırıcı veya kurucu olarak adlandırılır) fonksiyon,kendi sınıfı icerisindeki(genelde private olan uyeler) uyeleri veya olusturdugu nesnenin ilk cikis sahnesini olusturan fonksiyonlardir.Nesneler,genelde yaratılırken ilk deger atamalarını kendi kurucu fonksiyonlari sayesinde yaparlar.Boyle bir kural sart degildir,ancak nesne yönelimli programlama dilleri(object oriented programming) uzerinde kod yazan programcılar genelde bu yaklaşım ile sınıflarını tasarlarlar.Bakıldıgı zaman programın optimizasyonu acısından da constructor fonksiyonları cok yararlıdır.

Destructor (Yıkıcı veya Yok edici olarak adlandırılır) olarak adlandırılan fonksiyonlar ise,constructor fonksiyonunun yaptıgı işin tersini yaparlar,yani gorevi biten nesneyi yok ederler.Bir sınıfın(class) uyesi olan bir degisken(orn:string tipli) gorevini noktaladigi durumda ~destructor() fonksiyonu otomatik cagrilarak,uzerinde calistigi nesneyi devre dışı bırakır.C++ programlama dili icerisinde destructor'lar bulunurken,java dilinde bu fonksiyonlar kaldırılmıştır.Nedeni ise,programlama zafiyeti acısından eger iyi tasarlanmazsa,bu fonksiyonlar programa ciddi zararlar verebilirler.

destructor() fonksiyonları olmasada,constructor() fonksiyonlari aşırı yuklenebilir.Bu durumu fonksiyon parametrelerini degistirerek uygulayabilirsiniz.Ancak bu fonksiyonlarin donus tipi belirtilmemektedir.

C++ programlama dilinde bu sistemlerin initalize edilmesi asagidaki gibi tasarlanır.
 
class class_name { // Bir class
 
class_name(); // Bir constructor
class_name(int,float); // Aşırı yuklenmiş Bir constructor
~class_name(); // Bir destructor
};

C ve C++ Geliştiricileri için en İyi 10 IDE


Yüksek seviyeli programlama dilleri hala hesaplama ana kalmak. Söz çok geliyor ama bunların çıkışından birkaç yıl içinde ölmüş olan birçok dilleri vardır. Ancak bilgisayarların ilk nesil ortaya çıktı ama hala çok popüler ve ilgili olan bazı taşlar vardır. C ve C++ her ikisi de çok popüler ve hala aktif olarak uygulamaları ve sistemleri dünya çapında kullanılır. Bu iki dilin hala programcılar arasında özellikleri ve mükemmel güvenlik güçlü bir nedeniyle aktif.
C ve C++ her programcı bu dilleri Python, PHP, İnci, Java, C# ve diğerleri gibi popüler programlama dilleri için temel oluşturur, çünkü bilmelisin ki, bu benzersiz bir dil vardır. Ayrıca, bu programlama dili yaygın olarak yetenekli programcılar tarafından bile donanım ile çalışmak için kullanılır.
Yani, eğer sen

C veya C++ Programcı ya da bir acemi bile

sizin için etkileyici IDEs bazı yuvarlama ben bu dilleri de öğrenmek için büyük bir araştırma var , o zaman burada bu yazı. Hata ayıklama, kod tamamlama, derleme ve dizim, vb gibi fonksiyonlar olduğu gibi IDE kolay programlama iş yapmak için en iyi yerdir.
IDE ana kullanım programı geliştirirken yazılım uygulamaları farklı bileşenleri sağlamaktır. En çok kayırılan onları geliştiriciler arasında kılan şey, çekici bir kullanıcı arayüzü. Bir kaç gün önce, ben paylaşılan IDEs için Linux gibi IDE için Java, ama bugün ben araştırdı en iyi IDE C/C++ için. Bu IDEs check out ve C/C++ geliştirme ile başladı.

1. tutulma

tutulma
Eclipse C ve C++ programcılar için açık kaynak programı ve işlevsellik sunan C/C++ İçin en popüler ve güçlü IDE. Yeni kullanıcılar bu kullanım için ve işe bağlı olarak basit IDE bulabilirsiniz.
Özellikler:
Ben açık kaynak yazılım.ücretsiz e.
• Tüm Windows platformları destekler, Linux, Mac OS X
• Destekler hata Ayıklama, kod Profilleme, Otomatik tamamlama ve ben Yeniden Derleniyor.kod e (yeniden yapılanma dış davranışını değiştirmeden yapılabilir).
• Sürükle ve bırak işlevselliği kullanarak öğe düzenlemek için (GUI) grafik kullanıcı arayüzü var.
• Ayrıca Statik Kod Analizi destekler.

2. Kod: Bloklar

codeblocks
Kod: Blok bir serbest C, C++ IDE oluşturulan karşılamak için en zorlu ihtiyaçları geliştiriciler, C ve C++. Bu C ve C++ geliştirme için gereken tüm özelliklere sahip bir IDE.
Özellikler:
• Windows, Linux ve Mac OS X üzerinde çalışır.
• Eklentileri ile tamamen yapılandırılabilir ve genişletilebilir olacak şekilde tasarlanmıştır.
Kod • Derleme destekler, hata Ayıklama, Kod Kapsamı, Profil, Otomatik tamamlama
• Sınıf bir tarayıcı.e nesne yönelimli programlama görselleştirebilirsiniz.
• Ayrıca (sürükle ve bırak işlevlerini kullanarak öğeleri düzenlemek için de GUI) ve Eclipse kod analizi destekler gibi

3. TATARCIK Programlama Studio

TATARCIK Programlama Studio
Ayrıca GPS olarak bilinen TATARCIK Programlama Studio, yazılım ve geliştiriciler arasındaki etkileşimi kolaylaştıran son derece gelişmiş Ücretsiz bir IDE. Doğal kaynak navigasyon arayüzü ile GPS kullanımı kolay, kolaylaştırır ve ayrıca programda temel fikirleri vurgulamak için yardımcı olur.
Özellikler:
• Çoklu destek
• Kod Derleme destekler, hata Ayıklama, Kod Kapsamı, Profil, Otomatik tamamlama.
• Ayrıca Kod gibi bir sınıf tarayıcı:Bloklar ve ayrıca Kod Yeniden yapılandırması destekler.
• Programcının işini kolaylaştırmak için sürükle ve bırak özelliği vardır.

4. CodeLite

codelite
CodeLite bir başka mükemmel, ücretsiz, açık kaynak ve çapraz platform IDE için C/C++ programlama dilleri üzerinde çalışan tüm önemli Platformlar (Windows, Linux ve OS X)
Özellikleri:
Compiler ve Hataları • genel destek Buildtab ile tıklanabilir.
• Yeni nesil hata ayıklayıcı destekler.
• Ev parser dayalı son derece hızlı ve güçlü bir kod tamamlama aracı var.
• Ayrıca bina Widget tabanlı uygulamalar için kendi RAD aracı vardır.
• Statik kod analizi, yeniden düzenleme, sınıf tarayıcı ve profil destekler.

5. Eclipse

Eclipse
Eclipse C++ IDE C ve C++ ile dinamik ve statik kitaplıkları ile uygulamalar oluşturma olanağı sağlayan C ve C++ için proje tabanlı şablonları bir sürü içerir. Web geliştiriciler arasında daha popüler yapmak inanılmaz özellikleri içerir.
Özellikler:
• Özgür ve açık kaynak kodlu bir IDE
• Destekler çoklu
• kod tamamlama C/C++için yeniden düzenleme hızlı ve Destekler.
• Bu IDE Çoklu Oturum gdb debugger ile bütünleşmesine.
• Otomatik girinti, anlamsal vurgulama ve biçimlendirme, kod katlama, parantez eşleme ve şablonları (biçimlendirme stilleri bir seçim sağlar) geliyor.
• Uzak bilgisayarlar üzerinde oluşturma, yürütme ve basit bir şekilde istemci sistem hata ayıklama projeleri bile geliştirme araçları kullanabilirsiniz.
Ayrıca Kontrol: 20 Yollarını Öğrenmek C Programlama İçin Ücretsiz

6. Qt Yaratıcısı

qt
Bu bir çapraz platform C++ IDE, ama özgür değildir. Ancak kullanım bir ay boyunca ücretsiz deneme sürümü alacaksınız.
Özellikler:
• Çoklu destekler.
• Hata Ayıklama, Profil oluşturma, Otomatik kod tamamlama ve Yeniden Derleme destekler.
• Sürükle ve bırak işlevselliği vardır.
• Statik Kod Analizi destekler.

7. Dev C++

kan
Dev C++ C ve C++ programlama dilleri için iyi bir IDE. Bu bir açık kaynak IDE destekler ama sadece Windows için değil, Linux ve OS X
Özellikleri:
• Kod Tamamlama.
• Destek profili.
• Sınıf Tarayıcı.
• GCC tabanlı derleyici desteği.
• Özelleştirilebilir sözdizimi renklendirme editörü.
(GDB kullanarak) • entegre hata ayıklama.
• Hızlı Windows, konsol, statik kütüphaneler ve DLL oluşturmak.
• Düzenleme ve derleme Kaynak dosyaları.
• Araç Yöneticisi.

8. C++ Builder

cbuilder
C++Builder veritabanı bağlantısı olmadan Windows için yüksek performanslı C++ uygulamaları bina başlamak için harika bir yoldur. Ücretsiz bir IDE değildir, özel lisans vardır. Windows ve OS X çalışıyor.
Özellikler:
• Hata ayıklama.
• GUI Builder.
• Profilleme.
• Otomatik tamamlama.
• Sınıf tarayıcı.
• Derleyici.
• Yeniden düzenleme destekler.

9. Anjuta

anjuta
Anjuta güçlü ve verimli geliştirme için basit ve kullanışlı kullanıcı arayüzü sağlayarak odaklanan gelişmiş programlama olanakları bir dizi oluşan çok yönlü bir IDE. Açık kaynak yazılım olsa ama sadece Linux platformunu destekler.
Özellikler:
• Anjuta UI güçlü araçları çalıştırmak için basit olacak şekilde oluşturulur.
• Kolay sihirbazlar ve proje şablonları yeni proje ile başlamak için.
• Tam pansiyon hata ayıklama için GDB entegre.
• Proje yönetimi.
• Uygulama Sihirbazı.
• Kaynak Düzenleyicisi.
Profiler ve daha birçok araçları.

10. MonoDevelop

monodevelop
MonoDevelop geliştiricilerin Linux, Windows ve Mac OS X masaüstü ve web uygulamaları yazmak için izin verir. Ayrıca bağlantı noktası .Visual Studio ile Linux ve Mac OS için oluşturulan NET uygulamaları tüm platformlar için aynı ve tek bir kod tabanı ile X.
Özellikler:
• Multi-platform.
• Metin Düzenleme Gelişmiş.
• Birden fazla dil desteği.
Entegre Debugger.
• Ayarlanabilir tezgah.
• Tam kod tamamlama ile web projeleri oluşturmak.

OVERLOADİNG

C/C++ Operatorlerin Aşırı Yüklenmesi (Operator Overloading) C++’ da +,-,*,!,++ gibi operatörler fonksiyonlar yazılarak bu operatörlere ...