NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Benzer belgeler
BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

NESNEYE YÖNELİK PROGRAMLAMA

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

NESNEYE YÖNELİK PROGRAMLAMA

1 PROGRAMLAMAYA GİRİŞ

C++ Dersi: Nesne Tabanlı Programlama

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Dr. Fatih AY Tel: fatihay@fatihay.net

Algoritma ve Programlama: Karar Yapıları ve Döngüler

C++ Dersi: Nesne Tabanlı Programlama

Fonksiyonlar (Altprogram)

C Konsol Giriş Çıkış Fonksiyonları

C++ Dersi: Nesne Tabanlı Programlama

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

BİLG Dr. Mustafa T. Babagil 1

10/17/2007 Nesneye Yonelik Programlama 3.1

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

C++ Dersi: Nesne Tabanlı Programlama

ALGORİTMA VE PROGRAMLAMA II

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Fonksiyonlar -Genel Test- A

C++ Dersi: Nesne Tabanlı Programlama

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

C++ Dersi: Nesne Tabanlı Programlama

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

C Programlama Dilininin Basit Yapıları

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Bölüm 2 - C ile Programlamaya Giriş

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

DERSİN WEB SİTESİ:

Eln 1001 Bilgisayar Programlama I

C Programlama printf() Fonksiyonu

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

C++ Operatörler (Operators)

Pointer Kavramı. Veri Yapıları

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

Fall Object-Oriented Programming Laboratory 02 - Structures

ELN1001 BİLGİSAYAR PROGRAMLAMA I

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

8. İŞARETCİLER (POINTERS)

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

BİLG Dr. Mustafa T. Babagil 1

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

Nesne Tabanlı Programlama

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

Temel Giriş/Çıkış Fonksiyonları

Sınav tarihi : Süre : 60 dak.

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

BTEP243 Ders 3. class Yazım Kuralı:

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

int printf (const char *format [, argument,...]);

C#(Sharp) Programlama Dili

PASCAL PROGRAMLAMA DİLİ YAPISI

Veri Yapıları Lab Notları 1

Adım Adım C-II. Eksik kalmış konular

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

HSancak Nesne Tabanlı Programlama I Ders Notları

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

C++ Dersi: Nesne Tabanlı Programlama

Pointers (İşaretçiler)

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Dr. Fatih AY Tel:

Giriş. ENF102 Jeoloji

11- FONKSİYONLAR (FUNCTIONS)

Fonksiyon Türleri. Bildiğiniz gibi, C++'da iki fonksiyon türü ile karşılaşıyoruz. C++'nın kullanıma sunduğu hazır fonksiyonlar.

C PROGRAMLAMA D İ L İ

YZM 2105 Nesneye Yönelik Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

Genel Programlama II

Programlama Dilleri 1. Ders 4: Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

NESNEYE YÖNELİK PROGRAMLAMA

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Programlama Dillerinde Kullanılan Veri Tipleri

Transkript:

Özlem AYDIN NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü

C DİLİNİN BİR ÜST-KÜMESİ OLARAK C++ Genel olarak, C de mevcut olan her şey C++ da da vardır. C dilinde yazılmış kodlar herhangi bir C++ derleyicisinde derlenebilir. C++, eklemiş olduğu yaklaşım değiştirici nitelikte özellikler ile C dilinden daha büyük bir kümeyi kapsar.

INPUT-OUTPUT İÇİN STREAM KULLANILMASI-cout C++ input (giriş) ve output (çıkış) işlemleri için stream (byte ların dizisi şeklinde veri transferi, veri yolu) olarak bilinen mekanizmalar kullanır. Standart output stream i cout ismiyle adlandırılır: Örnekte, C den farklı olarak; stdio.h yerine iostream.h printf yerine cout ve bit-tabanlı sola kaydırma operatörü (<<) kullanılmıştır.

Bir örnek #include <iostream> using namespace std; cout << Merhaba! ; return 0; #include <stdio.h> printf( Merhaba!"); return 0;

