Forum: Ders Arası RSS
Aralıklar Üzerinde Gezinmek
Sadece basit bir örnek...
Sayfa:  1  2  sonraki 
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Aralıklar Üzerinde Gezinmek
Bugüne kadar Aralıklar üzerinde özel bir çalışma tertiplememiştim. Yani, ne lüzumu var şimdi canım, dedim kendi kendime; altı üstü belli bir sınır çerçevesinde tekrar eden elemanlar, hepsi o kadar...:)

Pekala dizilerle de yapabileceğimiz şeyler gibiydi; bu aralıklar benim içim. Ancak foreach() ile uyumlu çalışması gerçekten hoş. Beraberinde koşut işlemler (parallelization) sınıfı std.parallelism ile işbirliği yapması da ilgi çekici. Özetle basit gibi görünse de çok işe yarar olduğu tartışılmaz.

Örneğin aşağıda, tek sayılar kümesi içinde asal sayıları tarayan bir kod görülmekte. Elbette bunu iç içe basit bir döngü ile yapabilirdik. Ancak sahip olduğu esnekliği düşününce, bundan sonra aralıkların bir çok yazdığım programda eksik olmayacağını söyleyebilirim:
import std.stdio;
 
class tekSayılarKümesi(T) {
  T xSay;
  size_t asallar = 0;
  
  this (T başlangıç = 3) {
    xSay = başlangıç;
    if(başlangıç%2 == 0) xSay++;
  }
  
  bool empty() const {
    return xSay == T.max;
  }
  
  T front() const {
    return xSay;
  }
 
  void popFront() {
    xSay += 2;
  }
  
  void asal_Mı(T p) {
    bool asal = true;
    for(T n = 3; n * n <= p; n+=2) {
      if(p % n == 0) {
        asal = false;
        break;
      }
    }
    if(asal) {
      asallar++;
      if(asallar%100_000 == 0) p.write();
      //p.write("\t");
    }
    "\r".write;
  }
}
void main() {
    auto tekSayılar = new tekSayılarKümesi!uint;
    
    foreach(i; tekSayılar) tekSayılar.asal_Mı(i);
    writeln;
}
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Çok güzel! :)

Aralıkların bir yararı, elemanlarını herhangi bir Phobos algoritması ile kullanabiliyor olmamız. Ve o açıdan bakınca aslında asal_Mı()'nın bu aralığın bir işlevi değil, serbest bir işlev olması daha yararlı olur.

Çünkü o zaman asal_Mı()'yı algoritmalarla da kullanabiliriz. Böylece aralık da çok daha basitleşir: Artık tek işi tek sayılar üretmektir.

  • @property ekliyorum

  • asal_Mı()'yı dışarıya çıkartıyorum; artık bool döndürüyor

import std.stdio;
import std.algorithm;
 
class tekSayılarKümesi(T) {
    T xSay;
 
    this (T başlangıç = 3) {
        xSay = başlangıç;
        if(başlangıç%2 == 0) xSay++;
    }
 
    bool empty() const @property {
        return xSay == T.max;
    }
 
    T front() const @property {
        return xSay;
    }
 
    void popFront() {
        xSay += 2;
    }
}
 
bool asal_Mı(T)(T p) {
    bool asal = true;
    for(T n = 3; n * n <= p; n+=2) {
        if(p % n == 0) {
            asal = false;
            break;
        }
    }
 
    return asal;
}
 
void main() {
    auto tekSayılar = new tekSayılarKümesi!uint;
 
    writeln(find!asal_Mı(tekSayılar).take(10));
}

Son satırda tek sayı elemanların asal olanlarının ilk 10 tanesini elde ediyoruz.

Ali
Avatar
Salih Dinçer #3
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bu daha güzel...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #4
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Gözlerimi güneşli bir İstanbul sabahına açtığım sırada bir iki düzenleme de ben yaptım; henüz yüzümü bile yıkamamışken...:)
import std.algorithm, std.range, std.stdio;
 
class tekSayılarKümesi(T) {
  T xSay;
  size_t asallar = 0;
  
  this (T başlangıç = 1) {
    xSay = başlangıç;
    if(başlangıç%2 == 0) xSay++;
  }
  
  bool empty() const @property {
    return (xSay == T.max);
  }
  
  T front() const @property {
    return xSay;
  }
 
