C++ Ders 1[Kodun Derlenmesi]

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Herkese merhaba c++ dersleri hazırlamaya karar verdim. Öncelikle kendimi biraz tanıtmam gerekir. Forumun eski üyelerinden biriyim beni tanıyan tayfa artık yok heralde çünkü yaklaşık 2 ve ya 3 sene önce aktiftim forumda. Forumda bayağı bir vakit geçiriyodum eskiden. Benim olduğum dönemde yönetici olarak craft_man vardı halen varmı bilmiyorum uzun süredir girmiyorum. Foruma tekrar bir göz atayim dedim ve programlamaya olan ilginin arttığını gördüm. Tabi ben java programcısı değilim OOP ihtiyacı duyduğum zaman C# takılırım java ile hiç işim olmadı. Ama onun dışında C/C++ programcısıyım dır. Neyse derse geçelim:

Kodun Çalıştırılması:
Kod:
int main()
{
cout << "Merhabalar" << endl;
system("pause");
}
Diyelim ki elimizde şöyle bir kod var. C++ programlama ile ilgili henüz bir şey anlatmadığı mı biliyorum kodu örnek olarak verdim. Eğer biz direk gidip bu kodu işlemciye yollarsak işlemci hiçbir şey anlamaz. İşlemcinin tek anladığı kod vardır oda makine kodu. (Sıfır ve birler yani. Makine koduna ilerde değineceğiz şimdilik kafanıza takmayın.)

Bizim bir şekilde bu kodu makinenin anlayabileceği dile çevirmemiz gerek. Peki bu işi nasıl yapacağız?
Derleyici adı verdiğimiz yazılımlar sayesinde bu işlem gerçekleşir. Derleyici nedir?

Derleyiciler bizim girdiğimiz kodu makinenin anlayabileceği makine koduna çeviren yazılımlardır.

Aslında derleyici C++ kodunu sadece makine koduna çevirmiyor. Derleyici ek olarak çevrilen makine kodunu çalıştırabilmek için, çalıştığı işletim sisteminin çalıştırabilir dosyasını oluşturuyor. (Windows için .exe mesela)

Her işletim sisteminin kendine özel çalıştırılabilir dosyaları vardır. Windows ile Linux işletim sistemlerini ele alalım mesela. Bu iki işletim sisteminin kendine has çalıştırılabilir dosyaları vardır ve bunlar birbirinden farklıdır. Örneğin Windows'un kendi çalıştırabilir dosyalarının uzantısı exe dir ve bu dosyaların içerisinde belirli bir yapı vardır. Exe nin yapısı Linux un çalıştırılabilir dosyasının yapısından farklıdır.

Derleyici de, bu yapıyı bilmek zorundadır ve çevirdiği makine kodunu,Bulunduğu işletim sisteminin çalıştırılabilir dosyasının içine yerleştirmesi gerekir.

Buradan şöyle bir şey çıkartabiliriz, Windows için olan C++ derleyicisi farklı olacak, Linux için olan C++ derleyicisi ise farklı olacak. Çünkü bu iki işletim sisteminin çalıştırabilir dosyaları farklıdır.

Tabi exe dosyasını oluşturmak, kodun direk çalışacağı anlamına gelmez. Oluşan exe dosyasını da açmak gerekir. Normalde biz bir programı açmak için üzerine çift tıklarız, ama derleyici bizim çift tıklamamıza gerek kalmadan oluşan exe dosyasını otomatikman açar. Bizde kodumuzun çıktısını ekranda görürüz.

Yani derleme işleminde 3 işlem gerçekleşir:
  1. Girdiğimiz kod derleyici tarafından işlemcinin anlayabileceği makine koduna çevrildi.
  2. Çevrilen kodu çalıştırabilmek için, derleyici tarafından çalıştığı işletim sisteminin çalıştırılabilir dosyası haline getirildi.
  3. Oluşan çalıştırılabilir dosya derleyici tarafından çalıştırıldı.

    Kafanızı karıştıran ve ya anlamadığınız yer varsa sormaktan çekinmeyin.
 

umut_

┌────────────┐ [ 1881 - 193∞ ] └────────────┘
En iyi cevaplar
0
Güzel Olmuş Devamını Sıkılıp Bırakmazsın İnş B)
@tekno 51 Hocamızdanda Bekliyoruz Böyle Bir Rehbercik :)
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0

Vienicome

