Anasayfa Eğitseller Programlama Temel'in Pointer Macerası

Temel'in Pointer Macerası PDF Yazdır e-Posta
Kullanıcı Değerlendirmesi: / 6
ZayıfEn iyi 
Eğitseller - Programlama
Cuma, 20 Ekim 2006 21:59
Temel bir gun programlama ogremeye karar vermis hergun kursa gidiyormus. Aksamlari kahvenin onunden gecerken hep surati bezgin moralsizmis.
” ya bu iste bir is var ” demis Dursun.
“ Ben ha cidum bu Temel ile konusayum”

Dursun gitmis Temellin evine bakmis temel bilgisayarin basinda uyukluyor.
” o temel ne oldi sana boyle hergun boyle huzunlu huzunlu kahfe onunden geciyorsun”

” yahu hic sorma ben programlama ogrenmeye basladim ”

” ee peki ne ogreniyorsun’’ demis Dursun.

” C pilus pilus , sen anlamazsin, ben oyun yapacagim haa bunu ogrenmek gerekiyormus.”

-”yahu demis ” Dursun
-”anlamaz olurmuyum sen hele butun sorularini bir sor, nedir peki anlamadigun.”

” Bu pointer lar var, ha bunlara kil oluyorum , anlamiyorum ” demis Temel.
-” tamam o zaman sor ben sana anlatayim hem onlara bizim burda isaret ediciler deniyor”

Dinle o zaman sorayum:
  Bu object diyolar, ha bu nedir ?

Dursun birazda havaya girerek,
“ bak simdi temel. Bu .Obje dedigin nesnedir.”
” ee o ne oluyor ”


Sen simdi bilgisayara bir tam sayi girecen degilmi. Iste buna int diyorlar.
Soyle yazmiyormusun:   int a;
Ha bunu bir deger atamak istersen bunu su sekilde yazmiyormusun int a = 3;
Ha bu girdugun deger bilgisayarin ram inde bir yer kapliyor.

Ya dursun bu ram ne ?
Bak simdi rami bizim musa eminin otobusu gibi dusun, burda butun koltularin bir numarasi var degilmi.

Evet
 
Simdi musa emmi geldiginde nereye oturuyor ?
On koltuga.

Iste bilgisayarin ana sistemi buraya oturuyor (windows XP) geriye kalan koltuklarda yolcular, iste rami cok buyuk bir otobus olarak dusun.

Tamam gozlerimi kapadim dusunuyorum.

-Simdi bizde ne var.

Ne var?

-Bizde erkek bayan ve cocuklar var degil mi ? iste sen bir yere gidecegin zaman gidib bilet aliyorsun, mesala sizin aile kac kisi ?

-kaynanamda dahilmi ?
-Dahil
- o zaman 6 kisi, ben, fadime, 3 tane cocuk, bir de kaynanam.
Sen bilet alirken ne diyorsun ?
-    6 kisilik yer istiyorum diyorum
-    Ha iste bilgisayarda boyle yapiyor sen bilgi kaydetmek istediginde sana yer veriyor. Iste bu yerler ne istedigine gore degisiyor. Int istersen sana 4 bytelik yer veriyor. Char istersen baska.
-    Ben peki bunlari nasil ogrenecegim, bununla ilgili bir liste var, karabit.org egitseller degiskenler kisminda onlari bir ara oku derim.
-    Simdi gelelim nesne kismina sana verilen bu yerin bir adresi var, ayni otobuste koltuk ayirtiginda sana koltuk numarasi verdikleri gibi.
-    Ula dursun ben anladim bunu ya .
-    Aferin Temel sana, ne anladim.
-    Bilgisayari otobuste yer ayirtmak icin kullaniyoruz.
-    Yuh Temel.
-    Oyle degil, bu ayirtilan yerin hepsine birde nesne deniyor., ornegin int a ;
-    O zaman tamam.
-     Yah Dursun bunda bir bit yenigi olamasin, okadar mi ?
-    Tabii okadar, yanliz bu ayirtacagin yerlerin sayisi cok buyuk yada cok kucuk olabilir. Bu sana kalmis, ornegin birkactane fonskyondan olusan bir programda bir nesne olabilir sonucta, olay bilgisayari hafizasinda kaplana yer degimi ? ilerde sana bunlari nasil uygun bir sekilde kullanacagini anlatirim.
-    Simdi Temel soyle ne anladin.
-    Bilgisayarda bir veri saklamak istedigimizde bunun hangi deger oldugu belirliyoruz. Ornegin tam sayilar icin int, karakterler icin char, ondalikli sayilar icin float ve double, dogru yanlis icinde bool.
-    Lan temel helal olsun sana
-    Peki biz kendimiz deger olusturabiliyormuyuz,
-    Tabi onunuda yapabiliyoruz, ama simdilik nasil yapildigini bilmiyorum.
-    Peki temel bana iki tane tam sayi nesnesi yaz.
-    int a;
-    int b;
-    bunlara bir deger ata
-    ya temel ne at i , burada programlamadan konusuyoruz.
-    Ata demek bir degere esitle demek, esegini kaziga bagla gibi.
-    Haaa!! int a= 3 ; int b = 5;
-    Peki bunlari ekranda nasil cikartirsin.
-    Ha iste onu biliyorum