  void popFront() {
    xSay += 2;
  }
  
  void asalsaYaz(T p) {    // toString Benzeri
    if(asal_Mı(p)) {
      asallar++;
      //if(asallar%2 == 0) p.write();/*
      p.write("\t");//*/
    }
    //"\r".write;
  }
}
 
bool asal_Mı(T)(T p) {
    bool asal = p > 1 ? true : false;
    for(T n = 3; n * n <= p; n+=2) {
        if(p % n == 0) {
            asal = false;
            break;
        }
    }
    return asal;
}
 
void main() {
    auto tekSayılar = new tekSayılarKümesi!ubyte;
    find!asal_Mı(tekSayılar).take(10).writeln;
    
    foreach(i; tekSayılar) tekSayılar.asalsaYaz(i);
    writeln;
}/* Çıktısı:
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
23    29    31    37    41    43    47    53    59    61    67    71    73    79    83    89    97
101    103    107    109    113    127    131    137    139    149    151    157    163    167    173    179    181
191    193    197    199    211    223    227    229    233    239    241    251    
*/

void main() {
    ulong xSınır;            // Tembellik işte, insan tek yerde
    xSınır = xSınır.max-100; // tür değişimi yapmak istiyor...:)
    
    auto tekSayılar = new tekSayılarKümesi!(typeof(xSınır))(xSınır);
    
    find!asal_Mı(tekSayılar).take(10).writeln;
    foreach(i; tekSayılar) tekSayılar.asalsaYaz(i);
    
    writeln;
}
Hemen yukarıda alıntıladığım ise konudan bağımsız, tembellik mi desem yoksa iyi programcı olmanın ön şartı (iyi programcı tembel olandır) mı desem bilemiyorum (typeof ve xSınır değişkenine dikkat!). Amacım sadece türün sınırlarındaki asalları listeletmekti ama ulong sonucunu henüz alamadım. Demek ki bilgisayarlar hala çok yavaş. Tabi algoritmanın basitliği buna doğrudan etkili...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj 2 defa değişti; son değiştiren: Salih Dinçer; zaman: 2012-07-16, 23:48.
zafer #5
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
acehreli:
Aralıkların bir yararı, elemanlarını herhangi bir Phobos algoritması ile kullanabiliyor olmamız.

Ali burada tam olarak anlatmak istediğin nedir? Herhangi bir Phobos algoritmasından kasıt nedir? Bu örmekle ilişkili bir örnek vermen mümkün mü?


acehreli:
Ve o açıdan bakınca aslında asal_Mı()'nın bu aralığın bir işlevi değil, serbest bir işlev olması daha yararlı olur.

Anlamak için soruyorum, tekSayılarKümesi(T) sınıfını sadece bir aralık yapısı olarak mı görüyorsun? Yani asal_Mı() metodunu dışarı alınca sınıfın egemenliğinin dışında bırakıyorsun yanı bir çok sınıf özelliğini bu metot üzerinde kullanılamaz hale getiriyorsun. Örneğin sarma, miras alma, aşırı yükleme gibi birçok olanak devre dışı kalıyor diye düşünüyorum.