INPUT-OUTPUT İÇİN STREAM KULLANILMASI-cout C++ da çıktı için format string ine ihtiyacınız yoktur: #include <iostream> using namespace std; int miktar = 123; cout << miktar; return 0; C dilinde -> printf( %d, miktar); cout stream i farklı veri tiplerinin ayırdındadır ve onları doğru olarak yorumlayabilir: cout << Miktar: << miktar <<. ;

INPUT-OUTPUT İÇİN STREAM KULLANILMASImanipülatörler C++ çıktılarını da manipulatörler aracılılığıyla formatlamak mümkündür. Aşağıdaki program manipülatör kullanarak tamsayılar (integers) için varsayılan formatı nasıl değiştirebileceğimizi örneklemektedir: #include <iostream> using namespace std; int miktar = 123; cout << decimal değeri: << dec << miktar << \n ; cout << octal değeri: << oct << miktar << endl; cout << hexadecimal değeri: << hex << miktar << \n ; return 0; Program çıktısı nedir?

PROGRAM ÇIKTISI decimal değeri:123 octal değeri:173 hexadecimal değeri:7b

INPUT-OUTPUT İÇİN STREAM KULLANILMASI-cin C++ ın standard input stream i ise cin olarak adlandırılır. Aşağıdaki program klavyeden bir tamsayının nasıl girdi olarak alınacağını göstermektedir: #include <iostream> using namespace std; int miktar = 123; cout << Bir miktar girin...\n ; cin >> miktar; cout << Girdiğiniz Miktar: << miktar; return 0;

INPUT-OUTPUT İÇİN STREAM KULLANILMASI-cin cin diğer tipte veri girişleri için de kullanılabilir: #include <iostream> using namespace std; char isim[20]; cout << Bir isim girin...\n ; cin >> isim; cout << Girdiğiniz İsim: << isim; return 0;

AÇIKLAMALAR (COMMENTS) C++, C de çoklu satır açıklamasında kullanılan /*... */ açıklama formatına ek olarak, tek-satır açıklamaları için // işaretinin kullanımına izin vermektedir. // C++ da Açıklama Yazılması #include <iostream> using namespace std; char isim[20]; // Karakter katarı bildirimi cout << Bir isim girin...\n ; //İsim giriş isteği cin >> isim; //İsmin okunması cout << Girdiğiniz İsim: << isim; return 0;

FONKSİYON PROTOTİPLERİ Fonksiyon prototipi, fonksiyonun ismini, döndüreceği değeri, parametrelerin sayısını ve tipini tanımlar. C++, eğer çağrılmadan önce tanımlanmamışsa, her fonksiyon için prototip bildirimi ister. #include <iostream> using namespace std; void goruntule(char *s); //Fonksiyon prototipi goruntule( Merhaba! ); return 0; void goruntule(char *s) cout << s;

VARSAYILAN FONKSİYON ARGÜMANLARI-1 C++ da bir fonksiyon prototipinde bazı parametreler için varsayılan değerler belirlemek mümkündür. Fonksiyon çağrımı yaparken varsayılan değer almış argümanları belirtmezseniz derleyici otomatik olarak bu argümanlar için varsayılan değerleri kullanır. Eğer kendi argümanlarınızı kullanırsanız, derleyici varsayılanlar yerine onları kullanır. Bir argümanı belirtmez iseniz sağındaki diğer argümanları da belirtmemelisiniz: f(, 3.45); // Error

VARSAYILAN FONKSİYON ARGÜMANLARI-1 #include <iostream> using namespace std; void f(int i=5, double d=1.23);//fonksiyon prototipi int main () // Fonksiyon Çağrımları f(12, 3.45); f(3); f(); return 0;

VARSAYILAN FONKSİYON ARGÜMANLARI-2 Aşağıdaki programın çıktılarını belirleyiniz: #include <iostream> using namespace std; void show( int i=5, float f=2.3, long l=4 ); show(); show(5); show(6,7.8); show(9,10.11,12); return 0; void show(int first, float second, long third) cout << \nfirst = << first; cout <<, second = << second; cout <<, third = << third;

PROGRAM ÇIKTISI: first :5, second :2.3, third :4 first :5, second :2.3, third :4 first :6, second :7.8, third :4 first :9, second :10.11, third :12