[code:1]# include <iostream>
using namespace std;
int main()
{
int a = 3, int b = 5;
cout<< " a =  "<< a<<endl;
cout << "b =  "<< b<<endl;

system ("pause");
return 0;

}[/code:1]

- Nerden biliyorsun bunlari
- Bu zamana kadar bir suru egitsel okudum karabit.org ta ondan biliyorum.
- Tamam gelelim diger soruna .
- Peki bir nesneni ramde nerede oldugunu nasil biliyoruz. Yani bilet numarasi gibi
- Bu yapmak gercekten kolay bak simdi yukardaki kodunu biraz degistirecegim.

[code:1]
int a = 3 ;
cout << " a " << a<<endl;
cout << " a nin adresi " <<&a<<endl;[/code:1]

-    Temel ekranda ne cikti soyle bakalim bana
-    Ben bu rakami okuyaman bune boyle ya ,
-    Buna heksedecimal numara denir, bilgisayar genelde hafiza adreslemede bu rakamlari kullanir.
-    Ben anlamadim bunu ?
-    Istersen bir google bak. Bir suru matematikle ilgili yazi bulabilirsin.
-    Neyse ben sonra bakarim gelelim.
-    Simdi bu adreslemeyi ogrendinmi ?
-    Ogrendim ama bu pointerlar ne oluyo! Bu nu anlatmadin
-    Simdi oraya geldik. Pointerda bir nesne dir,
-    Hadi ya ! o zaman niye kullaniyoruz bunlari.
-    Yavas yavas temel , simdi asagidaki ogrnege bak.


 [code:1]int a = 3;
 int* int_ptr = &a;

 cout<<"           a = "<<a<<endl;
 cout<<"a nin adresi = "<<&a<<endl;
 cout<<"     int_ptr = "<<int_ptr<<endl;
  [/code:1]
  
-    bu (yildiz) ne oluyor dursun .
-    iste bu bunun adi asterix
-    digeride hopterix mi?
-    hayir bunun adi asterix. Digeri & operatoru –
-    tamam anladim gelelim niye bunu kullandigimiza,
-    Sen once sana daha once anlatigim ornegi bir yaz calistir.
-    Tamam, tamam kizma, calistiriyorum
-    Simdi ne gordun ekranda.
-    Bu onunde * olan sey bizim daha once yazdigimiz degiskenin adresine esit oldu.
-    Iste biz bununla bu yeni degiskeni yani pointeri oradaki diger degiskenin adresine esitledik.
-    Iyi bok yedik , peki ne oldu, esitledikte.
-    Biz o degeri degistirebiliriz.
-    Nasil yapacaz onu
-    Bu bizim yazdigimiz int* int_ptr ; bu bir pointer isaret ettigi diger degiskenin adreside pointie.
-    Tamam simdi biz degeri programlama yaparken degiskenin adresini degistirmeden icinde saklanan degeri degistirebiliriz.
-    O nu nasil yapiyoruz.
-    Bu ornegi simdi bilgisayarina yaz.
-    Tamam.
[code:1]
int a = 3;
int* int_ptr = &a;
cout<<"           a = "<<a<<endl;
*int_ptr = 4;
cout<<"           a = "<<a<<endl;
(*int_ptr)++;
cout<<"           a = "<<a<<endl;[/code:1]

