24.03.2015 Views

c_ders_notlari

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

İÇİNDEKİLER<br />

FONKSİYONLAR (ALT PROGRAMLAR, METOTLAR) ........................................................................................... 2<br />

C++`DA KULLANILAN PARANTEZLER; ...................................................................................................................... 2<br />

FONKSİYON NASIL TANIMLANIR ? ............................................................................................................... 2<br />

POİNTERLAR (İŞARETÇİLER) VE REFERANS (ADRES) OPERATÖRLERİ ...................................................................... 6<br />

NEDEN POİNTER KULLANIRIZ? ....................................................................................................................... 6<br />

Asal sayılar ................................................................................................................................................... 10<br />

FONKSİYONLAR VE POİNTERLAR .......................................................................................................................... 13<br />

Tam sayı dizisine yer ayırma işlemi ............................................................................................................. 17<br />

Tam sayı dizisine yer ayırma ve dizinin eleman sayısını belirleme .............................................................. 17<br />

işlemi ........................................................................................................................................................... 17<br />

---------Sınav sorularından-------- .................................................................................................................. 18<br />

SINIFLAR ............................................................................................................................................ 19<br />

VİZE ÖNCESİ SON ÖDEV VE CEVAPLARI ........................................................................................................ 22


Fonksiyonlar (Alt Programlar, metotlar)<br />

10.02.2015 Salı<br />

C++`da kullanılan parantezler;<br />

[]: Dizilerde<br />

{}: Blok yapı<br />

