Blog altyapısınu değiştirdikten sonra bu gönderide bazı bozulmalar meydana geldi. Elimden geldiğince bunları düzelttim ama yine de gözden kaçan noktalar olabileceğini unutmayınız.
C++ eğitim derslerinin ilk dersi olan Merhaba C++ dersinden herkese merhaba!
Eğer derslere giriş yazımız olan “C++ Dersine Giriş” yazısını okumadıysanız mutlaka okumanızı tavsiye ediyorum. Çünkü, ders için gereken yazılım bilgilerinden tutun da derslerin nasıl işleneceğine ve hatta C++ dilinin tarihi hakkında bilgilere kadar birçok şeyi giriş yazısına eklemeye çalıştım. Giriş yazısını okuduğunuzu varsayarak ilk dersimize başlayabiliriz.
Bu işleyeceğimiz derste her dilde olduğu gibi C++ dilinin de sahip olduğu kuralları, yapıları ve mantığını inceleyeceğiz. Daha sonra bahsettiğimiz kuralların ve yapıların örneklerini; programlamaya ilk defa başlayan kişileri unutmadan detaylı bir şekilde anlatacağım. Kısacası bu derste bir C++ uygulamasının temellerinin neler olduğunu ve bu programların çalışması için gerekli temel kodların ve bu kodların görevlerini öğreneceğiz.
Bu derste öğrendikleriniz ileride yapacağınız her programda kullanacağınız temel özellikler içermektedir. Tabi ileride işleyeceğimiz derslerde de burada gördüğümüz bilgileri kullanacağımız için bu derste göreceklerinizi iyi öğrenmeniz de fayda var.
Programcılık dünyasının geçmişten günümüze kadar getirdiği “Merhaba Dünya!” anlamına gelen “Hello World!” cümlesini belki daha önce duymuş veya görmüşsünüzdür. “Hello World!” ifadesi yeni keşfedilen veya öğrenilen sistemde basitçe ekrana verilen mesajdır. Birçok büyük firma programlama dilini tanıtırken bu somutlaşmış ifadeyi kullanmaktadır. Yani amaç: yeni öğrenilen programlama dilinde basit bir yazı yazmak ve programı hayata geçirmektir. (Hello World hakkında ayrıntılı bilgi: WikiPedi)
Şimdi, C++ Dersine Giriş yazısında da belirttiğim gibi Visual Studio kullanıyorum. Dolayısıyla şimdi sizlere C++ dilindeki ilk uygulamamızı Visual Studio kullanarak oluşturmayı göstereceğim.
Visual Studio veya Visual Studio Express programını çalıştıralım. Eğer başka bir derleyeci kullanıyorsanız onu başlatabilirsiniz. (Ör: Dev C++ vs)
Yeterli yazılım bilginiz yoksa bu işe sıfırdan başlıyorsanız Visual Studio kullanarak benimle birlikte adım adım daha kolay öğrenebilirsiniz ve sorunları daha kolay çözebiliriz. Çünkü, yazıya ek olarak görsel kaynaklarda Visual Studio yazılımına ait görselleri de kullanacağım. (Ayrıntılı bilgi "C++Dersine Giriş" yazısında)
Visual Studio dışında yazılım kullanmanız kodlarda değişikliğe neden olmaz ama programcılığa dair ilk adımı atıyorsanız arayüz ve özellik farkından dolayı size bazı alanlarda zorluk yaşatabilir.
Visual Studio programını açtığınızda varsayılan olarak sizi “Start Page” adındaki başlangıç sayfası anlamına gelen sayfa karşılar. Dilerseniz sizi karşılayan “Start Page” sayfası üzerinden sol taraftaki menüyü kullanarak “New Project” bağlantısına tıklayabilir böylece projeyi oluşturmamız için gerekli diyalog penceresine ulaşabilirsiniz:
Sizi karşılayan başlangıç ekranından; resimde gördüğünüz gibi soldaki Start menüsünden proje oluşturma diyaloğunu kolay bir şekilde açabiliyoruz.
Eğer başlangıç ekranı yani “Start Page” Visual Studio açıldığında gelmediyse veya siz başlangıç ekranını kullanmak istemiyorsanız; programın üst kısmındaki menüden “File > New Project” yolunu izleyerek veya “Ctrl + Shift + N” tuş kısayolu ile de aynı proje oluşturma diyaloğuna ulaşmanız mümkün.
Programın menüsünü veya kısayol tuşunu kullanarak da yeni proje oluşturma diyaloğuna ulaşabiliriz
Neyse anlatımı uzun olsa da projeyi oluşturacağımız diyaloğa kolayca hep beraber ulaştığımızı düşünüyorum :-)
Şimdi gelelim üstteki gerekli yordamları izledikten sonra ekrana gelen bir başka diyaloğa. Açılan diyaloğun sol tarafındaki menüde Visual C++ dilini seçiyoruz. C++ dili, menü içerisinde sizin tercihlerinize bağlı olarak en üstte veya resimde görüldüğü gibi ‘Other Languages’ menüsü altında bulunabilir. Mesela bende varsayılan olarak Visual C# dili üst tarafta görülürken C++ dili varsayılan olarak ‘Diğer Diller’ anlamına gelen ‘Other Languages’ menüsü altında yer almaktadır.
Resimde gördüğünüz gibi programlama dilini ‘Visual C++’ olarak seçtikten sonra menünün sağ tarafındaki bölümden proje tipini ‘Win32 Console Application’ olarak seçiyoruz. Daha sonra resimde de belirtildiği gibi proje ismini ve kayıt yerini seçip ‘OK’ butonuna basıyoruz.
Resmin üstüne tıklayarak tam ekran görüntüleyebilir böylece resmin üstünde anlatılanları daha rahat görüntüleyebilirsiniz. Gerekli açıklamalar üst paragrafta ve resmin içerisinde mevcuttur.
Ekrana gelen diyalog üzerinden gerekli işlemleri yaptık ve ‘OK’ butonuna bastık, şimdi ne olacak? Evet ekrana alttaki resimde gördüğünüz gibi son bir diyalog penceresi daha gelecek. Bu pencere bizim için şuan önem arz etmiyor. O nedenle ekrana gelen bu diyaloğu, diyaloğun alt kısmındaki ‘Finish’ butonuna basarak projemizi hızlıca varsayılan ayarlarla oluşturmuş oluyoruz.
Proje konfigürasyon diyaloğunu resimde ve üst paragrafta belirtildiği gibi hızlıca geçiyoruz ve projemizi oluşturuyoruz. Böylece projemiz oluşmuş oluyor.
Projeyi adım adım anlattığım gibi oluşturduysanız aşağıdaki gibi bir kod ekranıyla karşılaşmış olmalısınız. Eğer farklı kod blokuyla karşılaşırsanız bu kullandığınız yazılımın size örnek kod sunmasından kaynaklı veya kullandığınız derleyicinin, dili kendisine göre biçimlendirmesinden ve yeni özellikler katmasından kaynaklı olabilir. Eğer farklı kod blokuyla karşılaşırsanız; karşılaştığınız kod blokunu silin ve resimde gördüğünüz kod bloğunu yazın hatta daha kolay olması açısından alt tarafta paylaştığım kod blokunu kopyalayıp projenize ekleyebilirsiniz. Tabi kopyalamadan önce projenizde ki kodları silmeyi unutmayın.
Projeyi oluşturduktan sonraki ekran resimde gördüğünüz gibi. Resmin içerisinde belirttiğim gibi bazı derleyicilerden yani yazılımlardan kaynaklı varsayılan kodlar bu şekilde olmayabilir. Çünkü, bazı programlar size örnek proje kodları sunmuş olabilir veya dili kendilerine göre biraz yeni özelliklere bürüdükleri için farklı kod blokunu görebilirsiniz. Böyle bir durumla karşılaşırsanız üst paragrafta veya resimde belirttiğim gibi projenizdeki kodları silin resimde gördüğünüz veya alt tarafta gördüğünüz kod bloğunu ekleyin.
Projenin temel kod bloku bu şekilde:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int main()
{
return 0;
}
Geldik şimdi ekrana “Hello World!” mesajı yazdırmaya. Ekrana mesajı yazdırdıktan sonra yazdığımız bütün kodların ne anlama geldiğini dersin aşağıdaki bölümünde detaylı bir şekilde göreceğiz.
Şimdi temel kod blokuna ek olarak 2 satır kodla tanımlama ve ekrana mesaj verme kodlarını ekliyoruz(altta yeni eklediğimiz kodun yanına yeni olduğuna dair notu ekledim) ve kodu ekledikten sonra kodlarımız bu şekilde görünüyor:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream> //Yeni eklenen tanımlama kodu
int main()
{
std::cout << "Hello World"; //Yeni eklenen mesaj verme kodu
return 0;
}
Bu kodların ne olduğunu aşağıda “Temel İfadeleri ve Kuralları Tanıyalım” başlığının altında öğreneceğiz. Şimdilik sadece ilk programı görmek amacıyla; Visual Studio üzerinde F5 kısayolu ile veya alttaki resimde gösterdiğimiz gibi kodları derleyen butona basıyoruz:
Resimde ve üstteki paragrafta belirtildiği gibi projemizdeki kodları derliyoruz.
Üstteki işlemi uyguladıktan sonra alttaki resimdeki gibi bir diyalog ile karşılaşabilirsiniz:
Derleme işleminde ekrana resimde gördüğünüz gibi bir mesaj kutusu çıkabilir. Bu çıkan mesaja resimde de belirtildiği gibi “Yes” butonuna basarak cevap veriyoruz ardından programın çalışmasını bekliyoruz.
Üstteki resimde gelen mesaj varsayılan olarak her programı çalıştıracağımızda karşımıza çıkar. Dilerseniz bu mesajı her seferinde görmemek için; diyalog penceresi üzerindeki 'Do not show this dialog again' seçeneğini işaretleyebilirsiniz.
Tamam üstte de belirttiğimiz gibi diyalog penceresindeki “Yes” butonuna basarak devam ettik. Ama nedense ekrana hızlıca mesaj verilip uygulama penceremiz kapandı. Hatta birçoğunuz bunu görememiştir bile çünkü hızlı bir şekilde anlık olarak gerçekleşen bir olay. Peki neden böyle oldu? Çünkü uygulamamızın penceresini açık tutmayı sağlayan 1 satır kod daha yazmalıyız. Hemen ekranı açık tutan bu kodu aşağıdaki gibi ekleyelim:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
int main()
{
std::cout << "Hello World";
system("Pause"); // Yeni eklenen uygulamamızın penceresini açık tutan kod
return 0;
}
Bu eklediğimiz kodun ne olduğunu şimdilik boş verin, aşağıdaki “System(“Pause”); Nedir?” başlığında bunu açıklayacağım. Bu kodu ekledikten sonra yukarıda ki işlemleri tekrar uygulayarak programımızı çalıştırıyoruz ve çıkan sonuca bakıyoruz:
Bu sefer kodları gösterdiğim şekilde eksiksiz yazdıysanız sizde de ekrana böyle bir mesaj gelecek. Gördüğünüz gibi en son eklediğimiz kod ekranın açık kalmasının yanı sıra “Devam etmek için herhangi bir tuşa basınız” anlamına gelen İngilizce bir mesaj verdi. Biz herhangi bir tuşa basınca program kapanıyor. Ama biz herhangi bir tuşa basmadığımız sürece program açık kalıyor.
Üstte belirttiğim gibi gerekli açıklamalar sayfanın alt tarafında ki başlıklar altında verilecektir. Bu sadece örnek bir program denemesidir.
Bu arada ekrana verilen mesajlar arasında boşluk yok çünkü biz eklemedik. Dilerseniz siz “Hello World” yazısının sonuna boşluk veya istediğiniz karakteri bu şekilde ekleyebilirsiniz: “Hello World - “ ya da hazır sistem parametrelerini kullanarak boşluk bırakabilir hatta alt satıra geçmek gibi birçok işlemi yapabilirsiniz. Bahsettiğim bu parametre olayını aşağıdaki “Hazır Sistem Parametreleri” başlığı altında detaylı göreceksiniz.
Şimdi programcılığa yeni başlayan kişiler için bu kodlar Çince gibi geliyor olabilir (Çince bilmediğinizi varsayıyorum). Şuan bunu paylaşmamın nedeni: nasıl proje oluşturduğumuzu göstermek ve projenin temel yapısını ve mantığını anlatırken programların nasıl çalıştırıldığını anlatmaktı.
Buraya kadar her şey tamamsa bir sonraki adımda C++ dilinin temel özelliklerinden ve temel kod bloklarından başlayarak dilin temellerini öğrenelim.
“Bu Derste Ne Öğreneceğiz?” başlığında da belirttiğim gibi her dilin kendine özgü yapı ve kuralları hatta çalışma mantığı var diyebiliriz. Şimdi alttaki örnekte C++ programının çalışması için yazdığımız gerekli olan kodların açıklamasını ve çoğu dilinde sahip olduğu gibi C++ dilinin de sahip olduğu bazı önemli özellikleri göstereceğim. Tabi ki bu önemli özelliklere her programlama dilinin olmazsa olmazlarından yorum satırlarıyla başlıyorum.
Yorum satırı denilince aklınıza ne geliyor bilmiyorum ama yorum kelimesinin bunun anlamını tam olarak karşıladığını söyleyebilirim. Şimdi programcılığa yeni girdiğiniz için yorum satırlarının önemsiz olduğunu düşünebilirsiniz ama şimdi size vereceğim örneklerle az da olsa öneminin farkına varabilirsiniz.
Büyük yazılımları düşünün… Örneğin: Visual Studio olabilir, oynadığınız oyunlar olabilir hatta Facebook, Google gibi dev internet servisleri de olabilir. Bu yazılımlar dev boyuttadır. Yani, bunları oluşturmak için büyük gruplar halinde on binlerce, yüz binlerce satır kodlar yazılıyor. Ama yazılan bu kodlar o kadar fazla detaya sahip ve fazladır ki bazen yazılmış olan bu kodların veya kod satırlarının hangi amaçla yazıldığını anlamak kolay olmaz hatta bazen programcıyı çileden bile çıkarabilir. Bu nedenle, kodları yazarken yazdığımız kodların yanına yorum satırlarını kullanarak notlar alıyoruz.
Yorum satırlarını kullananlar sadece bu kadar büyük yazılımlar yapan firmalar veya programcılar değil elbette. Bazen bireysel olarak yazılan küçük boyuttaki programların kodlarını daha sonra tekrar baktığınızda neyi neden yaptığınızı bilememe gibi sonuçlarla karşılaşabilirsiniz. Hatta bu durumlar en çok projenin el değiştirmesiyle meydana gelir. Mesela siz bir yazılım şirketine girdiniz ve daha önce başkasının yazmış olduğu kodlara baktığınızda her şey karmaşık gelebilir. İşte bu durumda yorum satırları hayat kurtarıcı boyutta olabiliyor. Konuyu daha rahat anlamanız için alttaki karikatüre bakabilirsiniz. Karikatürün orjinali İngilizce olduğu için her iki dildeki karikatürü de paylaşıyorum. İkisinde anlattığı şey aynı zaten:
‘Başka Birinin Yazdığı Kodları Okumak’ konulu Türkçe’ye Çevrilmiş Karikatür:
Evet karikatür kullanarak da yorum satırlarının önemini anlattıktan sonra şimdi bu yorum satırlarının kod yazarken nasıl kullanıldığına bakalım.
Yorum satırları her ne kadar kodlarla aynı dosyalara yazılsa da derleyiciler projenin kodlarını derlerken yani kodları anlam ifade edecek ve kullanılabilecek dosya türlerine çevirirken bu yorum satırlarını yeni oluşturacakları uygulama veya oluşturdukları herhangi dosyaya dahil etmezler. Yani yorum satırları sadece bizim kodları yazdığımız kaynak dosyada tutulur ve derleme sırasında göz ardı edilirler.
Şimdi “Hello World” örneğinde gördüğümüz kodlara ilave olarak yorum satırları ekleyerek bunu aşağıda paylaştım. Bunu inceleyiniz:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application. // İşte şuan bu yazıyı yazdığım yer yorum satırıdır. // Bakın bu satırın başında da // karakterlerini kullandığım için burası da yorum satırıdır.
/* Bakın burası çoklu yorum satırının içerisidir. Buranın içine istediğiniz kadar satırdan oluşan yorumlar yazabilirsiniz. Mesela şuan yorum yazmaya devam ediyorum ve her satırda // karakterlerini kullanmama gerek kalmıyor. Burası da yorumun son satırı olsun artık yorum satırını kapatalım. */
/* Burasıda çok satırlı yorum türü kullanılarak yazılan tek satırlı yorum örneğidir */
// Tek satırlı yorum satırı türüne verilen bir başka örnek
/* Son örneğimizde 2 satırdan oluşan yorum
satırını görüyorsunuz. */
#include "stdafx.h" // sol taraftaki kod yorum değildir ama burası yorumdur.
#include <iostream>
int main()
{
std::cout << "Hello World"; // Ekrana mesaj verme kodu
system("Pause"); // Uygulama penceresini açık tutma kodu
return 0;
}
İncelediğiniz örnekte // işaretinden sonra yazdığımız her şey yorumdur, kesinlikle kod değildir. Örnekteki ilk satırda bulunan yorum satırının program tarafından oluşturulduğunu yukarıda gördünüz zaten. Bu yorum satırlarının silinmesi programı hiçbir şekilde etkilemez. İlk yorum satırında bize projemiz hakkında Visual Studio tarafından not düşülmüştür. Her program bir not düşecek diye bir şey söz konusu değildir. Hatta sizi rahatsız ediyorsa silebilirsiniz.
Şimdi 2. ve 3. satırdaki yorum satırlarına bakalım. Bu yorum satırları da 1. satırdaki yorum satırıyla aynıdır.
Şimdi dikkat etmenizi istediğim bir şey var: Yazdığımız her satır için // karakterlerini yazıyoruz. Peki biz her satırda bunu eklemekle neden uğraşalım ki bazen tek satır yerine paragraf şeklinde notlar veya yorumlar yazmak isteyebiliriz. İşte bu durumda bize kolaylık olması için çok satırdan oluşan yorumları /* karakteri ile */ karakteri arasına yazıyoruz. Örnekte, 5. satır ile 9. satır(/* işaretinin olduğu yerden */ işaretinin olduğu yere kadar) çoklu yorum satırı karakterleri kullanılarak yazılmıştır dolayısıyla her satırda // karakterleri kullanmamıza gerek kalmamıştır.
Çoklu yorum satırın /* işaretleriyle başlar ve siz bunu istediğiniz zaman */ karakteriyle bitirirsiniz. Yani yorum satırını tek satırda da bitirebilirsiniz. Hatta bu bitiş karakterlerini(*/) illede alttaki örnekteki gibi yeni satırda kullanmanıza gerek yok yorumunuzun bittiği yerin hemen yanına da bitiş karakterlerini(\*/) koyabilirsiniz.
Diğer nokta ise bütün yorum satırlarında; yorum karakterini eklediğimiz yerden itibaren yorum olarak işaretlendiği için herhangi satırda bulunan kod satırının sağ tarafına not düşebilirsiniz. Yani kod olan satırın sağ tarafına da ekleyebilirsiniz. Zaten üstte verilen örnekte mesaj verme kodunun ve System(“pause”); kodunun sağ tarafına burada bahsettiğim gibi yorum satırları ekledim.
Özetle yorum satırları 2 şekilde kullanılır:
A) Birincisi tek satırı kapsayan yorum satır karakterleriyle(//) kullanılır. Bu yorum satırı sadece başlattığınız satırı kapsadığı için bitiş karakteri yoktur. Başlangıç karakterlerinden(//) sonraki satırın geri kalanı yorum satırıdır, başlattıktan sonra aynı satırda bitiremezsiniz. Çünkü, demin de belirttiğim gibi bitiş karakteri yoktur.
B) İkinci kullanım şekli ise çoklu yorum satırlarıdır. Başlangıç karakterlerinden(/*) sonra mutlaka bitiş karakterleriyle(*/) bittiğini belirtmelisiniz. Bu başlangıç ve bitiş karakterli /*arasında*/ kalan alanlar yaptığınız yorumlardır. Bu yorum satır türünü tek satır üzerinde de kullanabilirsiniz.
Bunun dışında yorum satırları yüzlerce hatta binlerce satırlık kodların bulunduğu projelerde programcıya büyük kolaylık sağlar ve daha rahat çalışmasına yardımcı olur.
Yorum satırları temalara ve kullandığınız programlara göre farklı renklerle ifade edilir. Mesela Visual Studio açık yeşil renginde gösterirken üstteki örnekte temadan kaynaklı turuncu renk kullanılarak belirtilmiştir.
Her programlama dilinde olduğu gibi C++ dilinde de kütüphaneler veya diğer adıyla referanslar mevcuttur. Peki bu referanslar veya kütüphaneler nedir, ne işe yararlar?
Bir uygulama geliştirirken her detayla saatlerce uğraşıp bu detaylar için satırlarca kod yazmamıza gerek yoktur. Bu kodları sınıflar halinde gerek kendimiz daha önceden oluştururuz, gerekse dil geliştiricileri veya 3. taraf kişiler oluşturur. Mesela daha basit anlatacak olursak: Ekrana mesaj yazdırmak için satırlarca kod yazmamız gerekirken, projemize dahil ettiğimiz referans yani kütüphane sayesinde 1 satır kodla ekrana mesaj verebiliriz.
Şimdi gelelim kütüphanelerin nasıl eklendiğine ve üstte ki Hello World örneğinde eklediğimiz 2 kütüphanenin ne işe yaradığına:
Öncelikle #(diyez) simgesinin ön işlemci komutlarını temsil etiğini bilelim. Yani #(diyez) işaretinin yanına belli yazım kurallarıyla yazılan ifadeler ön işlemci komutlarıdır. İşte, #include ifadesi de projeye dahil edilecek dosyaları bildiren ön işlemci komutudur. Birçok ön işlemci komutu bulunmaktadır, bunları ileri ki derslerde göreceğiz. Kısacası #include ifadesiyle projemize istediğimiz kütüphaneleri yani referansları ekleyebiliyoruz. Tabi bu işlemi proje dosyasının en üst kısmında yazıyoruz.
Programlarımızın çalışması için gerekli olan temel kütüphanedir. Aynı zamanda programında daha hızlı çalışmasını sağlar ve kütüphane dosyalarının projeye dahil edilmesini de sağlar. Bu nedenle #include “stdafx.h” referans tanımlamasını projeye ekleyeceğimiz diğer referanslardan önce eklemeliyiz aksi halde hata alabilirsiniz.
Bu kütüphane Input-Output stream kelimelerinin kısaltılması ve birleşiminden gelmektedir. Türkçesi giriş/çıkış akışı gibi manasız çevirilere denk geldiği için Türkçe’sini kullanmanızı tavsiye etmiyorum :-) Bu kütüphane ismindeki gibi giriş çıkış işlemlerini sağlıyor. Bu giriş çıkış işlemlerinin başında kullanıcıya mesaj veren, bizim üstteki hello world örneğin de gördüğümüz Cout kodu ve ileride ki derslerde göreceğimiz, kullanıcıdan girdi almamızı sağlayan Cin kodu başta olmak üzere birçok işlemi yapmamıza olanak sağlayan fonksiyonlar vardır.
Şimdi projeye eklediğimiz iostream kütüphanenin projedeki görevi, altta ekrana mesaj verdiğimiz kodu barındırmasıdır. Yani, iostream adındaki kütüphanenin tanımlamasını silersek artık alttaki mesaj kodunu derleyici tanımayacaktır. Dolayısıyla uygulama çalışmayacaktır.
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
int main()
{
std::cout << "Hello World"; // Ekrana mesaj verme kodu
system("Pause"); // Uygulama penceresini açık tutma kodu
return 0;
}
Yani, anlayacağınız gibi kütüphane dosyaları bize birçok avantaj sağlıyor ve programcıların yükünü azaltıyor. Genellikle kullandığımız kütüphaneler(iostream, math kütüphaneleri gibi) derleyici ile birlikte sunulmaktadır.
Programda yeni başlayanların bilmediği diğer bir ifade de budur. Bu programın ana fonksiyonudur. Bütün C++ uygulamalarında ortak özellik “Main” ismindeki bu fonksiyondur. C++ uygulamalarında bu fonksiyonun içine yazılan kodları işler. Zaten “Main” kelimesinin anlamı “Ana” demektir. Yani ana fonksiyonu temsil ediyor.
Main kelimesinden sonra yazılan parantezler bunun fonksiyon olduğunu bildirir. İleride göreceğimiz fonksiyonlar dersinde bunu daha iyi anlayacaksınız.
İlk başta yazan INT ifadesi ise fonksiyonun döndüreceği değerin tipini belirtir. Yani, programlama da en önemli şeylerden biriside bu tiplerdir. Örneğin, C++ dilinde string, char, double vs. gibi veri tipleri mevcuttur. Fonksiyonlar herhangi veriyi döndürebilecekleri gibi hiçbir veri döndürmeden sadece gerekli işlemleri de yapabilirler. Geri dönüş değeri olan fonksiyonları yazarken döndüreceği veri tipini belirtmeliyiz. Ana fonksiyonumuzun geri dönüş değeri Int olarak kısaltılan Integer veri tipini temsil eder.
Son da belirtilen süslü parantezler ise kodları Main fonksiyonunun içini temsil eder. Yani biz yazacağımız kodları örnekte de yaptığımız gibi süslü parantezlerin içine yazarız.
Burada gördüklerimizi daha detaylı şekilde Fonksiyonlar dersinde göreceğiz.
Şimdi ekrana mesaj yazdırmaya yarayan koda geldik. Yazmış olduğumuz Std::Cout<<“Hello World”; kodunu parça parça inceleyelim:
İlk olarak Std kodunun ne olduğu hakkında bilgi vereyim. Std namespace’tir. Yani Türkçe çevirisini tam olarak yapmak zor ama biz buna; tanımladığımız iostream kütüphanesinin, alt elemanı veya alt sınıfı diyebiliriz. Bu durumda Cout koduda Std nin alt elemanı oluyor. Bu nedenle biz ilk önce en üst eleman olarak düşünebileceğimiz iostream kütüphanesini tanımladık. Daha sonra eklediğimiz kütüphanenin içindeki Std elemanının içindeki Cout koduna :: operatürünü kullanarak ulaştık ve böylece ekrana mesaj veren kodu yazmış olduk.
Şimdi Std::Cout kısmını anladık. Peki, bunun devamında eklenen << operatörlerine gelelim. Bu operatörden önce Cout ifadesi olduğu için << operatöründen sonra yazılan ifade ekrana yazdırılır. Eğer sayısal veri yazdıracaksak << operatöründen sonra ” “ kullanmamıza gerek yoktur. Ama string tipindeki verileri yani dizeleri tırnak işaretleri arasında yazmalıyız. Alttaki örnekle, dize ve sayısal değerlerin kullanımı gösterilmiştir:
std::cout << "Burası dizedir ve ekrana yazdırılacaktır.";
std::cout << 12; // ekrana 12 yazdırılacaktır.
std::cout << 10+8; // ekrana 18 yazdıracaktır.
std::cout << "10+8"; // ekrana 10+8 yazdıracaktır.
// Dikkat ederseniz tırnak olmadan sayısal verilerin hesaplanmış halinide yazdırabiliyoruz.
// Tırnak olmadan string(dize) türüne ait veri giremezsiniz.
Şimdi geldik mesaj verme kodunun sonunda kullanılan ;(noktalı virgül) işaretine. Bu işaret birçok programlama dilinde kullanılmakla beraber hepsinde aynı göreve üstlenmektedir. Bu işaretin görevi yazdığınız kod satırının bittiği gösterir. Bizde bu işareti(;) yazdığımız her kodun bitiminde ekleyeceğiz. Bu işareti cümledeki noktaya benzetebiliriz. Cümlenin bittiği nasıl nokta işaretiyle belirtiliyorsa yazdığımız kod satırının bittiğini noktalı virgül işaretiyle gösteriyoruz.
Bu ifadeyi Fonksiyonlar dersinde çok daha iyi anlayacaksınız. Ama şimdi kafanızdaki merakı gidermek amacıyla size basit dille anlatayım.
Üstte size Main ismindeki ana fonksiyondan bahsetmiştim. Dikkat ederseniz Fonksiyon diyorum. Bunu matematikteki fonksiyon gibi düşünebiliriz. Şimdi matematikte f(x)=x+2 fonksiyonunda x parametredir. Yani biz x için bir değer veririz ve bu fonksiyon, fonksiyonun içindeki ifadeye göre değer döndürür. Örneğin, x için 1 dersek fonksiyon bize 1+2 ifadesinden 3 değerini döndürür. İşte programcılıkta da fonksiyon böyledir. Biz fonksiyonlar oluştururuz ve bu fonksiyonların içine { } işaretleri arasında kodları yazarız, ve yazdığımız kodlar bittikten sonra Return ifadesini kullanarak değeri döndürürüz. Zaten Return kelimesinin Türkçe anlamı dönüş anlamındadır. İşte, bahsettiğimiz Main fonksiyonunun tipinin int yani tamsayı türünde olduğunu belirtmiştik. Bu demek oluyor ki Main fonksiyonu tam sayı türünde bir değer döndürecektir. Dikkat ederseniz Main fonksiyonunun sonunda Return ifadesinden sonra geri döndürülecek değer olan 0(sıfır) değeri yazılmıştır yani Return 0; ifadesi yazılarak fonksiyonun değeri döndürülmüştür. Zaten sıfır da bir tam sayıdır yani int türündedir.
Özetle fonksiyonda gerekli kodları yazdıktan sonra Return donüş_değeri; şeklinde değeri döndürüyoruz. Dikkat ederseniz bir üst başlıkta öğrendiğimiz ; işaretini bu kodda da kullandık. Bu kadar açıklama şuan için yeterli, daha detaylı açıklamayı fonksiyonlar dersinde yapacağım.
Hatırlarsanız Hello World örneğinde programı çalıştırdığımızda pencerenin kodlar işlendikten sonra kapanmasını önlemek için bu kodu eklemiştik. Üstte bu kodun görevini açıklamıştık. Üstüne eklenecek pek bir şey yok. Sadece bunun, kod işlendikten sonra herhangi bir tuşa basılana kadar ekranın açık tutuğunu bilin yeterli.
Bu kodu CMD(komut satırı) üzerinde test edelim:
İlk önce ilk resimde gördüğünüz gibi Arama yerinde “CMD” veya “Komut Satırı” yazarak komut satırını buluyoruz ve çalıştırıyoruz.
Windows Tuşu + R kısayolu ile açılan diyalogtan Cmd yazıp enter tuşuna basarakta komut satırına ulaşmanız mümkün.
Komut satırını açtıktan sonra Pause komutunu giriyoruz ve çıkan sonucun Hello World uygulamasındaki pencereyi açık tutma koduyla aynı işlemi yaptığını hatta bu ikisinin aynı şey olduğunu anlıyoruz.
Gördüğünüz gibi Pause kodunu yazınca “Devam etmek için herhangi bir tuşa basın” anlamına gelen mesaj geldi. İşte bizim Hello World uygulamasında ekranın kapanmaması için yazdığımız System(“Pause”); kodu konsola pause komutunu veriyor.
Şimdi sizlere, kod yazarken büyük kolaylık sağlayan ve fazla kod yazmamıza engel olan bir tanımlamayı anlatacağım. Üst başlıklarda size Cout kodunun Std elemanının altında olduğu için std::cout şeklinde erişim sağladığımızı söylemiştim. Peki şimdi biz Cout ve std elemanın altındaki diğer elemanlara ulaşmak için sürekli std:: kodunu yazmak zorun da mıyız? Tabiki de sürekli yazmamıza gerek yoktur. Peki ama nasıl olacak derseniz işte tam bu noktada Using Namespace kodu devreye giriyor. Bu kodu kullanarak programın başında Std elemanlarına ulaşacağımızı bildiriyoruz ve daha sonra kod yazarken std:: kodunu kullanmamıza gerek kalmıyor. Hemen bunu Hello World örneği üzerinde anlatalım.
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std; // Yeni eklenilen kod
int main()
{
cout << "Hello World"; // std::cout kodu yerine sadece cout yazıldı. Yani cout kodunu std içerisinden çağırmamıza gerek kalmadı.
system("Pause"); // Uygulamamızın penceresini açık tutan kod
return 0;
}
Gördüğünüz gibi üst kısımda Using Namespace std; koduyla std içerisindeki elemanları kullanacağımızı belirttik.
Using kelimesinin anlamı kullanmaktır. Namespace ise üstte belirttiğim gibi tam çevirisi yoktur ama geniş kümeyi kapsayan içinde birçok elemanı barındıran yapıdır diyebiliriz. Std ise zaten Cout kodunu barındırdığı gibi içinde birçok kodu barındıran elemandır. Yani programa Std ifadesini bir kere bildirdik ve artık program içerisinde Cout yazarken başında Std:: ifadesini eklemeyeceğiz. Yani std sınıfı içerisindeki Cout demek yerine direk Cout diyeceğiz.
Evet C++ üzerinde kurtarıcı rol oynayan Using Namespace kodunu da öğrendiğimize göre bu dersin son konusu olan yazının üstlerinde hafifçe değindiğim “Hazır Sistem Parametreleri” konusuna geçelim.
Yazının “Hello World” mesajını verdirdiğimiz kısmında burası hakkında ufak bir bilgi vermiştim. Ekrana yazdırdığımız mesaj ve bizim yazdırdığımız mesajdan sonra System(“pause”); kodunun ekrana yazdırdığı “Devam etmek için herhangi bir tuşa basınız” anlamına gelen İngilizce ibareyi eklemesinden dolayı mesajımız birbirine girmişti. Yani mesaj ekrana düzensiz bir biçimde gelmişti. Hatırlamayanlar için ekrana gelen mesajı resim olarak göstereyim:
Gördüğünüz gibi ekrana gelen mesajların birisi bizim verdiğimiz “Hello World” mesajı ve verdiğimiz mesajın bitişiğinde ise System(“pause”); kodunun verdiği mesaj mevcut. Bunların arasına herhangi boşluk veya alt satıra geçme kodu eklemediğimiz için bitişik şekilde ekrana geldiler.
Şimdi sizlere bu mesajları sistem parametreleri kullanarak nasıl daha biçimli gösterebileceğimizi öğreteceğim. Öncesinde size sistem parametreleri tablo halinde vereğim.
İfadeler | İfadelerin Açıklaması |
\n | Bu ifade alt satıra geçmeyi sağlıyor. Bu ifadeden sonraki kısım alt satırda yazılır. |
\t | Bu ifadenin bulunduğu yerden itibaren Tab kadar aralık bırakır. |
\r | İmlecin geçerli olarak yazılan yazının başına konumlanmasını sağlar. |
\a | Programın çalışma esnasında bu ifadeye gelince bip sesi çıkar. |
\\ | Bulunduğu yere \ karakterini yazmanızı sağlar. |
\" | Yazıldığı yere " işaretini yazmanızı sağlar. |
Bu tablodaki ifadeleri Hello World örneğinde Hello World mesajını yazdığımız tırnakların arasına yazarak test edebilirsiniz. Ben şimdi size dersimizle ilgili olan alt satıra geçme(n), Tab kadar aralık bırakma(t) ve tablonun son iki satırındaki açıklama gereği hissettiğim ifadeleri göstereceğim.
Şimdi ilk örnekte System(“pause”); kodunun ekrana verdiği mesajı alt satıra geçtikten sonra vermesini sağlayacağız. Bunu 2 yöntemle yapabiliriz. İstersek “n” ifadesini bizim mesaj kodunun içeriğinin sonuna veya ayrı bir cout mesajı içerisine yazabiliriz. Zaten ikisi de aynı sonucu verecektir ama ilk yöntem az kod yazdığımız için daha doğrudur. Hemen örnek üzerinde görelim:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "Hello Worldn"; //Mesaj içeriğinin sonuna n ifadesini ekledik.
system("Pause");
return 0;
}
Şimdi bu şekilde kodları yazdık. Bu kodları yazıp programımızı çalıştırınca ortaya çıkan sonuç bu şekilde olacaktır:
Resimde gördüğünüz gibi n ifadesini veya parametresini hello world mesajının sonuna ekleyince bundan sonra ekrana yazdırılan şey otomatik olarak alt satırdan yazdırılmaya başlandı.
Eğer isterseniz kodu altta gösterdiğim şekilde yazsanız da aynı sonucu alacaksınız:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World"; // burada değişiklik yapmadık onun yerine alt satırdaki mesaj verme kodu ile alt satıra geçtik
cout << "n"; // ifadeyi buraya eklememiz programda bir şey değiştirmez sadece fazla kod yazmış oluruz
system("Pause");
return 0;
}
Şimdi ise Tab kadar aralık bırakmaya yarayan t ifadesine bakalım. Aynı örnek üzerinde System(“Pause”); kodunun vereceği mesajı alt satır yerine Tab kadar boşluktan sonra yazdıralım. Bunu yapmak için kodlarımızı bu şekilde düzenliyoruz:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World"; // Gördüğünüz gibi mesaj içeriğine t parametresini ekledik.
system("Pause");
return 0;
}
Sonucu kodlarınızı derleyip programınızı çalıştırdıktan sonra veya alttaki ekran görüntüsünden görebilirsiniz:
Gördüğünüz gibi t parametresi ile Tab kadar boşluk bıraktık. Siz tabi normal boşluk(space) karakteri ile de bunu yapabilirsiniz. Ama amaç parametrelerin kullanımını göstermek olduğu için böyle bir örnek verdim.
Şimdi gelelim tablonun son 2 satırındaki \\ ve \” parametrelerine. Tabloda söylendiği gibi \” parametresi ekrana “ işaretini \\ parametresi ise ekrana \ işaretini yazdırır.
Sizler şimdi neden klavyeden bu karakterleri direkt yazmak yerine başına karakterini ekliyoruz diyebilirsiniz. Nedeni şu: Şimdi, işareti parametre girileceğini ifade ediyor. Örneğin, tab kadar boşluk bırakan t parametresi veya bip sesi çıkarmaya yarayan a parametresi ya da tablodaki diğer ifadeler gibi parametreleri yazarken karakteri ile parametre gireceğimizi programa bildiriyoruz. Bu nedenle siz karakterini ekrana yazdırmak için sadece işareti yazdığınızda program derlenirken yani oluşturulurken derleyici bunun parametre olduğunu düşünür ve ekrana bunu yazdırmak yerine parametrenin görevini yapar. Dolayısıyla işaretini tek kullanır ya da ondan sonra geçersiz bir parametre değeri girerseniz derleyici hata bile verebilir. Bu nedenle işareti ekrana yazı olarak yazdırmak istiyorsanız mesajı girdiğiniz yere \ olarak ekleyeceksiniz böylece, program bu karakteri ekrana yazdırmak istediğinizi anlayacaktır ve ekrana karakterini yazı olarak ekleyecektir.
Peki tırnak(”) işaretini yazdırmak için neden ” böyle bir parametre kullanıyoruz diye sorarsanız; bu da yine sistemin yazım kurallarında “ işaretini kullanmasından kaynaklanıyor. Dikkat ederseniz size mesaj verirken dizeleri yani string türündeki verileri ”tırnaklar arasına” yazdığımızı söylemiştim, Hello World mesajında olduğu gibi. Yani bu demek oluyor ki: ” karakteri sistemin değerin türünü anlamasını sağlayan bir karakterdir. Yani ” karakteri program tarafından syntax(yazım kuralı) olarak görülüyor. Bu nedenle ” işaretini ekrana mesaj olarak yazmak istersek ” olarak yazmalıyız.
Alttaki paragraftan sonra size anlattığım ” ve işaretlerini ekrana mesaj olarak nasıl yazdırabileceğimizi gösteren kod örneğini paylaşacağım.
Şimdi alt satıra geçmenin bir diğer yolu olan endl kodunun kullanımını göstereyim. Cout
kodu gibi bu bahsettiğim kodda iosstream
kütüphanesi ile sunuluyor. Kullanımı basittir ve çok kullanacağımız için fazla değinmeyeceğim. Çünkü bunu kullanarak çok daha rahat anlayacaksınız. Cout
kodundan sonra eklediğimiz <<
karakterini mesajın bitimine ekleyip endl yazıyoruz ve alt satıra geçmiş oluyoruz. Genel kullanım örneği şu şekildedir:
cout<<"Mesajımız"<<endl;
Şimdi size alt satıra geçme, ” ve \ ifadeleri ile ilgili ve endl kodu ile ilgili örneği paylaşıp bu dersimizi sonlandıralım:
// Ders 1 - Hello World.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "\"Hello World\"" << endl; // burada hello world mesajını ekrana " " işaretleri arasına yazdırdık.
cout << "\\Hello World\\" << endl; // burada hello world mesajını \ \ karakterleri arasına yazdırdık.
cout << "Bir sonraki derste gorusuruz..." << endl;
/*
- Dikkat ederseniz alt satıra endl ifadesi ile geçtik.
- Eğer üstteki mesajlarda işaretini kullanmadan " ve işaretini koyarsak hata olur.
- İsterseniz işaretini kullanmadan " ve işaretini test edebilirsiniz.
*/
system("Pause");
return 0;
}
Programın çıktısı şu şekilde görünecektir:
Gördüğünüz gibi syntax(yazım) kurallarında kullanılan karakteri ekrana hata almadan yazdırdık. Dilerseniz kod kısmında parametre olmadan(\ veya “) resimde gördüğünüz mesajları yazdırmaya çalışın. Derleyeci syntax hatası verecektir.
Gördüğünüz gibi C++ dilinin Syntax kuralları(yazım kuralları) içerisinde tanımlanmış olan ve “ karakterlerini parametre kullanarak nasıl yazdıracağımızı gördük. Dikkat ederseniz bu örneğimizde alt satıra geçmek için endl kodunu kullandık.
Umarım bu derste bir şeyleri öğretebilmişimdir ve faydalı olabilmişimdir. Bu derste kafanıza takılan bir şeyler olduysa mutlaka iletişim bölümünü kullanarak bunu bana bildirin. Bir sonraki derste görüşmek üzere, hoşçakalın!