Hayalet Avcısı
En iyi cevaplar
0
Yeni başlayan herkese system("pause"); öğretiliyor fakat önermem çünkü temel ona göre atılınca ileridede öyle gidiyor :(
system("pause"); çağırıldığında sistem ilk önce programı durduruyor, işletim sisteminden bir nevi ayrı bir cmd daha yüküyor, o cmd PAUSE komutunu bulmak için hafızada yer açıp kodu arar, kodu bulduktan sonra komut için açılan hafıza silinir, alt işlem kapanır ve program devam ettirilir*
Bu sistemi çok gereksiz yere yüke bindirir*
İleride kullanılacak muhtithread sistemlerde bile farkedebilir*
Onun yerine cin >> x; getchar(); benzeri şeyler kullanmak daha mantıklı*
 

EminGny

İşsiz
En iyi cevaplar
1
C# mi :nur:

Programlama dillerine ilgi duymuyorum ama bence videolu bir anlatım çok çok daha iyi olacaktır
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Yeni başlayan herkese system("pause"); öğretiliyor fakat önermem çünkü temel ona göre atılınca ileridede öyle gidiyor :(
system("pause"); çağırıldığında sistem ilk önce programı durduruyor, işletim sisteminden bir nevi ayrı bir cmd daha yüküyor, o cmd PAUSE komutunu bulmak için hafızada yer açıp kodu arar, kodu bulduktan sonra komut için açılan hafıza silinir, alt işlem kapanır ve program devam ettirilir*
Bu sistemi çok gereksiz yere yüke bindirir*
İleride kullanılacak muhtithread sistemlerde bile farkedebilir*
Onun yerine cin >> x; getchar(); benzeri şeyler kullanmak daha mantıklı*
Haklısın system("pause"); ifadesi programı durdurmak açısından pek de iyi bir tercih değil. Ama kodu örnek olarak verdim zaten ders uygulama dersi değildi bilgilendirme amaçlı bir dersti. Yoksa genel olarak ben bir değişken yaratıp cin ile değer alınmasını beklemeyi kullanırım. Verdiğin bilgi için teşekkürler.
 

Vienicome

Hayalet Avcısı
En iyi cevaplar
0
Haklısın system("pause"); ifadesi programı durdurmak açısından pek de iyi bir tercih değil. Ama kodu örnek olarak verdim zaten ders uygulama dersi değildi bilgilendirme amaçlı bir dersti. Yoksa genel olarak ben bir değişken yaratıp cin ile değer alınmasını beklemeyi kullanırım. Verdiğin bilgi için teşekkürler.
Ne demek görevimiz uzun zamandır foruma cpp yada c bilgisi olan birileri gelmemişti :(
Hatta ben üyeliğimden beri hiç görmedim :(
Gelip sonradan öğrenenler hariç tabi*
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Ne demek görevimiz uzun zamandır foruma cpp yada c bilgisi olan birileri gelmemişti :(
Hatta ben üyeliğimden beri hiç görmedim :(
Gelip sonradan öğrenenler hariç tabi*
Çok ilginçmiş C ve C++ çok güçlü dillerdir neden bilgisi olan kimse gelmemiş anlamadım. Neyse en azından sayı artıyor C++ tarikatı kurulmalı aslında bu forum için :D[DOUBLEPOST=1435971058,1435970037][/DOUBLEPOST]
C# mi :nur:

Programlama dillerine ilgi duymuyorum ama bence videolu bir anlatım çok çok daha iyi olacaktır
Video çekme gibi bir durum söz konusu değil. Nedeni ise diyafram sorunum var ve özellikle heyecanlandığım zaman kekeliyorum. Yazılı anlatımlar da iyidir ben genelde programlamayı hep yazılı metinlerden öğrenirim. Yazılı anlatımların tek sorunu okuyupta anlayamadığınız kısımlar olabiliyor eğer öyle bir şey olursa da benle her zaman iletişime geçip anlamadığınız yeri sorabilirsiniz zaten.
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Hocam Bu İşlerde Matematik Gibi Birisi Anlatmazsa Ne Kadar Okusanda Öğrenemiyorsun B)
İlla birisinin canlı olarak anlatmasına gerek yokki. Tamamiyle ilgi işi bu. Eğer biraz ararsanız internette programlamaya dair bir sürü doküman bulabilirsin. Sen öğrenmek istedikten sonra gerisi gelir zaten. Her şey zevk işidir. Eğer bir konudan zevk alırsan onu iyi yaparsın.
 

umut_

┌────────────┐ [ 1881 - 193∞ ] └────────────┘
En iyi cevaplar
0
İlla birisinin canlı olarak anlatmasına gerek yokki. Tamamiyle ilgi işi bu. Eğer biraz ararsanız internette programlamaya dair bir sürü doküman bulabilirsin. Sen öğrenmek istedikten sonra gerisi gelir zaten. Her şey zevk işidir. Eğer bir konudan zevk alırsan onu iyi yaparsın.
2 Saat Bakıpta Anlamadığımı Birisi 3 Dk Da Anlatabilir Mesela :(
 

Bay ZZ

Kızıltaş Madencisi
En iyi cevaplar
0
Şahsen ben programlama dillerini bir yayınevi belirledim oradan sipariş ediyorum kitap olarak. Yanında 22 saatlik eğitim seti de veriyor. Daha iyi öğrenirim gibi geliyor.
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
2 Saat Bakıpta Anlamadığımı Birisi 3 Dk Da Anlatabilir Mesela :(
Bir konuyla ilgili doküman bulduğunda her kısmı ilk okuyuşta anlayacaksın diye bir şey yok tabii ki. Elbette tekrar tekrar okumana rağmen anlamadığın kısımlar olacaktır. Önemli olan anlamadığın konu hakkında farklı kaynaklara baş vurmak. Örneğin döngüler konusunu anlamadım. Hemen git farklı bir kaynaktan döngüler konusunu araştır.
 
Üst