folder Tahribat.com Forumları
linefolder C - C++
linefolder C++ Sorularım ( Başlangıç Seviyesi )



C++ Sorularım ( Başlangıç Seviyesi )

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    noname
    noname's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

    Selamlar, okul ile paralel olarak C++ öğrenmeye başladım. Takıldığım bir çok nokta oluyor, genelde ufak tefek çoğunu kendi başıma halledebiliyorum ancak açtığım daha önceki bi konudaki tavsiye üzerine sorularımı sorabilmek adına bu konuyu açıyorum. Her seferinde yeni konu kirliliği olmasın, bu konu altında yardırayım gitsin :)

    Kodlamayı terminal üzerinden linux cluster'a bağlanıp yapıyorum/yapıyoruz. Tamamen komut istemi ortamı yani. "g++" denilen bir derleyici modül var. İlk soru oradan.

    -Compiler, binder ve assembler denilen kavramlar tam olarak ne oluyor, farkları nedir? 

    -Hemen hemen her örnek kod diziliminin sonunda "return 0;" içerikli bir satır var. O satırı kaldırdığımda da kodun aynen çalışmaya devam ettiğini görüyorum. return 0; nedir, niçindir?

    Teşekkürler

    noname tarafından 15/Kas/15 22:11 tarihinde düzenlenmiştir

    ...said addicted.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    rajooonn
    rajooonn's avatar
    Kayıt Tarihi: 16/Haziran/2010
    Erkek

    Hocam compiler sorularıni da aşağı yukarı biliyorum ama tam tanıma hakim olmadığım için yanlış bir şey soylemeyeyim. 

    Gelelim diğer soruya return 0 derleyiciye programın sorunsuzca bittiğini söyler. Yani sorun yok demektir. Eğer return -1, veya bunun tarzı bir geri donus yapılırsa programda sorun yaşandığı anlatılır. Return ile bu tur kontroller yapılıyor. Mesela if/else yapısı kurarsin, kullanıcıdan  blr giriş yapmasını istersin atiyorum 0-10 arasında gibi bu degerlerde girerse return 0; verirsin eğer değerlerin dışına çıkarsa return -1 yaparsa programda hata olur gibi kullanımları var. Sürç-ü lisan ettiysek affola...


    Gece! Vampir değilim ama geceyi çok severim. Yalnızsın, oyun oynuyorsun monitörün ışığı ve kendin.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Odd Emoji 3D
    BerkayCit
    BerkayCit's avatar
    Kayıt Tarihi: 25/Şubat/2011
    Erkek

    hocam nerde okuyorsun :D bende bil. müh. 1.sınıfa başladım. bize C anlatıyorlar. geçen sene yazdığım bir yazı vardı.. anlamana yardımcı olabilir sanırım. http://berkaycit.blogspot.com.tr/2014/06/c-metotlar-fonksiyonlar.html

    yinede bilen hocalar aydınlatırlar.

     

    bu arada assembler düşük seviyeli assembly yi derlemek için ama compiler yüksek seviyeli veya orta seviyeli diller için c, c++, c# vb. diye biliyorum. belki yanlış biliyorumdur. yanlış biliyosamda affola :D 


    havalı bir şeyler yazdığımı hayal edin
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Compiler: Derleyici. İnsanların anlayabildiği kaynak koddan (bir programlama dili ile yazılmıştır) makine diline çevirim işlemi yapar. Bu işlem esnasında önce kaynak kodu parçalara ayrılır (lexical analysis), oluşturulan parçacıklar dilin kurallarına göre parçalanır ve ast (abstract syntax tree, soyut sözdizim ağacı) oluşturulur. AST ise makine koduna dönüştürülür.

    Binder: Bunun ne olduğunu bilmiyorum fakat linkerı kastettiğinizi düşünüyorum. Linker en basit anlamda makine koduna dönüştürülen birçok parçayı uygun şekilde birleştirir ve çalıştırılabilir dosya tipine göre gerekli başlık dosyalarını üretir (exe gibi).

    Assembler: Platformun assembly dilini makine koduna çevirir.

    g++, GCC'nin (GNU Compiler Collection) C++ derleyicisini çalıştırmaya yarayan komuttur. cpp uzantılı dosyaları derler ve std C++ lib'i de öntanımlı olarak bağlayarak çalıştırılabilir dosya oluşturur (farklı şeyler de oluşturabilir tabi isterseniz).

    return deyimi, o anki işlev kapsamından çıkmaya yarar. Parametre ile yazıldığında işlev kapsamından çıkıp (yani işlevi durdurup), işlevi çağırana parametreyi döndürür. Standart int döndürebildiği gibi farklı tipteki nesneleri de döndürebilir. return ile geri döndürülecek parametre sayısı sadece 1'dir. 

    main işlevinin (evet, main de bir işlevdir, örneğin dll dosyaları main işlevini içermez) geri dönüş değeri int olduğundan (standart böyle söyler), main işlevini çağırana (işletim sistemidir genelde) programın hatalı/hatasız sonlandığını söyler. Eğer işlevin duyurusu void ise (hiçbir şey geri döndürme) sadece return ile işlev kapsamından çıkmak mümkündür, aksi halde imzaya uygun tipte bir şey geri döndürmek gerekir. main her koşulda sonlanacağı için (program duracak) açıkça yazmak gerekmez ama yazılması tavsiye edilir (C99 standardı return olmadan sanki return 0 yazılmış gibi davranılmasını söyler).


    Olaylara karışmayın!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    -Hemen hemen her örnek kod diziliminin sonunda "return 0;" içerikli bir satır var. O satırı kaldırdığımda da kodun aynen çalışmaya devam ettiğini görüyorum. return 0; nedir, niçindir?

    Çalışan bir programı exit(main()); şeklinde düşünebilirsin, burada exit fonksiyonu programın sonlandırılmasından sorumlu fonksiyondur.

    Burada main fonksiyonu return 0; ifadesi ile sonlandığında, geri dönüş değeri üretilir ve bu da exit fonksiyonuna argüman olur. Exit işlemini

    yapan fonksiyonda bunu işletim sistemine bildirir. İşletim sistemi için programın başarılı ya da başarısız olması birşey ifade etmez, yani bu exit kodunun

    işletim sistemi için bir önemi yok. Bu exit kodu, programı sen başka bir program üzerinden başlattığın zaman önem kazanır. Çağrıyı gerçekleştiren program, hata veya

    düzgün sonlanma durumlarına göre farklı senaryolar izleyebilir.

    return ifadesinin yazılmamasının bir şey değiştirmemesi ise @YeniHarman'ın da söylediği gibi standartlardan kaynaklanmaktadır. Örneğin C++ için

    A return statement in main has the effect of leaving the main function (destroying any objects with automatic
    storage duration) and calling std::exit with the return value as the argument. If control reaches the end
    of main without encountering a return statement, the effect is that of executing
    return 0;

    Bir program main sonuna bir return ifadesi ile karşılaşmadan ulaşır ise return 0; ifadesi yürütülecektir diyor.

     

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pcdoktor636
    pcdoktor636's avatar
    Kayıt Tarihi: 12/Ocak/2010
    Erkek

    Return ifadesi "exit code" olarak geçer. nirvana_gg'nin dediği gibi programı başka bir program içerisinden çağırdığında, doğru çalışıp çalışmadığını anlamak için kullanırsın.

    Örneğin programında bir if-else bloğu oluşturursun, eğer program beklenildiği işi başarıyla yaptıysa (mesela aynı dizinde "metin.txt" isimli dosyayı açmak gibi) programın "0" döndürebilir, eğer dosyayı bulamadıysa da "0" olmayan bir değer döndürebilir.

    https://stackoverflow.com/questions/1101957/are-there-any-standard-exit-status-codes-in-linux

    Örneğin buradaki listede verilmiş:

    1: Catchall for general errors
    2: Misuse of shell builtins (according to Bash documentation)
    126: Command invoked cannot execute
    127: "command not found"
    128: Invalid argument to exit
    128+n: Fatal error signal "n"
    255: Exit status out of range (exit takes only integer args in the range 0 - 255)

    Ayrıca madem linux ortamda derliyorsunuz, orada çalıştırılmış son programın hata koduna bakabilirsin.

    Komut satırı ortamında "echo $?" komutu ile (tırnaklar olmadan) o komut satırı ortamında çalıştırdığın son programın döndürdüğü hata kodunu görebilirsin.

    Edit: Bu kitabı da kesinlikle tavsiye ederim.

    http://www.bottomupcs.com/

     

     

    pcdoktor636 tarafından 09/Kas/15 20:26 tarihinde düzenlenmiştir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    noname
    noname's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

    Hepinize cevaplar için çok teşekkür ederim. Videolu/pdfli vs. her türlü kaynak tavsiyenize de açığım bu arada.

    Matematik üzerine bir şeyler yaparken p,x,y,z gibi değişkenler tanımlayıp bazı basit işlemler yaptırıyoruz. Kimi zaman

    "float x=0, y=0;"

    şeklinde tanımlarken kimi zaman ise

    "int p=0;" şeklinde giriyoruz.

    Bu int ve float ın olayı/farkı nedir? Başka çeşitleri de var mı?

     


    ...said addicted.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Marsel
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek

    hocam onlar veri türleri genelde hepsininki aynı buradan bakabilirsin hepsine


    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    temel bir kitap alırsan senin içi çok iyi olur. "Kaan Arslan" - "A'dan Z'ye C klavuzu" gibi...


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    enesshn18
    enesshn18's avatar
    Kayıt Tarihi: 15/Mayıs/2011
    Erkek
    noname bunu yazdı

    Hepinize cevaplar için çok teşekkür ederim. Videolu/pdfli vs. her türlü kaynak tavsiyenize de açığım bu arada.

    Matematik üzerine bir şeyler yaparken p,x,y,z gibi değişkenler tanımlayıp bazı basit işlemler yaptırıyoruz. Kimi zaman

    "float x=0, y=0;"

    şeklinde tanımlarken kimi zaman ise

    "int p=0;" şeklinde giriyoruz.

    Bu int ve float ın olayı/farkı nedir? Başka çeşitleri de var mı?

     

    Farkları var illa ki hocam.Bellekte kapladıkları yerler farklı en başta.Ayrıca int dediğin değer -32768 ile +32767 arasında değer alır.Senin kullanma şekline göre işine hangisi uygunsa onu kullanırsın.

    Ayrıca int tam sayı değerlerdir tutupta 8,6 gibi bi değer atamazsın atadığın anda program bunun sadece 8 olan tam kısmını görecektir ondalıklı kısmını tanımayacaktır bunları göstermek için float ya da double değişkenlerini kullanırsın.En baş işlemler için yani basit matematiksel işlemler ve yaş sorgusu filan için int diyebilirsin bunlar işini görür ama tutupta bir faktöriyel hesabı filan yaptıracaksan bunu double olarak tanımlayıp öyle işlemlerini yaptırman gerekir.Aklına takılan birşey olduğunda sorabilirsin hocam.C++ bilmiyorum ama C ve C# biliyorum.Zaten bir dili öğrendikten sonra diğerlerini öğrenmek bir ayını almıyor sadece syntax ları öğreniyorsun kütüphanelerini öğreniyorsun geri kalan kısım hep aynı oluyor.Ayrıca bunları öğrenmek için bir sürü videolu eğitim seti var hocam ben birazdan buraya bitanesini koyucam gayet güzel anlatıyor C++ dilini.Ayrıyeten bir algoritma kitabı alıp algoritma becerini geliştirmenide tavsiye ederim.Her zaman daha detaylı daha kestirme düşünme becerini ve sorunlara çözüm üretme becerini geliştiriyor.Abilerim ablalarım yanlış birşey söylediysem affola bildiklerim kadarıyla yardımcı olmak istedim :)

     

    enesshn18 tarafından 09/Kas/15 21:23 tarihinde düzenlenmiştir

    barmak bassak olurmu gadasını aldığım :D
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hsyN
    hsyN's avatar
    Kayıt Tarihi: 15/Şubat/2011
    Erkek
    noname bunu yazdı

    Hepinize cevaplar için çok teşekkür ederim. Videolu/pdfli vs. her türlü kaynak tavsiyenize de açığım bu arada.

    Matematik üzerine bir şeyler yaparken p,x,y,z gibi değişkenler tanımlayıp bazı basit işlemler yaptırıyoruz. Kimi zaman

    "float x=0, y=0;"

    şeklinde tanımlarken kimi zaman ise

    "int p=0;" şeklinde giriyoruz.

    Bu int ve float ın olayı/farkı nedir? Başka çeşitleri de var mı?

     

    http://www.tahribat.com/forum/egitim-c-dersleri-193183 bunu indirmiştim zamanında başlayamamıştım ama, işine yarar belki


    test 1 2
Toplam Hit: 7323 Toplam Mesaj: 29
c++ programlama başlangıç sorular giriş cpp