Category: CPP

  • CPP 007 – Cout & Cin

    Ekrana girdi çıktı almak için kullandığımız iki nesnemiz. Daha önceki derslerde çeşitli örneklerle gördük. Şimdi ufak bir takım farklara bakalım: Araştıralım

  • CPP 006 – Yorumlar

    Programın derlenme esnasında dikkate alınmayan. Makinalar için hiçbir anlam ifade etmeyen ama biz insanlar için çok anlam ifade eden, kimi zaman bizi güldüren kimi zamansa düşündüren varlıklara “comment” yani “yorum” diyoruz. C++’da iki tip yorum bulunur. Tek satırlık yorumlar ve çok satırlık yorumlar. Tek satırlık yorumlar // işaretiyle başlarken; çok satırlı yorumlar /* işaretleriyle başlayıp…

  • CPP 005 – Karakterler

    Char Harfler, rakam, noktalama işareti gibi şeylere karakter diyoruz. ASCII (İngilizce: American Standard Code for Information Interchange, Türkçe: Bilgi Değişimi İçin Amerikan Standart Kodlama Sistemi) Latin alfabesi üzerine kurulu 7 bitlik bir karakter kümesidir. İlk kez 1963 yılında ANSI tarafından standart olarak sunulmuştur. ASCII’de 33 tane basılmayan kontrol karakteri ve 95 tane basılan karakter bulunur. Kontrol karakterleri metnin akışını kontrol eden, ekranda çıkmayan karakterlerdir. Basılan karakterler ise ekranda görünen, okuduğumuz metni…

  • CPP 004 – Mod & Increment

    Bir sayının başka bir sayıya bölümünden kalanı mod operatörü yardımıyla bulabiliriz. % sembolüyle gösterilir. 5%2 bize 1 sonucunu verir 7%4 bize 3 sonucunu verir … Şimdi kullanıcıdan aldığımız bir sayının çift mi tek mi olduğunu söyleyen bir program yapalım: Kullanıcıdan girdi almak için cin nesnesini ve >> operatörünü kullanıyoruz. Programımızı çalıştırdığımızda terminalden sayı girmemiz bekleyecek.…

  • CPP 003 – Temel Matematik İşlemler

    Bu yazımızda gibi konulardan bahsedeceğiz. Temel işlemler Aşağıda 4 temel matematik işlemini görüyoruz. Bu işlemleri yapmak için kullandığımız +,-,*,/ sembollerine “Arithmetic operator” denir. Kodu çalıştırdığımızda alacağımız çıktılar ifadelerin yanına yorum satırı yardımıyla yazılmıştır. Çıktıları incelediğimizde normal olmayan bir şey farkediyoruz. Toplama(+) çıkarma(-), çarpma(*) işlemlerinin sonucu doğruyken bölme(/) işleminin sonucu yanlış. 5/3 işleminin sonucu matematikte 1.666……

  • CPP 002 – Hello World

    Bu yazımızda bir visual studio üzerinde bir proje oluşturup ilk programımızı yazacağız. Proje oluşturma Hello World Projemiz oluştuğunda karşımıza aşağıdaki gibi bir ekran gelecek. toolbarda Yeşil üçgene tıklayıp programımızı çalıştırdığımızda karşımıza siyah bir konsol ekranı çıkacaktır. Bu ekranda “Hello World!” yazısını göreceğiz. Şimdi kodumuzu incelemeye başlayalım. Yorum satırları Yeşil olan tüm satırlar yorum satırıdır. #include…

  • CPP 001 – Kurulum

    C++ kurulabilen bir şey değildir. Tıpkı Türkçenin kurulabilir olmadığı gibi. Bizler kod yazmak için bir metin editörüne (tıpkı office word gibi) bir de yazdığımız kodu makina koduna çevirecek bir compiler’a ihtiyacımız var. Klasik metin editörleri (örneğin Notepad) tek renkli, sıkıcı şeylerdir. Bizler daha cafcaflı işimizi kolaylaştıran bir şey arıyoruz. Hayatımızı inanılmaz derecede kolaylaştıracak bu şeyin…

  • CPP 000 – Giriş

    Bu yazı serisi, C++ programlama dili hakkında tuttuğum notları içerir. Programlama Dili Nedir? Bilgisayar en temelde 2 parçadan oluşur. Bunlar işlemci (yani CPU), bellek yani(RAM). İşlemci, bellekte bulunan komutları okur ve verilen komuta göre bellekte bulunan veriyi değiştirir/manipüle eder. Yani bellekte 2 şey tutuyoruz: Programlama dili, bu komutların bütünü; program, ise bu komutların anlamlı bir…

  • Static cast ile reinterpret cast arasındaki fark

    Static cast ile reinterpret cast arasındaki fark

    https://stackoverflow.com/questions/573294/when-to-use-reinterpret-cast The short answer: If you don’t know what reinterpret_cast stands for, don’t use it. If you will need it in the future, you will know. Full answer: Let’s consider basic number types. When you convert for example int(12) to float (12.0f) your processor needs to invoke some calculations as both numbers have different bit representation. This is what static_cast stands for. On the…

  • Containers

    Containers

    Standard Library Array Vector https://stackoverflow.com/questions/200384/what-is-constant-amortized-time Forward List tek taraflı linked list https://nitishhsinghhh.medium.com/introduction-to-forward-list-in-c-stl-and-important-functions-217fd4d0af59 List double linked list https://hackingcpp.com/cpp/std/sequence_containers.html https://hackingcpp.com/cpp/std/associative_containers.html List Operations Deque Tree Data Structure Sets Map Maps and Insertion Maps in C++17 Multiset and Multimap Searching Multimap Unordered Associative Containers Associative Containers and Custom Types Nested Maps Queues Priority Queues Stack Emplacement Mastermind Game Practical

  • Algorithms & Lambda Expressions

    Algorithms & Lambda Expressions

    Algorithms Overview En çok kullanılan bir takım algoritmalar STL kütüphanesinde bulunmaktadır. Bunlar iyi implemente ve test edilmiş algoritmalar olup hali hazırda kullandığımız container’larla da uyumludur. Algorithms with Predicates A predicate is a C++ function returning a boolean or an object having a bool operator() member. A unary predicate takes one argument, a binary takes two, and so…

  • Special Member Functions and Operator Overloading

    Special Member Functions and Operator Overloading

    Constructor Objenin oluşturulma aşamasında çalışan ve gerekli atamalarla işlemleri yapan fonksiyondur. Sınıfın member variable’larına constructor içerisinde ilk değer ataması yapılır. C++ 11 den itibaren ilk değer atamısını constructor kullanmadan yapabiliriz: Constructor delegation Bir constructor’den başka bir constructor’ı çağırıp kod tekrarını minimize etmek amaçlanır. Constructor types Copy Constructor Var olan bir nesneden başka bir nesneyi initialize…

  • Files and Streams

    Files and Streams

    File Stream Streams and Buffering C++’da stream’ler buffering yapar. Bunun temel amacı sistem çağrılarını minimize etmektir. Yazma operasyonlarında veri, bellekteki buffer’a yazılır. Buffer dolduğunda ise veri işletim sistemine gönderilir. Bu duruma “flushing” denilir. Ne zaman flush yapılır? manual olarak flush yapabiliriz: endl equivalent of “\n” << flush Unbuffered Input and Output File Modes ios::in Open…

  • Strings

    Strings

    Basic String Operations substr() Returns a newly constructed string object with its value initialized to a copy of a substring of this object. [1] Constructors Searching Strings find & rfind Bir string içerisinde aranması istenilen karakter veya string’in indeksini döndürür. Eğer aranan şey string içerisinde yoksa std::string::npos döndürür. rfind, find gibi çalışır. Tek farkı sondan başa doğru…

  • Move Semantics

    Move Semantics Bir objeden başka bir objeye kaynakların verimli bir şekilde aktarılmasını sağlar. Örneğin garajınızda bir arabanız var. Anahtarını arkadaşınıza verip “artık bu senin” diyorsunuz. Artık bir arabanız yok ve arabayı tekrardan kullanmak için arkadaşınızın anahtarı geri vermesi gerekli. Arabayı arkadaşınıza vermek için bir kopya oluşturmadınız onun yerine var olanı transfer ettiniz. Value Semantics Verileri…

  • Reference & Pointer