for(int i=1;i


using namespace std;<br />

int f(int x,int y) return x+y; //{return x+y;}olmalıydı<br />

void main()<br />

{f(2,3);}<br />

//doğrusu<br />

#include<br />

using namespace std;<br />

int f(int x,int y) {return x+y;}<br />

void main()<br />

{f(2,3);} //program çalışır ama ekrana birşey yazdırmaz.<br />

#include<br />

using namespace std;<br />

int f(int x,int y) {return x+y;}<br />

void main()<br />

{int a,b; coutb;} //hatalı<br />

#include<br />

using namespace std;<br />

int f(int x,int y) {return x+y;}<br />

void main()<br />

{int a,b; cin>>a>>b; coutb; coutb; coutb; cout


using namespace std;<br />

int f(int x) {return x+2;}<br />

void g(double x) {cout


Bir tam sayının karesi reel sayının ise 2 katını alan programı aşırı yükleme ile yapınız.<br />

#include<br />

using namespace std;<br />

double islem(int x) {return x*x;}<br />

double islem(double x) {return 2*x;}<br />

void main()<br />

{<br />

double a;<br />

int b;<br />

cin>>a>>b;<br />

cout


Pointerlar (İşaretçiler) ve Referans (Adres) operatörleri<br />

24.02.2015 Salı<br />

Bilgisayar hafızasında bir bölgeyi isimlendirip orada belirli<br />

tipte bilgi depolanmasını sağlayan değişkenler vardır.<br />

Her c++ değişkeni bilgisayarın<br />

hafızasındaki bir yere kaydedilmektedir.<br />

Değişkenin adresi, aynı evinizin adresi gibi tekdir.<br />

Bir değişkenin içeriği ya klavyeden girilir ya da<br />

girilen diğer değerlerin kullanımıyla hesaplanır.<br />

C++ da başka türde bir değişken daha vardır.<br />

Programın gücünü ve esnekliğini arttıran bu<br />

değişken tipine pointer (işaretçi)denir.<br />

Pointer belirli tipteki başka bir değişkenin<br />

adresini depolayan int tipinde bir değişkendir.<br />

Pointerları önüne yıldız işareti koyarak tanımlanır.<br />

Örneğin tipi int olan bir p sayısı için pointer tanımlaması şu şekildedir:<br />

int* p; // * işareti değişken tipine de yakın olabilir.<br />

Ya da<br />

int *p; // * işareti değişkene yakında olabilir.<br />

Bir pointerın kendisine bir değer atanamaz,<br />

fakat pointerın gösterdiği bellek adresine bir değer atanabilir.<br />

int* i;<br />

i = 3; // yanlış<br />

int* i;<br />

*i = 3; // doğru<br />

NEDEN POİNTER KULLANIRIZ?<br />

Öncelikle değişkenin adresini alıp bunu bir pointera atarız.<br />

Bir diziye aktarılan değerler üzerinde işlem yaparken pointer<br />

kullanımı işlemin hızını arttırır.<br />

Ayrıca,program çalışırken değişkenlere dinamik olarak yer tahsis eder.<br />

Bu özellik sayesinde program,girdilerine<br />

bağlı hafızasının kullanımını ayarlar.<br />

Çünkü önceden kaç değişken kullanacağınızı bilemezsiniz.<br />

Referanslar yani adres operatörleri<br />

değişkenin değeri ile birlikte<br />

adresinide tutarlar.<br />

Değişkenlerin bellekteki adreslerini bulmak<br />

için adres(referans) operatörü yani & kullanılır.<br />

6


#include <br />

using namespace std;<br />

void main()<br />

{<br />

int x=4,y=16;<br />

double z=9.3;<br />

cout


v1*=2;<br />

cout


p=&i;<br />

q=&j;<br />

r=q;<br />

cout


*(p+i); p nin gösterdiği adresten i blok ötedeki sayıyı hesaplar<br />

#include<br />

using namespace std;<br />

void main()<br />

{<br />

int yas[3],*p,toplam=0,i,n;<br />

p=yas;//dizinin ilk terimi işaretlendi<br />

yas[0]=5;<br />

yas[1]=4;<br />

yas[2]=8;<br />

for(i=0;i


{<br />

}<br />

const int n=150;//kaç tane asal sayı hesaplanacak<br />

long asal[n]={2,3,5};//İlk üç asal sayı<br />

long deneme=5;//hedef asal sayı<br />

int sayac=3;//bulunan asal sayı adedi<br />

int kontrol=0;//sayı asalsa elde edilecek değer<br />

do<br />

{ deneme+=2;//Asallığı araştırılacak sayı<br />

kontrol=0;//<br />

for(int i=0;i


setlocale(LC_ALL,"turkish");<br />

int sayi;<br />

bas:cout>sayi;<br />

switch(sayi)<br />

{<br />

case 5:cout


}<br />

char *isim3="galatasaray";<br />

char *isim4="besiktas";<br />

char *isim5="trabzon";<br />

int ad;<br />

cout


cout


eturn (toplam/n);<br />

}<br />

void main()<br />

{<br />

double a[10000];<br />

int n;<br />

cin>>n;<br />

for(int i=0;i


Program çalıştırıldığında, programcı tarafından tanımlanmış değişkenler<br />

için bellekte yeteri kadar yer ayrılır.<br />

Program işletildiği sürece bu değişkenler için ayrılan bellek alanları,<br />

ister kullanılsın ister kullanılmasın,<br />

sadece program için tanımlanmış değişkenlere aktarılacak değerleri tutmak<br />

için kullanılır.<br />

İyi ve işlevsel bir otomasyon yazılımı hazırlanmak istendiğinde<br />

çok sayıda değişkene ve çok uzun dizilere ihtiyaç duyulabilir.<br />

Böyle bir program için normal mantıkla yapılan değişken tanımlamaları<br />

sonucunda belleğin kapasitesinin dolarak programın yavaş çalışmasına,<br />

kilitlenmelere ve bu kilitlenmeler sonucu verilerin kaybolmasına yol<br />

açabilir.<br />

Bu gibi problemlerin yaşanmaması için dinamik bellek yönetimi<br />

geliştirilmiştir.<br />

new ve delete komutunun kullanımı<br />

C++ da belleği new komutu kullanarak ayırabilir ve<br />

delete kullanarak geri verebilirsiniz.<br />

Bu operatörlerin kullanımları:<br />

p-var=new tip<br />

delete p-var<br />

Burada tip: bellekte yer ayırmak istediğimiz nesnenin tipi;<br />

p-var: o tipe olan işaretçidir.<br />

#include<br />

using namespace std;<br />

void main()<br />

{<br />

int *p;<br />

p=new int;//tamsayı için bellekte yer ayırır.<br />

*p=15;<br />

cout


cout


---------Sınav sorularından--------<br />

#include<br />

using namespace std;<br />

double f(double x,double y) {return x+y;}<br />

double f(double x) {return f(x,x);}<br />

void main()<br />

{<br />

cout


Sınıflar<br />

Nesneye dayalı programlama (object oriented programming ) güçlü bir programlama dilidir ve<br />

günümüzde birçok<br />

programlama dili tarafından desteklenmektedir. C++ diğer diller içinde en temel olduğundan<br />

burada öğrenilecek<br />

olan nesneye dayalı programlama teknikleri ileride işimizi oldukça kolaylaştıracaktır.<br />

C++ nesneye dayalı bir programlama dilidir ve en önemli özelliği sınıflardır.<br />

Sınıflar nesne oluşturmaya yarayan bir mekanizmadır.<br />

Bir sınıf (class) elemanları farklı tiplerle tanımlanmış bir diziye benzer. Dolayısıyla sınıflarda dizilerin<br />

aksine elemanlar<br />

farklı tiplerde olabilirler. Sınıfın elemanları hatta fonksiyonlar bile olabilir.<br />

Sınıflar tanılayarak program parçalara bölünebilir ve bu sayede program yazmak kolaylaşabilir.<br />

Sınıflar şu şekilde tanımlanır:<br />

class sinif_adi //sinif_adi için geçerli olan kurallar değişkenler için geçerli kurallarla aynıdır.<br />

{<br />

private :<br />

üye veriler//değişkenler vs tanımlanabilir.<br />

public:<br />

üye veriler<br />

üye fonksiyonlar // fonksiyonlar ile ilgili kurallar geçerlidir.<br />

yapıcı ve yıkıcı fonksiyonlar<br />

}; //bitiş parantezinden sonra ; kullanılmak zorundadır.<br />

private: sınıf yapısına özeldir. Sınıf dışından buraya erişim olmaz.<br />

public: public`de tanımlanan değişkenlere, üye fonksiyonlara kurallara uymak kaydıyla sınıf<br />

dışından erişim<br />

olabilir. Özellikle de ana programdan erişim yapılabilir.<br />

Sınıf içindeki üye veriler ve üye fonksiyonlara erişim için nesne tanımlanmalıdır. Nesne iki türlü<br />

tanımlanabilir.<br />

1) Ana programda sinif_adi nesne_adi ; şeklinde<br />

2) Sınıf blok yapısının bittiği }; kısmında noktalı virgülden önce direkt yani }nesne_adi; şeklinde<br />

tanımlanabilir.<br />

Örnek: Aşağıdaki programı inceleyiniz;<br />

#include<br />

using namespace std;<br />

class prog<br />

{<br />

public:<br />

void f(int n )<br />

{<br />

cout


sınıf ,soyadınızda nesne ve doğum yeriniz adında üye fonksiyonla yazınız.<br />

#include<br />

using namespace std;<br />

class mustafa<br />

{<br />

public:<br />

double gop(double a,double b)<br />

{<br />

return a+b;<br />

}<br />

};<br />

void main()<br />

{<br />

double x,y;<br />

cin>>x>>y;<br />

mustafa bicer;<br />

couty>>z;<br />

islemler islem;<br />

cout


Sınıfta yaşı 20 ile 22 (dahil) arasında olanların sayısını bulan program.<br />

#include<br />

using namespace std;<br />

class sinif<br />

{<br />

public:<br />

void yas_araligi()<br />

{<br />

int yas,syc=0;<br />

coutn;<br />

for (int i=0;i20 && yas


VİZE ÖNCESİ SON ÖDEV VE CEVAPLARI<br />

//soru2.a<br />

#include<br />

using namespace std;<br />

class mustafa<br />

{<br />

public:<br />

double topla(int n)<br />

{<br />

double toplam=0;<br />

if(n%2==0)<br />

{<br />

for(double i=1;i


}<br />

else<br />

{<br />

for(double i=1;i


using namespace std;<br />

class islemler<br />

{<br />

public:<br />

void f()<br />

{<br />

int n; coutn;<br />

double x,enb;<br />

coutx;<br />

enb=x;<br />

for(int i=2;i


for(int i=0;i


void main()<br />

{<br />

double n;<br />

giris:cout


soru8.b<br />

#include<br />

using namespace std;<br />

class mustafa<br />

{<br />

public:<br />

double f(double x,double y,double z) {return x+y+z;}<br />

double f(double x,double y) {return x-y;}<br />

};<br />

void main()<br />

{<br />

double a,b,c;<br />

cin>>a>>b>>c;<br />

mustafa islem;<br />

cout


soru10<br />

#include<br />

using namespace std;<br />

class islemler<br />

{<br />

public:<br />

double fonksiyon(int n)<br />

{<br />

int syc=0;<br />

double *dizi=new double[n];<br />

for(int i=0;i


};<br />

void main()<br />

{<br />

islemler islem;<br />

int n;<br />

cin>>n;<br />

islem.f(n);<br />

system("pause");<br />

}<br />

//soru12<br />

#include<br />

using namespace std;<br />

class islemler<br />

{<br />

public:<br />

void hesap(int n,int m)<br />

{<br />

int kontrol=0;<br />

for(int i=n+1;;i++)<br />

{<br />

if(i%m==0)<br />

{<br />

cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!