DEĞİŞKEN BİLDİRİMLERİNİN YERİ - 1 C de değişken bildirimlerini blok başında yapmanız beklenir. C++ da ise referansta bulunmadan önce olmak koşuluyla bir değişkenin bildirimini kodun herhangi bir yerinde yapabilirsiniz. cout << Bir sayı girin...\n ; int sayı; cin >> sayı; cout << Girdiğiniz Sayı: << sayı; return 0;

DEĞİŞKEN BİLDİRİMLERİNİN YERİ - 2 Aşağıdaki ifade doğrudur. for (int ctr = 0; ctr < MAXXTR; ctr++) Fakat, aşağıdaki ifadeler hatalıdır: if( int i == 0 ) // Error while( int i == 0 ) // Error

DEĞİŞKEN BİLDİRİMLERİNİN YERİ - 3 Aşağıdaki örnekte bir değişken bildirimi bir blok içinde yapılmıştır: int satirno; for( satirno = 0; satirno < 3; satirno++ ) int temp = 22; cout << \nsatir No: << satirno << Temp: << temp; cout << satirno; // satirno erisilebilir // cout << temp; // temp erisilemez return 0; Program çıktısı nedir?

KAPSAM ÇÖZÜMLEYİCİ OPERATÖR C de yerel bir değişken aynı isimli global bir değişkene göre önceliklidir. Örneğin, hem bir yerel değişken hem de global bir değişken miktar ismiyle adlandırılmışsa ve yerel değişken referans kapsamı içinde ise miktar her kullanıldığında referans yerel değişkene yapılmış olur; yani, global değişken görünmez olmuştur. C++, bu tür durumlarda, global değişkene de erişime izin verir. Değişkenin önüne kapsam çözümleyici operatör olan :: işaretinin konulması halinde kullanılanın yerel değil global değişken olduğu anlaşılır. İç içe gömülmüş kapsam alanlarında :: bir üst kapsam alanındaki değişkenlere değil global değişkenlere erişim sağlar.

KAPSAM ÇÖZÜMLEYİCİ OPERATÖR - örnek #include <iostream> using namespace std; int miktar = 23; // Global Degisken int miktar = 456; // Yerel Degisken cout << ::miktar; cout << \n ; cout << miktar; return 0; Program çıktısı nedir?

INLINE FONKSİYONLAR - 1 C++ da gerçekte çağrılmayan, fakat her çağrı noktasında satır içerisinde genişleyen fonksiyonlar tanımlanabilir. C++ daki inline anahtar sözcüğü beraberinde kullanıldığı fonksiyonun bir kopyasının çağrıldığı her yere eklenmesini sağlar. Eğer, bir inline fonksiyonu programınızda 20 kez çağırıyorsanız, derleyici bu fonksiyonun 20 kopyasını.exe dosyanıza ekleyecektir. Fonksiyon kopyalarının bu şekilde eklenmesi fonksiyon çağrımından doğan overhead zamanını ortadan kaldırarak programınızı hızlandıracaktır. Fakat, bir fonksiyonun birçok kopyasını yaratmak da program kodunuzun büyümesine yol açacaktır. Bu nedenle, inline niteleyicisi yalnızca fonksiyon çok kısa ise yada az sayıda çağrılıyorsa kullanılmalıdır.

INLINE FONKSİYONLAR 1 - örnek #include <iostream> using namespace std; inline int max(int a, int b) return a>b? a : b; cout << max(10, 20); cout << " " << max(99, 88); return 0;

INLINE FONKSİYONLAR - 2 inline fonksiyonlar #define ile bildirimi yapılmış makrolara benzerler; fakat, makrolar basit bir metin değiştirici ile gerçeklenirken, inline fonksiyonlar derleyici tarafından tanınırlar. Derleyici tarafından tanınmanın avantajı, derleyicinin inline fonksiyonun parametreleri üzerinde tip kontrolü yapabilmesidir.

