c++ için istizha tarzı site

Başlatan furyzer0, 27 Ekim 2016 - 20:19:37

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

furyzer0

C++ dili için istizha gibi, güncel ve açıklayıcı bir site arıyorum. Türkçe tercihdir ama ingilizce de olabilir. Bildiğiniz varsa lütfen söyleyin.

Erdem

Türkçe C++ sitesi bilmiyorum. D için var ama  ;)

C++ için size Accelerated C++ kitabını tavsiye edebilirim.

ekremsenturk


Erdem

Ben C++'yi C gibi öğretmeye çalışan kaynaklardan öğrenmenizi tavsiye etmiyorum. Nedenine gelince gerçekten C++ öğrenmeye başlayınca unutmanız gereken şeyler öğrenebilirsiniz, ya da hatalı programlama teknikleri öğrenmiş olursunuz.

Örneğin yukarıdaki kaynaklardan bir örnek vereyim:

#include <iostream>
using namespace std;
int basari;
char harfnot;
main(){
cout << "Basari notunu giriniz: ";
cin >> basari;
if(basari>=90)
harfnot = 'A';
else if (basari>=80)
harfnot = 'B';
else if (basari >=70)
harfnot = 'C';
else if (basari >=60)
harfnot = 'D';
else
harfnot ='F';
cout << "Ogrencinin Harf Notu: " << harfnot
<< endl; }


Bir tane de gerçek dünya uygulamalarından bir tanesini göstereyim. Accelerated C++'den bir örnek. Daha ilk baştan standart kütüphanenin olanaklarının ve topluluklarının kullanıldığını görebilirsiniz.

#include <iomanip>
#include <ios>
#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
#include <algorithm>
#include <istream>

using std::cin;     using std::setprecision;    using std::vector;          using std::istream;
using std::cout;    using std::string;          using std::domain_error;
using std::endl;    using std::streamsize;      using std::sort;

double ortanca(vector<double> sayilar)
{
    typedef vector<double>::size_type Adet;
    Adet sayiAdedi = sayilar.size();
    if (sayiAdedi == 0)
        throw domain_error("Boş bir vektörün ortanca elemanı bulunumaz");
    sort(sayilar.begin(), sayilar.end());
    Adet ortadaki = sayiAdedi / 2;
    return sayiAdedi % 2 == 0 ? (sayilar[ortadaki] + sayilar[ortadaki - 1]) / 2
        : sayilar[ortadaki];
}

double notHesapla(double araSinav, double yilSonu, double odev)
{
    return 0.2 * araSinav + 0.4 * yilSonu + 0.4 * odev;
}

double notHesapla(double araSinav, double yilSonu, const vector<double> & odevler)
{
    if (odevler.size() == 0)
        throw domain_error("öğrenci ödev yapmamış");
    return notHesapla(araSinav, yilSonu, ortanca(odevler));
}

istream & odevOku(istream & giris, vector<double> & odevler)
{
    if (giris)
    {
        odevler.clear();

        double odev;

        while (giris >> odev)
            odevler.push_back(odev);
        giris.clear();
    }
    return giris;
}

int main()
{
    cout << "Lütfen isminizi giriniz: ";
    string isim;
    getline(cin, isim);
    cout << "Merhaba, " << isim << "!" << endl;

    cout << "Lütfen ara sınav ve yıl sonu notlarınızı giriniz: ";
    double araSinav, yilSonu;
    cin >> araSinav >> yilSonu;

    cout << "Ödev notlarınızı giriniz, girişi sonlandırmak için\n"
        "Linux'ta Ctrl-D tuşuna basınız: ";

    vector<double> odevler;
    odevOku(cin, odevler);

    try
    {
        double bitirmeNotu = notHesapla(araSinav, yilSonu, odevler);
        streamsize basamak = cout.precision();
        cout << "Geçme notunuz " << setprecision(3)
             << bitirmeNotu << setprecision(basamak) << endl;
    }
    catch (domain_error)
    {
        cout << endl << "Notlarınızı girmelisiniz. "
            "Lütfen tekrar deneyiniz" << endl;
        return 1;
    }

    return 0;
}


Çizgi Tagem'in eğitimi nasıldır bilmiyorum. Ama Ali beyin yazılarını okumanızı tavsiye ederim. Kendisi her ne kadar D'ye yönelmiş olsa da C++ ustalarından biridir ;)

FireSwords

Maalesef hiçbir dil için istihza kadar kaliteli Türkçe belge yok.

lnxdev

İngilizce olarak bildiğim "thenewboston" var. Baya iyidir hatta diğer eğitim vidyolarıda bayağı sağlamdır bir göz atmanızı tavsiye ederim.
thenewboston