doç. dr. cemil Öz

29
Algoritmalar ve Programlama II Ders 2: C++ programlama dilinde Sabit,değişken ve değişken bildirimleri Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz

Upload: josephine-boone

Post on 01-Jan-2016

162 views

Category:

Documents


7 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Doç. Dr. Cemil Öz

Algoritmalar ve Programlama IIDers 2: C++ programlama dilinde Sabit,değişken ve

değişken bildirimleri 

Doç. Dr. Cemil Öz

SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz

Page 2: Doç. 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.  

Page 3: Doç. Dr. Cemil Öz

Fonksiyonun gövdesi küme parantezi içerisine alınır {….}

Fonksiyon

main

Fonksiyon Nesne

ÜyeFonksiyon

ÜyeFonksiyon

Nesne

ÜyeFonksiyon

ÜyeFonksiyon

Şekil Nesneler, fonksiyonlar ve main()

Page 4: Doç. Dr. Cemil Öz

İ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.

Page 5: Doç. Dr. Cemil Öz

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;}

Page 6: Doç. Dr. Cemil Öz

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 output stream) 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.

Page 7: Doç. Dr. Cemil Öz
Page 8: Doç. Dr. Cemil Öz

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

Page 9: Doç. Dr. Cemil Öz

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 #include derleyiciye, 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.

Page 10: Doç. Dr. Cemil Öz

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.

using namespace std;Direktifi, bunu takip eden tüm program ifadelerinin std isim uzayında olduğunu belirtir.cout bu isim uzayında tanımlıdır. Eğer using direktifi kullanılmamış olsaydı başına std kelimesini eklemek gerekecektistd::cout<<“ every age has a language of its own.”>>

Defalarca std:: yerine using direktifi kullanıyoruz

Page 11: Doç. Dr. Cemil Öz

AçıklamalarHangi 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

Page 12: Doç. Dr. Cemil Öz

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. 

Page 13: Doç. Dr. Cemil Öz

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. . 

Page 14: Doç. Dr. Cemil Öz

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 sales SALES sALES

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

Page 15: Doç. Dr. Cemil Öz

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.

Page 16: Doç. Dr. Cemil Öz

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ırVar1=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.

Page 17: Doç. Dr. Cemil Öz

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 short tmasayı 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 atachar Karakter2=‘\r’; // değişkeni enter olarak tanımla

Page 18: Doç. Dr. Cemil Öz

Table 2.1 Yaygın olarak kullanılan(Common Escape )Sequences

Escape Sequence

karakter

\a zil

\b Backspace(geri al)

\f Formfeed

\n Newline (yeni satır)

\r Return (paragraf sonu)

\t Tab (sekme)

\\ Backslash (\ karakteri)

\‘ Single quotation mark (tek tırnak)

\“ Double quotation marks (çift tırnak)

\xdd Hexadecimal notation (onaltılık gösterim)

Cout<< “ \” Kaç, Canım, kaç, \” dedi.”;Ekran çıktısı” Kaç, Canım, kaç, ” dedi.

Page 19: Doç. Dr. Cemil Öz

cinCin 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.

…..int xdeg;…..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, long double dir.

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 long double : 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.

Page 20: Doç. Dr. Cemil Öz

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.

cost float 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ğlarSet(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.

Page 21: Doç. Dr. Cemil Öz

// setw manipülatörü için örnek#include <iostream> #include <iomanip> // setw içinusing namespace std; int main() { 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.

Page 22: Doç. Dr. Cemil Öz

ö ğ r e n c i p u a n

A y ş e g ü L 1 4 2 5 7 8 5

H a s a n 4 7

A b d u l l a h 1 7 6 1

Page 23: Doç. Dr. Cemil Öz

Bazı örnekler

{

int i, j; // Bu üç satır 4 adet değişken tanımlar

char c;

float x;

// Programın geri kalanı

Burada ilk satır(int i, 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.

Page 24: Doç. Dr. Cemil Öz

Table 2.2 temel C++ değişken tipleri

        Numerik aralık Bellek alanı

Keyword Alt sınır Üst sınır Ondalık kısım byte

char –128 127 yok 1

short –32,768 32,767 yok 2

int –2,147,483,648 2,147,483,647 yok 4

long –2,147,483,648 2,147,483,647 yok 4

float 3.4 x 10–38 3.4 x 1038 7 4

double 1.7 x 10–308 1.7 x 10308 15 8

long double 3.4 x 10–4932 1.1 x 104932 19 10

Page 25: Doç. Dr. Cemil Öz

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: toplulukişaretçiler (pointers) class: sınıfvb.

Page 26: Doç. Dr. Cemil Öz

// demonstrates floating point variables#include <iostream> //for cout, etc. using namespace std; int main() { float rad; //variable of type float const float PI = 3.14159F; //type const float cout << “Enter radius of circle: “; //prompt cin >> rad; //get radius float area = PI * rad * rad; //find area cout << “Area is “ << area << endl; //display answer return 0; }

Page 27: Doç. Dr. Cemil Öz

// charvars.cpp // demonstrates character variables #include <iostream> //for cout, etc. using namespace std; int main() { char charvar1 = ‘A’; //define char variable as character char charvar2 = ‘\t’; //define char variable as tab

cout << charvar1; //display character cout << charvar2; //display character

charvar1 = ‘B’; //set char variable to char constant

cout << charvar1; //display character cout << ‘\n’; //display newline character return 0; }

Page 28: Doç. Dr. Cemil Öz

sembol İşlev formül sonuç

* Çarpma 4*2 8

/ Bölme ve tamsayı bölme 64/4 16

% Modul veya kalan 13%6 1

+ Toplama 12+9 21

- Çıkarma 80-15 65

Operator örnek Eşdeğer ifadesi

+= bonus+=500; bonus=bonus+500;

-= budget-=50; budget=budget-50;

*= salary*=1.2; salary=salary*1.2;

/= factor/=.50; factor=factor/.50;

%= daynum%=7 daynum=daynum%7;

Page 29: Doç. Dr. Cemil Öz