const NİTELEYİCİSİ - 1 C gibi, C++ da değişkenleri sabitlere dönüştüren const niteleyicisini destekler. C de const niteleyicisi, ilk değer ataması haricinde, değişkenin salt-okunur olduğunu belirtir. C++, bir adım daha ileri gider ve sabit bir ifade kullanılan her yerde bir const ifadesi kullanmanıza izin verir: #include <iostream> using namespace std; const int boyut = 5; char cs[boyut]; cout << cs dizininin buyuklugu: << sizeof cs; return 0; Fakat, C++ da bile bir const değişkeninin ilk değerini sabit bir ifade haricinde bir şeyle belirleyemezsiniz. Örneğin, boyut değişkeni bir fonksiyon içinde bildirilmiş bile olsa, ilk değerini fonksiyonun bir parametresi üzerinden alamaz.

const NİTELEYİCİSİ - 2 const niteleyicisi işaretçi bildirimlerinde de kullanılabilir. Bu tür bildirimlerde niteleyicinin yeri önemlidir: char *const ptr = buf; // const işaretleyici *ptr = a ; // legal ptr = buf2; // error Aşağıdaki bildirimlerin anlamı ise farklıdır: const char *ptr = buf; // const a işaretleyici ptr = buf2; // legal *ptr = a ; // error

const NİTELEYİCİSİ - 3 const niteleyicisi bir fonksiyonun parametrelerinden birinin değerini değiştirmesine engel olmak için de kullanılabilir: int salt_okur( const struct Node *nodeptr ); Bu prototip salt_okur fonksiyonunun parametresinin işaret etmiş olduğu Node topluluğunu değiştiremeyeceğini bildirmektedir. Fonksiyon içinde (sıradan) bir işaretçi bildirimi yapılmış bile olsa, parametre güvenceli olarak kalır; çünkü, salt-okur bir işaretçiyi sıradan bir işaretçiye atayamazsınız: int salt_okur( const struct Node *nodeptr ) struct Node *writeptr; // sıradan işaretçi writeptr = nodeptr; // error

int İÇİN VARSAYILAN DEĞER KULLANIMI C++ a son zamanlarda yapılan bir değişiklik de, veri tipi belirtilmemiş bildirimlerde veri tipinin int olması varsayımına izin verilmemesidir. C de ve geleneksel C++ da varsayılan-int kuralının en yaygın kullanımını fonksiyonların döndürdükleri değer tiplerinin belirlenmesinde görüyoruz: func(int i) return i*i; Standart C++ da yukarıdaki fonksiyonun döndürdüğü değer tipinin int olacağı açıkça belirtilmelidir: int func(int i) return i*i; Fakat, neredeyse bütün C++ derleyicileri varsayılan-int kuralını halen desteklemektedir.

Bool VERİ TİPİ C++ bool adlı bir boolean veri tipini desteklemektedir. bool tipinde nesneler yalnızca C++ nın anahtar sözcükleri içinde yer alan true ve false değerlerini alabilirler. Gerektiğinde bool değerlerini tamsayılara ve tamsayıları bool değerlerine dönüştüren otomatik dönüşümler uygulanmaktadır: sıfır olmayan değerler true değerine ve sıfır false değerine dönüştürülürken true 1 e ve false 0 a dönüştürülmektedir.

Bool VERİ TİPİ - örnek #include <iostream> using namespace std; bool IsEqual(int x, int y) return (x == y); cout << "Enter a value: "; int x; cin >> x; cout << "Enter another value: "; int y; cin >> y; bool bequal = IsEqual(x, y); if (bequal) cout << x << " and " << y << " are equal << endl; else cout << x << " and " << y << " are not equal << endl; return 0;

AŞIRI YÜKLENMİŞ FONKSİYONLAR C++ aynı isimle birden fazla fonksiyon yaratılmasına izin verir: int kare(int x) return x*x; double kare(double x) return x*x; Değer atanmış parametreler bulunduran fonksiyonlarla aynı isimde farklı fonksiyonlar yaratmak bazen sorunlara yol açabilir: int f(int x); float f(int a, int b = 0); int y = f(5);

AŞIRI YÜKLENMİŞ FONKSİYONLAR-örnek #include <iostream> using namespace std; void f1(int a); void f1(int a, int b); f1(10); f1(10,20); void f1(int a) cout << "f1 tek parametre\n"; void f1(int a, int b) cout << "f1 cift parametre\n";