Gönderen Konu: CPP Türkiye - Bilgilendirme  (Okunma sayısı 10613 defa)

peytuk

  • Administrator
  • Newbie
  • *
  • İleti: 17
  • Reputation: 10
  • Open Source Enthusiast [c++]
    • Profili Görüntüle
CPP Türkiye - Bilgilendirme
« : Ekim 06, 2019, 06:32:41 ÖÖ »
Advertisement
Cpp Türkiye'ye hoşgeldiniz.

Cpp Türkiye esasen:
  • Hatalı veya sorunlu kodların paylaşıp, di?er yazılımcılardan yardım alınan,
  • Programlama ile ilgili temel soruların sorulduğu,
  • Kod inceleme (code review) ile, diğer kullanıcıların fikirlerinin aldığı,
  • Topluluğa faydalı olabileceği düşünülen, kod parçası veya kaynak dosyalarının paylaşıldığı
  • Programlamaya henüz yeni başlayanların uygun kategoriler altında açılan başlıklarla fikir, ve öneri alabileceği
bir platformdur.

Aaşağıda bu sitede cevap aklınızdaki sorulara nasıl cevap arayabileceğiniz konusunda birer örnek vermeye çalıştım:



1. Hatalı veya sorunlu kod paylaşımı

Soru: Merhabalar, aşağıdaki kod n 1 veya 2 iken sürekli floating point exception hatası veriyor. Nasıl düzeltebilirim?
Kod: [Seç]
#include <iostream>
using namespace std;

int main()
{
    int kiekis = 0, sum = 0, vidurk = 0, n;
    cin >> n;

    if (n < 2) {
        cout << "NO" << endl;
    }

    else if (n == 2) {
        cout << n / 2 << endl;
    }
    else {
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 0) {
                kiekis++;
                sum += i;
            }
        }
    }
    vidurk = sum / kiekis;
    cout << vidurk << endl;

    return 0;
}

Cevap: Kodunuzun else deyimi çalışmadığı sürece kiekis değişkeniniz 0'a eşit oluyor. Bu da 0'a bölünmeden kaynaklı hataya sebep oluyor.

2. Programlama ile ilgili temel sorular

Soru: using namespace std; performans açısından kötü bir kullanım mıdır?
Cevap: Bu kullanım performans sorunlarından ziyade, karmaşaya yol açacak bir durumdur. Diyelim ki kemve küm adında iki kütüphaneniz var:
Kod: [Seç]
using namespace kem;
using namespace küm;
kem kütüphanenizdeki hık()fonksiyonunuzu ve küm kütüphanenizdeki mık() ve hayda() fonksiyonlarınızı sorunsuz bir şekilde çağırabiliyorsunuz. Lakin bir gün küm kütüphanesindeki hayda() fonksiyonunu kem kütüphanesine de ekleyecek olursanız, bir çelişkiye sebep olacaksınız. Artık hayda() fonksiyonunun iki deklarasyonu var ve hayda()'yı her çağırdığınızda hata alabilirsiniz.

Büyük projelerde bu tür durumların önüne geçmek için
Kod: [Seç]
kem::hayda();
k?m::hayda();
kullanımı tercih edilir.

3. Kod inceleme

Soru: Merhabalar, bu kod daha iyileştirilebilir mi?
Kod: [Seç]
void reshape(int w, int h)
{
  GLfloat ratio = w/h;
  glViewport( 0 , 0 ,  w , h );
  glMatrixMode( GL_PROJECTION );
  glLoadIdentity();

  glLoadIdentity();
  glOrtho(-1* ratio*scale, 1*ratio*scale, -1*scale  , 1*scale  , -viewRange,viewRange);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}
Cevap:
Merhabalar, kodunuzu optimize etmek i?in baz? de?i?kenlerinize C tipi cast uygulayabilirsiniz:
Kod: [Seç]
void reshape(int w, int h)
{
  GLfloat ratio = (GLfloat)w/(GLfloat)h;
  glViewport( 0 , 0 , (GLsizei) w , (GLsizei) h );
  glMatrixMode( GL_PROJECTION );
  glLoadIdentity();

  glLoadIdentity();
  glOrtho(-1* ratio*scale, 1*ratio*scale, -1*scale  , 1*scale  , -viewRange,viewRange);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}

4. Kod payla??m?

Merhabalar, bir süredir aşağıdaki kod üzerinde çalışıyordum. Topluluk için faydalı olabileceğini düşündüm.
Kod: [Seç]
void colorMap(float min, float max, float&r, float&g, float&b) {
  float inc = 6.0 / max;
  float x = min * inc;
  r = 0.0f; g = 0.0f; b = 0.0f;
  if ((0 <= x && x <= 1) || (5 <= x && x <= 6)) r = 1.0f;
  else if (4 <= x && x <= 5) r = x - 4;
  else if (1 <= x && x <= 2) r = 1.0f - (x - 1);
  if (1 <= x && x <= 3) g = 1.0f;
  else if (0 <= x && x <= 1) g = x - 0;
  else if (3 <= x && x <= 4) g = 1.0f - (x - 3);
  if (3 <= x && x <= 5) b = 1.0f;
  else if (2 <= x && x <= 3) b = x - 2;
  else if (5 <= x && x <= 6) b = 1.0f - (x - 5);
}

5. Fikir ve ?neri sorular?

Soru: Merhabalar, 2019 yılında siz olsan?z hangi dilde programlamaya başlardınız?



Bu bilgilere dayanarak sorular?n?z? di?er kullan?c?lara sa?l?kl? bir ?ekilde ula?t?rabilir, sa?l?kl? cevaplar alabilir ve http://cpptr.com'un derli toplu kalmas?na yard?mc? olabilirsiniz. Ayn? ?ekilde, bu d?zene uygun olmayan ba?l?k ve sorulara, bu sayfan?n linki ile cevap vererek, daha ?ok kullan?c?n?n topluluk kurallar?ndan haberdar olmas?na yard?mc? olabilirsiniz.

Bunlar harici herhangi bir sorunuz olursa bana (peytuk) ula?abilirsiniz :) Hepinize iyi forumlar.

http://cpptr.com - Cpp T?rkiye
« Son Düzenleme: Ocak 20, 2020, 09:35:25 ÖÖ Gönderen: peytuk »
Open Source Enthusiast [C++]
http://cpptr.com 'un Sahibi
http://github.com/peytuk