-    Simdi anladim
-    Peki ne anladin
-    int* int_ptr yaptigimizda bir pointer beliyoruz, bunu baska bir degiskenin adresine attadigimizda bunu int* int_ptr = &a diye yaziyoruz. Simdi int* int_ptr bir pointer isaret ettigi yerde pointie. Buradaki degeri degistirmek istedigimizde *int_ptr = 4; yaziyoruz, boylelikle bu pointie nin degeri degisti ama adresi degismedi.
-    Afferin temel gercekten anlamissin
-    Ya dursun bu programalama okadarda zor degilmis be!
-    Yok temel onemli olan nasil anlatildigi, bizler insaniz makina degil, insan gibi anlariz, bazen bizleride makina zannediyorlar, ama progralama yapmak baska programlamayi anlatmak baska.
-    Bunu dogru dedin. Peki simdi bir deger var ama bunun ne kadar oldugunu bilmiyoruz o zaman ne yapacagiz.
-    Demek istedigin su galiba, otobus hareket etti nasil yoldan yolcu aliriz.?
-    Ha tamam iste o sekilde

Bunu yapmak icin new diye bir sey kullaniyoruz bu yeni demek, mauvinin sofore yoldanda yolcu alacagiz demesi gibi. Asagidaki ornegi bilgisayarina yaz.
[code:1]
   int* int_ptr;
 int_ptr = new int;
 *int_ptr = 0;

 cout<<"ayirtilan yerin adresi:"<<int_ptr<<endl;
 cout<<"icindeki deger: "<<*int_ptr<<endl;

 delete int_ptr;[/code:1]

-    yazdim
-    simdi ben sana anlatayayim, ilk olarak bir pointer tanimladik. Bunu nasil yaptik.
-    int* int_ptr ;
-    sonra bunu dediki bu degeri bilmiyoruz, bunun icin bir yer ayarlayin.
-    Daha sonra
-    Daha sonra, buraya bir deger attadik, *int_ptr = 0;
-    Peki en alta bir delete yazdik o ne?
-    Oda bilgisayarda dinamik olarak bir yert ayittigimizda,  o ayirtigimiz hafizadaki yeri tekrar silmemiz gerekir, iste bunun icin sil yani delete yaziyoruz.
-    Tamam dursun,cok tessekur ederim, cok aciklayacisin
-    Umarim kafan karismamistir Temel.
-    Sen ne diyosun , karisirmi simdi hepsi yerli yerine oturmaya basladi, ben bu radaki ornekleri tekrar inceler, degistirir , denemeler yaparim.
-    Son bir konu kaldi Temel
-    O nedur ?
-    Su koda bir bak
[code:1]int* int_ptr = new int(7);
char* char_ptr = new char('e');

 cout<<" int degeri: "<<*int_ptr<<endl;
 cout<<" char degeri: "<<*char_ptr<<endl;

 delete int_ptr;
  delete char_ptr;[/code:1]

-    simdi bir de char pointer kullandik.Dursun ama niye rakamlari ve harfi o sekilde parantezler icine yazdik.
-    Buna constructor call denir
-    Ne denur.
-    Yapim asamasindayken cagirma.
-    Bir degiskene programcilar bu sekildede deger atayabilirler.
-    Yani isin farkli bir yazma cesidi.
-    Evet, biraz daha ayrintilari var, ama ilerde bu konulari daha ayrintili bir sekilde tekrar anlatacagim,
-    Zaten benim beyin su anda doldu, bugunluk bu kadar yeter.
-    Tamam temel ne zaman sorun olursa bana sor,
-    Sormazmiyim yoksa nasil ogrenirim , ben kendi basima burada perisandim.
-     Tamam o zaman temel haftaya ne calisalim
-    Ya Dursun bu programlama zevkliymis, haftaya  Arrayleri calisalim.
-    Oldu temel sen simdiden biraz bir on arastirma yap.

Temel hemen butun ornekleri tekrar bilgisayara yazmaya basladi, degistirdi, yeni seyler denedi, bazilari calisti bazilari hatta Verdi, hattalarin nedenini anlamaya calisti, anlayamakdiklarini karabit.org taki forumlara sordu.
  Yorum yok.
Yorum ekle. (0 yorum)

 

OyunGelistirici.net - Türk Oyun Yapımcılarının Buluşma Noktası

Bu sitede yazılan tüm yazıların hakları yazarlarına aittir. İzin alınmadan yayınlanamaz.

Bu sitede Firefox kullanmanız önerilir. En az 1024 x 768 masaüstü çözünürlüğü tavsiye edilir.