“C/C++ Dersleri” kategorisi altında toplayacağım yazıları genel olarak şu şekilde anlatmaya çalışacağım; ilk olarak, kullanacağımız başlıca yapılar ve komutları, daha sonra ise bu öğrendiklerimiz ile ilgili örnekler ve sık kullanılan algoritmaları inceleyeceğiz. Bazı algoritmaları farklı yollardan inceleyerek zaten iyice mantığı sökmüş olacağız. Fakat burada takip edeceğiniz yazıların bir öğrencinin notlarından ibaret olduğunu lütfen unutmayın. Çünkü bu dersleri hazırlamaktaki amaçlarımdan birisi de sahip olduğum bilgileri unutmamak için bir yere kaydetmektir. İnceleyeceğimiz örneklerde veya algoritmalarda belki mantık hatası ya da eksikliği olabilir. Bunlar hakkında beni yeri geldiğinde uyarırsanız hem ben düzeltirim hem de daha iyi öğrenmiş oluruz.
Derslerin başlangıç kısımlarının önemli olduğu düşündüğüm için bazı noktalarda iyi kavranması için biraz uzatacağım. Dolayısıyla yazıları sabırla, dikkatlice ve uygulayarak takip ederseniz inşallah faydasınız görürsünüz diye umuyorum.
Giriş metni için aklıma başka birşey gelmedi, geldikçe bu kısmı güncellerim zaten ;) yavaş yavaş başlayalım öyleyse…
Derleyici ve Seçimi :
C/C++ kodları, bir derleyici olmadan kodlanamamaktadır. Derleyici dediğimiz şey ise yazdığımız kodları daha alt seviyeli dillere yani bilgisayarın anlayacağı 1 ve 0′lardan oluşan dile çeviren bir arabirimdir. Derleyici kodlarımızı bilgisayarın anlayacağı dile çevirip daha sonra kodları çalıştırabilmemizi sağlar.
Bir çok derleyici mevcut. En sık kullanılan derleyiciler Microsoft Visual Studio, Dev C++, Code::Blocks, NetBeans… derleyicileridir. Bunları inceleyecek olursak;
- Code::Blocks: Kodlama yaparken komutları tahmin etme ve kodları renklendirme olayı ile kod yazma işimizi oldukça kolaylaştıran bir derleyicidir. Fakat ben bunu hiç tavsiye etmiyorum. Özellikle yeni başlayanlar için el alışkanlığı kazanılması çok engelliyor engelliyor. Kodlama sırasında yaptığımız hataları bildirme konusunda da çok eksiği var.
- NetBeans: C/C++ Kodlamasında iyi mi kötü mü bilmiyorum. Çünkü kurulumu esnasında bir çok ekstradan eklentiler istemekte olduğu için pek kullanma fırsatım olmadı. Ama kullananların beğendiğini çok sık duyuyorum.
- Dev C++: Kesinlikle tavsiye ettiğim ve kullandığım bir derleyicidir. Hem çok hafif bir derleyici hem kurulumu kolay hem de kodlama yaparken yaptığınız hatalarda çok iyi yardımcı oluyor. Türkçe dil desteği de mevcut.(“with Mingw/GCC” versiyonunu indirin. Kurulum esnasında kütüphanelerin de yüklenmesini istediğinizi ilgili adımda belirtmeyi unutmayın.)
- Microsoft Visual C++: Bu derleyici ile hiç C/C++ kodlaması yapmadım. Ama Microsoft’un yıllardır geliştirdiği bir derleyici olduğu için başarılı olduğuna eminim. Yalnız çok kasıntı bir program açarken kaparken hakikaten çok canınızı sıkıyor ve lisans probleminden dolayı sıkıntı çekebilirsiniz belki. Ayrıca çok detaylı olduğu için pek tavsiye etmiyorum.
Derleyicinizi kurduktan sonra nasıl kullanılacağı hakkında internetten bilgi edinmeniz işinizi kolaylaştıracaktır. Ben Dev C++ kullanıyorum. Dev C++ derleyicisinin kurulumunu yaparken kütüphaneleri de yüklemeyi unutmayın. Kodlama yaparken yazdığınız programın derlenip çalıştırılması için yapmanız gerekn tek şey f9 tuşuna basmak. Başka birşeye gerek yok.
Kütüphaneler :
Kütüphaneler isminden de anlaşılacağı gibi içinde işimizi kolaylaştıracak bilgiler bulunduran bilgi kaynaklarıdır. Bildiğimiz kütüphanelerden tek farkı içerisinde kitap değil önemli fonksiyonların olmasıdır. Bu fonksiyonlar uzman insanlar tarafından hazırlanmış en stabil yardımcı kodlardır. Bir bilgisayar (işlemci) toplam sadece 3 çeşit işlem yapar; toplama, çıkarma ve kıyaslama. Örneğin bir bölme işlemi nedir? Bölen sayının, bölünen sayı içerisinde kaç defa olduğudur değil mi? Bu da temelinde bir toplama işlemidir aslında. Bunları ilerde örneklerle inceleyeceğiz… İşte bu kütüphaneler de içlerinde öyle kodlar bulunduruyorlar ki o kodlar sayesinde yeri geldiğinde onlarca satırlık kodu tek satırlık bir kod ile halledebilmemizi sağlıyorlar.
Bizim şimdilik kullanacağımız belli başlı kütüphaneler ise şunlar;
- stdio.h: gets, printf, scanf…
- math.h: sqrt, pow, fabs (matematiksel işlemler; kare, karekök gibi)…
- conio.h: getch…
- stdlib.h: rand, srand…
- string.h: strlen…
- iostream.h: cin, cout…
- time.h: time…
Bu kütüphaneleri ve diğer kütüphaneleri daha detayıyla incelemek isterseniz eğer cplusplus.com adresini inceleyebilirsiniz.
Kütüphaneler şu şekilde kullanılır;
#include #include
Veri Tipleri :
Bilgisayarın hafızasına yazmak istediğimiz verileri hafızaya yazarken, o verinin cinsini de belirtmemiz gerekmektedir. Çünkü her veri tipi için hafızada farklı büyüklüklerde yer ayrılır. Kaydettiğimiz veriyi tekrar kullanacağımız zaman da ona göre okur.
Bu veri tipleri ise şu şekildedir;
- int : (integer) Tam sayıdan oluşan veriler için kullanılan veri tipidir. Sınır ise +-32768dir. İhtiyaca göre long int veya short int şeklinde de sınırlar değiştirilebilir.
- float : Kesirli sayıdan oluşan veriler için kullanılır.
- double : Çifte duyarlıklı kesirli sayıdan oluşan veriler için kullanılır.
- char : (character) karakterden (simge) oluşan veriler için kullanılır. Fakat burada girilen harfler ASCII kodlamasına göre sıralandırılır ver ona göre bir sıra numarası ile bilgisayar diline çevrilir. Örneğin ‘A’ harfi ASCII kodlamasına göre 65. sırada yer almaktadır. Bizim girdiğimiz A harfini yeri geldiğinde kıyaslama veya kontrol etmek için kullanırken 65 olarak kullanacağız. Uygulamalara geçtiğimizde daha da iyi anlaşılacaktır.
- Bool : Mantıksal değerler yani true false tipindeki veri tipleri için kullanılır.
Standart veri tipleri bu şekildedir… Fakat örneğin bir program yazarken bazen öyle durumlar olur ki elimizde yüzlerce int tipinde veri olur ve bunları kullandıktan sonra bir sorunla karşılaşırız ve bu verilerin tipini float yapmamız gerekebilir. işte bu tarz sorunlarda işimizi kolaylaştırmak için “typedef” komut kullanılmaktadır. typedef komutu ile kendi veri tipimizi oluştururuz.
Kullanımı ise şu şekildedir ( typedef veri_tipi yeni_isim; ) ;
typedef int para_birimi;
Bu kod ile para_birimi diye bir veri tipi oluşturmuş olduk. İleride bir sorunla karşılaştığımızda değerleri tek tek float yapmak yerine yukarıdaki satırdaki int değerini float yapmamız işi çözecektir.
Değişkenler :
C/C++ ve diğer tüm programlama dillerinde değişkenler kullanılmaktadır. Verilerimizi hafızaya yazabilmemiz için bilgisayar bize hafızada bir yer ayırmaktadır. İşte bizim için ayrılan bu alana veya bu alanın ismine biz değişken diyebiliriz. O an tanımladığımız değişken hafızanın neresinde oluşturulduysa o değişken artık o hafıza alanının adıdır. Başka birşey için olağanüstü durumlar dışında kullanamayız.
Değişkenleri şu şekillerde tanımlarız;
int sayi; //int tipinde sayi isimli bir değişken. float kesirli_sayi; //float tipinde kesirli_sayi isimli bir değişken. int sayi_bir, sayi_iki, sayi_uc; //int tipinde değişkenleri tek satırda tanımladık. char isim[10]; //10 karakterlik char tipinde bir karakter değişkeni tanımladık.
Bu değişkenlere başlangıç değerleri de verebiliriz. char tipindeki değişkenler aslında bir dizidir. Bunları diziler konusunda daha detaylı göreceğiz o yüzden üstlerine fazla düşmeyeceğiz şimdilik.
int sayi = 250; float kesirli_sayi = 15.10; char isim[] = "ADogan"; //Başlangıç değerleri verirken boyut belirtmesek de olur.
Değişkenlerin tuttukları veriler daha sonradan değiştirilebilir. Ama bu yöntem pek sağlıklı olmaz. Algoritmamızı hazırlarken böyle sorunların çıkmamasına dikkat etmeliyiz.
int sayi = 500; //İlk değer. ..... //diğer kodlar. sayi= 1259; //Son değer. Artık bu kullanılır.
Değişmezler
Değişkenlerin tuttukları gördüğünüz üzere daha sonrada yeni bir atama ile değiştirilebilmektedir. Fakat değişmezlerde bu böyle değildir. Daha sonrada değiştirilmesini istemediğimiz değişkenleri tanımlarken #define kodunu kullanırız. Kullanım şekli ise şöyledir;
#define PI_SAYISI 3.14 //Sonda ";" ve "=" işaretleri yok. //Değişmez ismi büyük harflerle yazılır. PI_SAYISI = 3; //Hiçbir etki göstermeyecektir.
Giriş konumuz bu kadar. Kodların içine gömülme vakti yaklaşıyor ;)








facebook.com/adogan
gplus.to/adogan
friendfeed.com/adogan
twitter.com/a_dogan
Gayet güzel ve net bir yazı olmuş. Ayrıca ilk kez günlük tutmaya başladığımızda zaten hep kendimiz için, öğrendiklerimizi pekiştirmek ve sonradan unutmamak için yazmıştık. Bu açıdan da doğru yolda olduğunu rahatlıkla söyleyebilirim. Böyle devam etmen dileğiyle.
Çok teşekkür ederim Erhan Hocam. Bu yazıların sonunda faydalı bir döküman oluşturmuş olurum inşallah. Tavsiyeleriniz sayesinde hem benim hem de ihtiyacı olanların işine yarayacağına inanıyorum.
Umarım başlangıçtan ileri konulara kadar ilerlersiniz. Teşekkürler…
ismimi 10 kez arka arkaya siralamasi icin nasil bir kod yazmam gerek
for(int i=0;i<10;printf("jahova\n"));