Ancak seninde belirttiğin gibi haklı sebeblerin var. Ben bunları anlamaya çalışıyorum. Yardımcı olursan tabi ;)
https://github.com/zafer06 - depo
Avatar
Salih Dinçer #6
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Son verdiğim program çıktısın da bir şey dikkatinizi çekti mi?
/* Çıktısı:
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
23    29    31    37    41    43    47... 
İlk satırda 9, 15 ve 21 asal say değil...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #7
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Tamam, şöyle olacakmış:
find!(asal_Mı)(tekSayılar.take(10)).writeln;

Ben de şuradan öğrendim:
Range find(alias pred, Range)(Range haystack);
Advances the input range haystack by calling haystack.popFront until either pred(haystack.front), or haystack.empty. Performs Ο(haystack.length) evaluations of pred. See also STL's find_if.

To find the last element of a bidirectional haystack satisfying pred, call find!(pred)(retro(haystack)). See also std.range.retro.

    Example:
    auto arr = [ 1, 2, 3, 4, 1 ];
    assert(find!("a > 2")(arr) == [ 3, 4, 1 ]);
 
    // with predicate alias
    bool pred(int x) { return x + 1 > 1.5; }
    assert(find!(pred)(arr) == arr);
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Kadir Can #8
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #6
Yine yanlış çıkıyor @Salih;
Sanırım find() ilk doğrudan sonra kontrol yapmıyor, 3 de asal olduğu için 3'ten büyük bütün tek sayıları gösteriyor.
filter() kullanırsak doğru sonucu veriyor.
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kadir Can:
Yine yanlış çıkıyor @Salih;
Sanırım find() ilk doğrudan sonra kontrol yapmıyor, 3 de asal olduğu için 3'ten büyük bütün tek sayıları gösteriyor.
filter() kullanırsak doğru sonucu veriyor.

Teşekkürler Salih ve Kadir Can: Evet, filter()'ı düşünüp find() yazmışım.

Ali
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #5
zafer:
acehreli:
Aralıkların bir yararı, elemanlarını herhangi bir Phobos algoritması ile kullanabiliyor olmamız.

Ali burada tam olarak anlatmak istediğin nedir? Herhangi bir Phobos algoritmasından kasıt nedir? Bu örmekle ilişkili bir örnek vermen mümkün mü?

Elemanlarına nasıl erişildiğini soyutlayan aralıklar yazıyoruz. Örneğin tekSayılarKümesi aralığı bir sonraki elemana +=2 işlemi ile ilerliyor. Biz bunu bilmiyoruz.

Ek olarak, aralıkların bu soyutluklarından başka hiçbir şey bilmeleri gerekmeyen algoritmalar yazabiliyoruz. Örneğin find() ve filter() yalnızca empty(), front(), ve popFront() ile yetiniyorlar.

Böylece çok sayıda algoritmayı çok sayıda topluluk türü ile kullanabiliyoruz. Örneğin Salih'in tek yaptığı InputRange aralığı arayüzünü sunmak olduğu için tekSayılarKümesi aralığı InputRange ile işleyen bütün algoritmalarla kullanılabiliyor.

acehreli:
Ve o açıdan bakınca aslında asal_Mı()'nın bu aralığın bir işlevi değil, serbest bir işlev olması daha yararlı olur.

Anlamak için soruyorum, tekSayılarKümesi(T) sınıfını sadece bir aralık yapısı olarak mı görüyorsun? Yani asal_Mı() metodunu dışarı alınca sınıfın egemenliğinin dışında bırakıyorsun

Sınıfın egemenliğinde olan işlemleri sınıfta bırakıyoruz ama. Dikkat edersen aralığın boşluğu kavramı 'xSay == T.max' işlemi ile belirli ve bir sonraki elemana geçmek için 'xSay += 2' yapılıyor.

Yani sınıf bütün üyelerine egemen. (Tabii aslında böyle küçük örneklerde private gibi erişim haklarını gözardı ediyoruz. Üyenin private olması iyi olur.)

yanı bir çok sınıf özelliğini bu metot üzerinde kullanılamaz hale getiriyorsun.

Açıklar mısın? Çünkü söylediğinin karşıtı olan bir örneği zaten yukarıda gösterdik: asal_Mı() işlevin sınıfın dışına aldığımız zaman hiçbir işlevsellik kaybetmedik.

(Aslında 'asallar' üyesinden kurtulduğumuz için artık şu sorunun yanıtını veremiyoruz: "Acaba asal_Mı() çağrıldığında kaç kere asal çıktı." Pek de yararlı bir bilgi değil çünkü o andaki asal sayının üzerinde sonsuz kere çağırabiliriz.)

Şimdi Salih'in tekrar içeride tanımladığı asalsaYaz() işlevine bakalım: Ona verdiğimiz ve bu aralıkla doğrudan ilgisi olmayan bir sayının asal olması durumunda o sayıyı standart çıkışa yazdırıyor.

Peki standart çıkışa değil de herhangi başka FILE'a yazdıran işlev gerektiğinde ne yapacağız? Bu sınıfa bir de FILE alan bir asalsaYaz() mı ekleyeceğiz? Veya asalsaVe1000ile10000ArasındaysaYaz() mı?

Görüyor musun? Algoritmaların sayısı sonsuz.

Örneğin sarma, miras alma, aşırı yükleme gibi birçok olanak devre dışı kalıyor diye düşünüyorum.

Bunu daha önce de konuştuk. Bir şeyden şüphelendiğin açık ama bize anlamamız için ek bilgi vermiyorsun. Çünkü:

  • Yukarıda değindiğimiz ve yalnızca örnek olduğu için gözardı edilmiş olan 'private'ı eklersek sarma devre dışı kalmıyor. Veya: sarmanın devre dışı kalmasında bunun bir aralık olmasının bir etkisi yok.

  • Miras alma devre dışı kalmıyor. İsteyen bu sınıftan türetebilir veya bu sınıfı başka sınıftan türetebilir. (?)

  • Aşırı yükleme devre dışı kalmıyor. Ne düşündüğünü gerçekten anlamıyorum.

Benim anladığım o. Biraz daha açıklarsan ve örnekler gösterirsen belki anlaşabileceğimiz bir nokta buluruz.

Ancak seninde belirttiğin gibi haklı sebeblerin var. Ben bunları anlamaya çalışıyorum. Yardımcı olursan tabi ;)

Bu noktada bizim senden bilgiye ihtiyacımız var. Eğer bize bir örnekle örneğin sarmanın nasıl ihlal edildiğini gösterir misin.

Ali
zafer #11
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali, bizim amacımız üzüm yemek, bağcıyı dövmek değil. Ben bilmediğim konuda soru sorarım, anlamadığım konudu soru sorarım. İsteyen cevap yazar, isteyen yazmadan geçer gider, sorun etmem. Ancak bir şeyler ima eden yazıları hiç sevmem, bir sorunu olan bunu bana direk söyleyebilir.

acehreli:
Bunu daha önce de konuştuk. Bir şeyden şüphelendiğin açık ama bize anlamamız için ek bilgi vermiyorsun.

Eğer sen hala o konuda kaldıysan vay halimize. Bir şeylerden şüphelenmiyorum ama şüphelensem bile size niye ek bilgi vereyim ne alaka ? Konu aralıklar ve sarma olayı ise bunu o konudada belirttim ben aralıkların bu yönden sorunlu olduğunu düşünüyorum. Bunuda açık bir şekilde söylüyorum. Bu benim fikrim kimseninde kabul etmesi veya onaylaması gibi bir durum olamaz elbette.

acehreli:
Miras alma devre dışı kalmıyor. İsteyen bu sınıftan türetebilir veya bu sınıfı başka sınıftan türetebilir. (?)

Sen bir sınıf içinde tanımlamadığın bir metodu o sınıftan miras alarak başka bir sınıfa geçirebiliyorsan zaten bana diyecek bir şey kalmamıştır Ali.

acehreli:
Eğer bize bir örnekle örneğin sarmanın nasıl ihlal edildiğini gösterir misin.

Bu cümleyi okuyana kadar hala sanırım benim sorumu tam anlamadı diye düşünüyordum ama bunu okuyunca anladım ki sen hala bir yerlerde takılmış kalmışsın Ali. Ben sadece bir metodu sınıf dışına çıkarınca artık o sınıfın üyesi olmaz ve sınıf üyesi olarak mevcut olan bir takım özelliklerini yitirir demiştim. Sarma ihlali ile ilgili bir metin yadığımı hiç hatırlamıyorum.

Ancak görüyorum ki, bazı şeyler düşündüğümden çok daha farklıymış. Anlaşılan farklı fikirde olmak cevaplarına kurnazca örnekler verilerek fikirlerini anlamsız kılmaya çalışmak, sorularında art niyet aranmakmış.

Son olarak Ali benimle ilgili bir sorunun varsa bunu bana e-posta ile iletebilirdin. Burada forumdaki arkadaşlarada rahatsızlık vermezdik. Bundan sonrası ancak laf yarışı olacağı için bir daha yazmayacağım. Bu mesajıda Ali'nin sorularına yanıt olması için ekliyorum. Salih'den konusunu böyle tatsız bir olayla dağıttığım içinde kendi adıma özür diliyorum.
https://github.com/zafer06 - depo
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kendimi doğru ifade edememişim. Özür dilerim.

Konu aralıklar ve sarma olayı ise bunu o konudada belirttim ben aralıkların bu yönden sorunlu olduğunu düşünüyorum.

Benim sorunum şu: "Düşünüyorum" yeterli gelmiyor ve neden öyle düşündüğünü anlamaya çalışıyorum.

Bunuda açık bir şekilde söylüyorum. Bu benim fikrim kimseninde kabul etmesi veya onaylaması gibi bir durum olamaz elbette.

Fikrine çok değer veriyorum ama neden öyle düşündüğünü anlayamıyorum.

acehreli:
Miras alma devre dışı kalmıyor. İsteyen bu sınıftan türetebilir veya bu sınıfı başka sınıftan türetebilir. (?)

Sen bir sınıf içinde tanımlamadığın bir metodu o sınıftan miras alarak başka bir sınıfa geçirebiliyorsan zaten bana diyecek bir şey kalmamıştır Ali.

Ne demek istediğini şimdi anlıyorum. Ne yazık ki hiç öyle düşünmemişim. Ben miras alma düzeneğinin kendisine takılmışım. Haklısın: asal_Mı() işlevi sanal olsa, yani alt sınıflar onun davranışını kendilerine göre değiştirebilseler o zaman sınıfın üyesi olmalı.

bir metodu sınıf dışına çıkarınca artık o sınıfın üyesi olmaz

Doğru. Ama dışarı almanın daha iyi olduğu kabul edilir. Eğer bir metodu sınıfın dışına çıkarırsak o metodu tek başına veya başka türlerle de birlikte kullanabiliriz. Ayrıca sınıf küçülmüş ve basitleşmiş de olur.

Tabii eğer o metod gerçekten o tür ile doğrudan ilgiliyse veya hız konusunda şartsa üye olması yeğlenir. Bunun bir örneği olarak bir bağlı listenin length() işlevini verebiliriz. length() işlevi olması şart değildir çünkü uzunluğunu bulmak için baştan sona doğru ilerlemek gerekir ama tabii ki yavaş kalabilir. Üye işlev olsa içerideki bir üyenin değerini döndürür ve çok hızlıdır.

Sarma ihlali ile ilgili bir metin yadığımı hiç hatırlamıyorum.

Sen "sarma, miras alma, aşırı yükleme gibi birçok olanak devre dışı kalıyor diye düşünüyorum" yazınca ben en çok sarma sözcüğüne takılmışım; kusura bakma... :/

Ali
erdem (Moderatör) #13
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben bu son mesajları okuyunca şaşırdım açıkçası  :rolleyes:

Ben Ali'yi 2003-2004 yıllarından beri haber gruplarından, çeşitli forumlarda yaptığımız sohbetlerden tanıyorum. Örneğin C Dili grubunda, ceviz.net'te şimdi kapanan fazlamesai forumlarında teknik konularda hararetli tartışmalar olurdu.

Hatta sanırım fazlamesai gibi siteler bu tartışmalardan övgüyle bahsediyorlardı  :-)

O günden bu güne Ali'nin hiç kimseye en ufak bir kırıcı sözünü bilmiyorum. Hatta benim gibi kafasız bir adamın sonu gelmez, bitmek tükenmez soruları karşısında aynı konuyu tekrar tekrar anlattı. Herkes bilgisini saklayıp, Türkçe forumlara girmeye tenezzül bile etmezken, Ali C++ ile ilgili sorulara her biri ders niteliğinde cevaplar yazdı.

Konuyla ilgili mesajları okuduğumda da gayet teknik konular konuşulduğunu görüyorum.

O yüzden Zafercim son mesajları yanlış yorumlamış olabilirmisin acaba :huh:
Avatar
Salih Dinçer #14
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ne zaman aralıkları bırakıp eşikler (tolerance) üzerinde gezinmeye başladık anlam veremedim...

Bunu şu yüzden söyledim; Ali'nin sözlerinde bir şeyi taşıracak bir imaya rastlamadığım halde Zafer niye böyle düşündü acaba? Bence her hafta bir kerede olsa başımıza gelen kötü günümüzde olma hadisesidir. Yani töleransın bu kadar aşağıda olma meselesi olmalı. Yoksa ben zannetmiyorum ki böyle bir gerilim olsun...

Zafer yazılanları tekrar okursa imadan çok mantık-veri ilişkisi dolu cümlelerle karşılaşacak. Ha keza Ali hocam yanlış anlaşılma ihtimalinden dolayı özür dilemiş ki biz onun küçükleri olarak bilmem ki kızılcak bir şey yok bea Zafer...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yazışmanın azizliği. :)

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  sonraki 
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 19:45:19 (UTC -08:00)