310 likes | 760 Views
Doç. Dr. Cemil Öz. Algoritmalar ve Programlama II Ders 2: C++ programlama dilinde Sabit,değişken ve değişken bildirimleri. C++ Temel program yapısı #include < iostream > using namespace std; int main() { cout << “Every age has a language of its own<br>”; return 0; }
E N D
Doç. Dr. Cemil Öz Algoritmalar ve Programlama IIDers 2: C++ programlama dilinde Sabit,değişken ve değişken bildirimleri SAÜ BilgisayarMühendisliği Dr. CemilÖz
C++ Temel program yapısı • #include <iostream> • using namespace std; • int main() • { • cout << “Every age has a language of its own\n”; • return 0; • } • Fonksiyonlar : Fonksiyonlar C++’ın en temel bloklarından biridir. Örnek programımız hemen hemen main fonksiyonundan oluşmaktadır. • Her c++ programı çalıştırıldığında main fonksiyonu içerisindeki ifadeler çalıştırılır. Eğer programda main isimli bir fonksiyon yoksa program çalıştırıldığında hata verir.
main Fonksiyon Nesne Nesne Fonksiyon Üye Fonksiyon Üye Fonksiyon Üye Fonksiyon Üye Fonksiyon Şekil Nesneler, fonksiyonlar ve main() Fonksiyonun gövdesi küme parantezi içerisine alınır {….}
İfadeler İfadeler c++ programlarının en temel birimleridir. Örnkte iki tane ifade var. cout << “Every age has a language of its own\n”; ve return 0; İfadeler bilgisayara bir şeyler yapılmasını bildirir ve büyük çoğunluğu c’deki ifadelerle aynıdır. Noktalı virgül(;), ifadenin bittiğini gösterir. Eğer noktalı virgül unutulursa hata mesajı verilir.
Fonksiyon gövdesindeki en son ifade return 0; ifadesidir. Bu ifade main() fonksiyonuna , kendisini çağırana 0 değerini döndürmesini bildiriyor. C++’ ın eski sürümlerinde, main fonksiyonunun dönüş tipi void olarak belirleniyordu ve return ifadesine gerek kalmıyordu. Ancak standart c++’ta doğru değildir. Boşluklar : c++ derleyicisi bazı özel karakterleri dikkate almaz; boşluk, satır başı, satır atlama, sekmeler vb. #include <iostream> using namespace std; int main () { cout << “Every age has a language of its own\n” ; return 0;}
Verilen program doğrudur. Ancak bu şekilde yazılması tavsiye edilmez ve okuması zordur. cout Cout, aslında bir nesnedir. C++’ta önceden tanımlıdır ve standart çıktı akışına (standart outputstream) karşılık gelir. << operatörüne ekleme operatörü denir. << operatörü, sağ taraftaki değişkenin değerini sol tarafdaki nesneye yönlendirir. Cout da bu karakter katarını ekrana gönderir.
Karakter Dizini Sabitleri Tırnak içerisinde yer alan “Her yaş kendisine ait bir dile sahiptir \n “ deyimi karakter dizini sabitlere bir örnektir. Bilidiği üzere değişkenlerden farklı olarak sabitler, program çalıştığında yeni bir değer almazlar. Sabit değeri program yazılırken belirlenir ve program çalıştığı sürece sabitler değerlerini korur. Karakter dizininin sonundaki “\n” karakterleri bir satır atlatılır. Burada bazı derleyicilerin program sonunda verdiği mesajlarla karışmaması için konulmuştur
Directifler Programdaki #include <iostream> bir ön işlemci direktifidir. Ön işlemci derleyiciye verilen bir komuttur. Derleyicinin ön işlemci denilen bir parçası gerçek derleme işlemi başlamadan önce bu direktiflerle ilgilenir. Ön işlemci direktifi olan #includederleyiciye, kaynak dosyası içine başka bir dosya eklemesi gerektiğini bildirir. #include direktifinin yerine belirtilen dosya içeriği yerleştirilir. #include pek çok ön işlemci direktifinden yalnızca bir tanesidir. Ön işlemci direktiflerinin kullanımı c++’da c kadar yaygın değildir.
Using Direktifi Bir c++ programı değişik isim uzaylarına(namespace) bölüne bilir. İsim uzayı, programdaki belirli isimlerin derleyici tarafından tanınmasını sağlayan program parçasıdır. İsim uzayının dışında bu isimler tanınmaz. usingnamespacestd; Direktifi, bunu takip eden tüm program ifadelerinin std isim uzayında olduğunu belirtir. coutbu isim uzayında tanımlıdır. Eğer usingdirektifi kullanılmamış olsaydı başına stdkelimesini eklemek gerekecekti std::cout<<“ everyage has a language of itsown.”>> Defalarca std:: yerine using direktifi kullanıyoruz
Açıklamalar • Hangi program olursa olsun açıklamalar programın önemli bir parçasıdır. • Açıklamalar programı yazana kolaylık sağlar. • Kaynak dosyayı okuması gerekenlere kolaylık sağlar. • Derleyici dikkate almaz. • Dosya büyüklüğüne etki etmez. • Çalışma hızına etki etmez • Açıklama // ile başlar ve satır sonunda biter • Alternatif açıklama • /* ….. • …… • ……*/ • Dır
Sabit ve değişken kavramı sabit ve değişken tipleri ve bildirimler. • Değişken, verilerin tutulduğu bellek hücrelerine verilen simgesel adlardır. Dolayısı ile program içerisinde kullanılacak veriler değişkenler üzerinde tutulur. Programların yürütülmesi süresince içerikleri değiştirilebilir. • Her değişkenin bir adı ve veri tipi vardır. Veri tipi değişkende ne tip veri tutulacağını belirler. • C dilinde değişken adları, ilki harf olmak üzere diğerleri harf, sayı veya alt eksi ( _ ) den oluşan bir veya birden çok karakterden oluşur. • Değişken adları, dilin anahtar sözcükleri, kütüphanede var olan fonksiyon adları olmamalıdır.
Sabit ve değişken kavramı sabit ve değişken tipleri ve bildirimler. • Her değişkenin tuttuğu değerin nasıl bir veri olduğunu gösteren bir tipi vardır. • Sabitler de bellekte verinin saklandığı hücrelere verilen sembolik adlardır. Değişkenlere benzerler, fakat bildirilirken verilen değerler programın yürütülmesi süresince değiştirilemez. • Sabitler program boyunca değerleri değiştirilmeyen yani sabit kalan değişkenler olarak ta düşünülebilir. • .
Name1, name2, name, Name, Personnel_name, Personnel_Surname Date_of_Bird, Sum, sum, count1, Control10, x , y, s, XYZ, xyz, Xsum, X_sum C++ programlama dilinde değişken isimleri kullanımında büyük küçük harf farklı muamele görür. Sales salesSALESsALES Bir değişken ismi C++ programlama dilinin ve fonksiyonlarının isimleri olamaz cout, sin, cos, int Değişken isimleri sayılarla başlamaz 2001_sales Boşluk ve diğer alfa-nümerik olmayan karakterler kullanılmaz( _ alt çizgi hariç-underscore Aug2005+sales, my age , name+surname
C++ da değişken ve sabit tipleri • Bilgisayar bir makinedir ve insan gibi yorum yapamaz. Bu yüzden programda işlem gören değişken ve sabitlerin veri tipleri, bilgisayarın bu değerler ile işlem yapabilmesi için verilmelidir. • Veri tipi bir değişken veya sabitin sayısal, karakter veya başka tipteki niteliğini belirler. • Herhangi bir değişken veya sabitin programda yer alabilmesi için ona bir ad verilmesi ve bu adın program içinde uygun bir yerde bildirilmesi (declaration) gerekmektedir. • Bir değişken veya sabit elemanın sayı veya karakter şeklinde genel olarak tiplerinin belirlenmesi tek başına yeterli değildir.
Bu nedenle veri tipinin bildirilmesi bellekte ayrılacağı yerin büyüklüğünü de içermelidir. Buna göre veri tipleri temel tipler ve türetilmiş tipler olarak iki guruba ayrılır. • Değer atama (=) ile sağlanır • Var1=10; • Var2=20; • Çıktı varyasyonları • cout<< “var1 +10 eşittir “; • cout<< var2<<endl • Endl manipülatörü: çıktıda satır atlatılmasını sağlar. “\n” karakteri ile aynı etkiye sahiptir.
Tamsayı tipleri İnt tipinin yanı sıra birkaç tane tam sayı tipi vardır. Bunlar long, short tipleridir. İnt tipinin büyüklüğü siteme bağlıdır. Ancak long ve shorttmasayı tipleri hangi sistemde kullanılırsa kullanılsın aynı büyüklüğe sahiptirler. Long her zaman 4 byte kaplar, yani windows sistemlerinde int’de 4 byte kaplar. Karakter değişkenler Char tipi -128 ile 127 arasındaki tamsayılardır. Bellekte 1 byte yer kaplarlar. Sayıları saklamakta kullanılmakla birlikte genel olarak ASCII karakter seti kullanılır (‘a’, ‘B’ , ‘?’ vs) …… char karakter1=‘A’; // değişkene ‘A’ değerini ata char Karakter2=‘\r’; // değişkeni enter olarak tanımla
Cout<< “ \” Kaç, Canım, kaç, \” dedi.”; Ekran çıktısı ” Kaç, Canım, kaç, ” dedi.
cin Cin anahtar kelimesi standart giriş akışına karşılık gelen, c++ da önceden tanımlı bir nesnedir. >> operatörü,extraction(çıkarma) operatörüdür. Solundaki akış nesnesinden değeri alır, sağındaki değişkene yerleştirir. ….. intxdeg; ….. cin>>xdeg Kayan Noktalı Tipler Kayan noktalı değişkenler sayıları ondalık kısmıyla birlikte simgeler. Bu tür sayıların hem tam kısmı hemde ondalık kısmı vardır. C++’da kayan noktalı değişkenler; float, double, longdoubledir. Float tipi: 3.4x10-38 ile 3.4x1038 arasındaki sayıları saklar. Ondalık kısmı noktadan sonra en fazla 7 basamak uzunluğunda olabilir. Bellekte 4 byte kaplar Double ve longdouble : float’ a göre bellekte daha fazla yer kaplarlar ve daha geniş değer aralığını kapsarlar. 8 byte yer kaplarlar ve noktadan sonra 15 basamak ondalık kısma sahiptirler.
cost Niteleyici Sabit tanımlamak için kullanılır ve değişkenin değerinin program sonuna kadar değişmeyeceğini bildirir. Bu tür değişkenlerin içeriğini değiştirmeye kalktığımızda hata mesajı ile karşılaşılır. costfloat pi=3.141618; #define direktifi C++ programlama dili de kullanımı tavsiye edilmemekle birlikte sabit tanımı # define ile tanımlanabilir. #define pi=3.141618 setw manipülatörü Ekrana basılacak veya karakterlerin belirli bir formatda n karakterlik bir alanda yazılmasını sağlar Set(n), n verilen karakter aralığı Setw(10) kendisinden sonra gelen değişkenin 10 karakterlik alanda yazdırır. Sayılar sağa, metinler sola dayalıdır.
// setw manipülatörü için örnek #include <iostream> #include <iomanip> // setw için usingnamespacestd; intmain() { long ogr1=1425785, ogr2=47, ogr3=1761; cout << setw(8) << “öğrenci” << setw(12) << “puan” << endl << setw(8) << “Ayşegül” << setw(12) << ogr1 << endl << setw(8) << “Hasan” << setw(12) << ogr2 << endl << setw(8) << “Abdullah” << setw(12) << ogr3 << endl; return 0; } setw manipülatörü iomanip başlık dosyasındadır.
Bazı örnekler { inti, j; // Bu üç satır 4 adet değişken tanımlar char c; float x; // Programın geri kalanı Burada ilk satır(inti, j; ) c derleyicisine şunu söyler: Program da bir yerde iki tamsayı kullanacağım bunlar için hazır ol. Bu değişkenleri i ve j olarak isimlen diriyorum. Bu değişkenlerin içeriğinin tamsayı olmasından emin olmak istiyorum.
Diğer programlama dillerinde de kendine özgü gösterimleri ile benzer temel veri tipleri kullanılır. • C++ dilinde kullanılan türetilmiş veri tipleri aşağıda verildiği gibidir; • enum: sıralamalar {pzt, sa, çar, per, …} • struct: topluluk • işaretçiler (pointers) • class: sınıf • vb.
// demonstratesfloatingpointvariables #include <iostream> //forcout, etc. usingnamespacestd; intmain() { floatrad; //variable of typefloat constfloat PI = 3.14159F; //typeconstfloat cout << “Enterradius of circle: “; //prompt cin >> rad; //getradius floatarea = PI * rad * rad; //findarea cout << “Area is “ << area << endl; //displayanswer return 0; }
// charvars.cpp // demonstratescharactervariables #include <iostream> //forcout, etc. usingnamespacestd; intmain() { char charvar1 = ‘A’; //define charvariable as character char charvar2 = ‘\t’; //define charvariable as tab cout << charvar1; //displaycharacter cout << charvar2; //displaycharacter charvar1 = ‘B’; //set charvariabletocharconstant cout << charvar1; //displaycharactercout << ‘\n’; //displaynewlinecharacterreturn 0; }