Kayıtlar

C++'DA OPERATÖRLERİN AŞIRI YÜKLENMESİ

                  C++' da  şu ana kadar konsola veri yazmak için kullandığımız “<<” operatörü aşırı yüklenmiş yani başka bir görev daha eklenmiş bir operatördür. Bu operatörün normal görevi bit işlemlerinde sola kaydırma yapmaktır. Yineaynı şekilde virgül konsoldan veri okumak için kullandığımız “>>” operatörü normalde bit işlemlerinde sağa kaydırma yapmak için kullanılır. Fakat C++ dilinde bu operatörde aşırı yüklenmiş ve normal görevine ek olarak konsoldan karakter okuma görevi de verilmiştir. Kodların durumuna göre bu operatörler okuma, yazma veya kaydırma yaparlar.              Bit kaydırma operatörlerine benzer şekilde biz de operatörlere farklı görevler yükleyebiliriz. Aşırı yüklenmiş operatörler aslında özel ada sahip birer fonksiyondur. Bu fonksiyonla operatörün ek olarak hangi işlevi gerçekleştireceği belirlenmektedir. Tıpkı diğer fonksiyonlar gibi aşırı yüklenmiş operatörlerin de geri dönüş tipi ve parametreleri bulunmaktadır.              Eğer (+) oper

VIRTUAL NEDİR?

   VIRTUAL FUNCTION ( SANAL FONKSİYONLAR)           Örneğin, dikdörtgen olarak tanımlı bir sınıfımız bulunsun.         class dikdortgen {          public:         int x,y;         int boy,en;         public:         int alan();         };         int dikdortgen :: alan() {         return en *boy;         }     Yukarıdaki bu tanıma uyan diğer bir iki boyutlu şekil ise, kare’dir. Bilindiği üzere kare kenarları birbirine eşit bir dikdörtgendir. O halde kare sınıfını aşağıdaki şekilde tanımlayabiliriz.         class kare:public dikdörtgen{ // kare sınıfı, dikdörtgen sınıfından miras alır.         public:         int alan();          };          kare::alan(){          return en * en ;          }          };         Yukarıdaki kare sınıfında görüldüğü üzere, her kare’nin zaten sahip olduğu x,y koordinatları ve en, boy bilgisi yeniden kodlanmamış bu bilgiler miras ile alınmıştır. Alan hesaplamak i

CLASS DEFINITION (SINIF TANIMI) NEDİR?

        Bir sınıfın veri bileşenlerine veri üyeleri, fonksiyon bileşenlerine ise üye fonksiyonlar   adı verilir. int gibi doğal bir veri tipinin kopyasına değişken denirken, kullanıcı tanımlamalı tiplerin kopyaları da nesne olarak adlandırılır. Veri üyeleri ve üye fonksiyonları olan tipler, C++’ta class anahtar kelimesi kullanılarak tanımlanır.        public:  ve  private:  etiketleri üye erişim belirteçleri olarak adlandırılırlar.Public üye erişim belirtecinden sonra bildirilen herhangi bir üye fonksiyona veya veri üyesine, program zaman sınıfının bir nesnesine eriştiği zaman erişilebilir. Private üye erişim belirtecinden sonra bildirilen herhangi bir veri üyesine veya üye fonksiyona sadece o sınıfın üyeleri erişebilir.       Sınıfla aynı isimde olan üye fonksiyona dikkat ediniz.Bu fonksiyona sınıfın yapıcı fonksiyonu(constructor) adı verilir.Bir yapıcı; sınıf nesnesinin veri üyelerine ilk değerleri atayan özel bir fonksiyondur.               class Name               {  

PROTECTED, PRIVATE, PUBLIC NEDİR?

       Protected:           Protected aslında Private'e benzer. Protected özelliği atanan bir değişken veya metod, sadece sınıf içerisinden veya türetilen bir sınıf içerisinden erişilebilir.Yani bir sınıf extend ettiği sınıfın Protected üyelerine erişebilir ama Private üyelerine erişemez.      Private:             Private üyelere o sınıf dışından herhangi bir şekilde erişilemez ve bu üyeler kalıtım yoluyla aktarılmaz.Private olarak tanımlanan değişken ve fonksiyonlar sadece o sınıfın kendi metotları tarafından kullanılabilir. Yani işin özü o metod veya değişken sadece o sınıfa özel olur.Bir değişkeni Private olarak tanımladığınızda ve bu değişkenin başka bir sınıf tarafından kullanılması gerektiğinde bu değişkeni döndüren bir Public fonksiyon yazarak işlemi gerçekleştirebilirsiniz.     Public:            Public kullanılan en yaygın tanımdır. Bir metod veya değişken Public olarak tanımladığında o üyeye ilgili sınıfın her yerinden erişebilirsiniz. Aynı zamanda s

ENCAPSULATION, INHERITANCE, POLYMORPHISM NEDİR?

Encapsulation :           Bir nesnenin bazı özellik ve işlevlerini diğerlerinden saklanabilmesi, erişimin sınırlandırılabilmesidir. Yani private tanımladığımız alanları kullanıcıdan saklamamız anlamına gelir ki zaten kullanıcının bunu kullanmasına gerek yoktur ve hatta kullanmaması gerekmektedir. Encapsulation’u bir telefona benzetebiriz. Telefonun düğmeleri ortada  dururken bir çok parça telefonun içerisinde gizildir. Zaten kullanıcının bunları kullanması gerekmez hatta dokunmaması gerekir. Aynı şekilde bir nesnenin kendinde bulunan bileşenleri kötü niyetli veya bilinçsiz kullanımlardan gizlemesi gerekir. Encapsulation, programcıya nesneleri koruma gücünü verir. Inheritance :           Kalıtım (inheritance), bir nesnenin diğer bir nesnenin özelliklerini kazanması işlemidir. Diğer bir deyişle bir class’ın başka bir class’daki property ve metodlara sahip olmasına inheritance denir. Bu önemlidir, çünkü hiyerarşik sınıflandırmayı destekler. Bir class’ı

C++ ' DA # KULLANIMI

Resim
    #     ile başlayan satırlar ön derleyici (“preprocessor”) içindir. Örnek programımızda # ile  başlayan satır ön derleyiciye giriş/çıkış ile ilgili    iostream başlık dosyasını (“header file”)  programa dahil etmesini söyler. int main ()   her C++ programında olması gerekir.  

C ++ ' DA ÖRNEK PROGRAM

#define kullanarak verilen iki sayıdan büyüğünü bulan makroyu yazalım : #include < iostream > #define p(x,y) ( (x) > (y) ? (x) : (y) ) using namespace std; int main( )  {     int sayi1 , sayi2;     cout << "1.Sayiyi Giriniz : ";     cin>> sayi1;     cout << "2.Sayiyi Giriniz : ";     cin>> sayi2;     cout<< p(sayi1 , sayi2);     return 0 ; }

NEW VE DELETE OPERATÖRLERİ

NESNE İŞARETÇİLERİ New Komutu                        İşletim sisteminden uygun miktarda bellek alanı alır. Döndürdüğü değer bu alanın başlangıç adresidir. Eğer işlem başarısız olursa 0 (NULL) döndürür.                Nesne işaretçilerinde new kullanıldığında yukarıdakine ek olarak nesnenin kurucu fonksiyonu çalıştırılır. Böyle nesne yaratılırken başlangıç değerleri atanmış olur.            "new operator" için derleyici arka planda kod üretir.Örnek vermek gerekirse ;           int *a  = new  int(16);           lib_func(a);           delete a;               bu örnekte new komutu ile delete komut gördük.Birazdan bu komutu açıklayıcam. Delete Komutu              Belleğin verimli ve etkin kullanımı için, new operatörünün kullanımına karşılık olarak bellek alanı kullanımı bittiğinde işletim sistemine delete operatörü ile geri verilmelidir.            new ile aşağıdaki biçimde bir nesne dizisi için bellek alındığında                    

CONSTRUCTOR VE DESTRUCTOR NEDİR?

                       Constructor  (Yapılandırıcı) fonksiyon, kendi sınıfı içerisindeki üyeleri veya oluşturduğu nesnenin ilk çıkış sahnesini oluşturan fonksiyonlardır.Nesneler, genelde yaratılırken ilk değer atamalarını kendi kurucu fonksiyonları sayesinde yaparlar.Böyle bir kural şart değildir, ancak nesne yönelimli programlama dilleri ü zerinde kod yazan programcılar genelde bu yaklaşım ile sınıflarını tasarlarlar.Bakıldığı zaman programın optimizasyonu açısından da constructor fonksiyonları çok yararlıdır.                         Destructor (Yıkıcı)  olarak adlandırılan fonksiyonlar ise, Constructor fonksiyonunun yaptığı işin tersini yaparlar, yani görevi biten nesneyi yok ederler.Bir sınıfın (class) üyesi olan bir değişken (orn:string tipli) görevini noktaladığı durumda ~destructor() fonksiyonu otomatik cağrılarak, üzerinde caliştığı nesneyi devre dışı bırakır. C++ programlama dili içerisinde Destructorlar bulunurken, Java dilinde bu fonksiyonlar kaldırılmıştır.Nedeni ise, pro

GUI (GRAFİKSEL KULLANICI ARAYÜZÜ) NEDİR?

    GUI                    Grafiksel Kullanıcı Arayüzü , bilgisayarlarda işletilen komutlar ve bunların çıktıları yerine simgeler, pencereler, butonlar ve panellerin tümünü ifade etmek için kullanılan genel addır.                    Grafiksel kullanıcı arayüzü, bilgisayar kullanıcılarının komut satırı kodlarını ezberlemeden fare,klavye gibi araçlar sayesinde bilgisayarları kontrol etmelerini sağlamıştır. Günümüzdeki programların bir çoğu GKA (Genel Kullanıcı Arayüzü) ile birlikte gelse de, birçok bilgisayar kullanıcısı daha hızlı olduğu gerekçesiyle komut satırını GKA’larla birlikte kullanmaya devam etmektedirler. Bilgisayar programları GUI sayesinde kullanıcı ile iletişimde komut satırından kurtulmuşturlar. Ve kullanıcılarda bilgisayarı kullanabilmek için komutları ezberlemek ve yazmaktan kurtulmuşlardır.

LINKER (BAĞLAYICI) NEDİR?

Resim
             Bir derleyici  tarafından üretilmiş olan kodları bağlayarak işletim sisteminin çalıştırabileceği tek bir kod üreten programdır.O bject dosyasına çevrilen bir veya birden çok dosyanın birbirleri ile ilişkilendirmesi ve tek bir çalıştırılabilir dosyaya örneğin (explorer.exe) çevrilmesini sağlayan yazılımdır.               Kodun birden fazla parçaya bölünmesi ve her parçanın ayrı ayrı üretilmesi durumunda bu parçaların birleştirilmesi ve tek bir program halinde üretilmesinden sorumlu olan programlara bağlayıcı (linker) adı verilmektedir.

DEBUGGER (HATA AYIKLAMA) NEDİR?

Resim
              DEBUGGER                    Bug kelimesi ingilizcede böcek anlamına              gelmektedir.Günümüzdeki bilgisayar oyunlarında da "bug" terimi buradan gelmektedir.Debug'un anlamı  ise ayıklama demektir.Daha demin dediğim bilgisayar oyunlarındaki "bug" ları yani böcekleri bulup düzenleme (ayıklama) işlemine debug diyebiliriz.                      Uygulamarımızı geliştirirken heralde en çok yaptığımız işlemlerin başında hata ayıklama (Debug) işlemleri geliyor. Gerek uygulamamızın hata verdiği durumlarda gerekse uygulamamızdan beklenmedik değerler aldığımızda hatta programlamaya yeni başlayanlar kodların nasıl çalıştığını daha iyi anlayabilmek adına debug işlemleri programcı için büyük kolaylıklar getirmektedir.

PROCESS VE THREAD ARASINDA FARK NEDİR?

                 Process yani diğer bi anlamıyla işlem b ir işletim sistemi üzerinde herhangi bir dil ile kodlanmış ve bir compiler (derleyici) ile derlenmiş ve daha sonra hafızaya  yüklenerek işlemcide çalıştırılan programlara verilen isimdir.           Genel anlamda her program bir process olarak düşünülebilir, ancak bir programın birden fazla processi olabileceği gibi her process, yeni başka processlerde üretebilir. İşletim sisteminin tasarımına göre değişmekle birlikte işlemler (process)  kendi adres alanında çalışırlar ve hafıza koruması uygulanır. Bu sayede bir işlemin, başka işlemlerin bilgisine erişmesi engellenmiştir.           İşlemler arası iletişim aynı bilgisayarda çalışan farklı programların haberleşmesini hedef alır, bu durum ağ üzerinde birbiriyle haberleşen bilgisayarlara benzetilebilir.          Thread (iplik) kavramı, aynı process  ortamında birden fazla iş yürütme imkanı sağlar. Bir process’in çalışmaya başlaması ile birlikte bir thread oluşturulur ve bu p

PARAMETRE VE ARGÜMAN ARASINDAKİ FARK NEDİR?

            Metotlara istediğimiz anlarda istediğimiz verilerle işlem yaptırabilir yani istediğimiz veriyi aktarabiliriz. Bunu argümanlar ile yapabiliyoruz. Bir metoda gönderilen  değere  argüman   denir. Bu değerleri alan ve işlem yapan değişkenlere ise  parametre   denir. Bir metoda birden çok ve değişik tipte argüman gönderilebilir.Örneğin ;                            int topla (int sayi1 , int sayi2)                 {                return sayi1 + sayi2 ;               }           Burada sayi1 ve sayi2 parametre,               int a =10 , b=69;                int toplam = topla (a ,b);           Buradada a ve b argüman oluyor.     

C'DE STRİNG FONKSİYONLARI

                                    C dilinde string bildirimi için bir tip deyimi yoktur. Bu yüzden, bir String'e bir  dizi  gözüyle bakılır. Genel olarak bir S tring'in bildirimi:  char string_adı[eleman_sayısı]; şeklindedir.  Örneğin 10 elemanlı bir isim bilgisi OgrenciAdi adlı bir S tring  ile tutulmak istenirse: char OgrenciAdi[10]; şeklindedir. Diğer dizi bildirimlerinde olduğu gibi, karakter dizilerine başlangıç değeri verilebilir. Örneğin aşağıda verilen iki bildirim aynı anlamdadır: char ktr[7]={'e','z','g','i','n','u','r','\0'}; char ktr[7]="ezginur"; birinci satırdaki bildirimde '\0' (NULL) sembolü karakter dizisinin sonlandığını gösterir. Stringler bazen bir pointer (işaretçi) ile gösterilebilir. char *ktr=“Ezginur"; ya da char *ad; ad=“Ezginur"; kullanılabilir. Elemanları S tring olan diz

GNU VE GPL NEDİR ?

Resim
             GNU GNU'nun açılımı, 'GNU is Not Unix'tir. Yani GNU, 'GNU, Unix değildir' anlamına gelmekte olan özyinelemeli  bir kelimedir.   Richard M. Stallman, 1970'li yıllarda MIT (Massachusetts Institute of Technology)'nin Yapay Zeka laboratuvarlarında serbest yazılımı bir yaşam şekli olarak benimsemiş bir grupla beraber 1980'li yılların başına kadar yazılım geliştirici olarak çalışmıştır. Bu grup ile olan birlikteliğinin sona erişinin ardından kendisini o dönemlerde ivme kazanan bazı akımlardan dolayı  benimsenmeye başlanılmış yeni bir sosyal sistem içerisinde bulmuştur. 1984 yılında tamamen özgür yazılımların meydana getirdiği bir işletim sistemi ve işletim sistemine ait araçların geliştirilmesi çalışması böylece başlamış oldu. İşte bu çalışmanın adı GNU idi. Yazılan özgür yazılımların bir şemsiye altında toplanması için 1985 yılında yine Stallman tarafından FSF kuruldu ve GNU yazılımları korumak üzere GPL adı verilen yazılım lisansı duy