Javascript Dersleri

Javascript İle Rastgele TC No Üretme

Bu dersimizde javascript ile rastgele TC kimlik numarasının nasıl üretileceğinden bahsedeceğim. Daha öncesinde javascript ile TC kimlik numarasının nasıl doğrulandığını incelemiştik. İncelemede bulunduğumuz makaleye “Javascript İle TC No Uygunluk Kontrolüismiyle ulaşabilirsiniz.

Bildiğiniz gibi TC kimlik numarası, rastgele sayıların girilmesiyle doğrulanacak bir değer değildir. İçerisinde bir algoritma yer almakta ve ona göre sayı değerleri üretilmektedir. Bu dersimizde de TC kimlik numarasının algoritması kullanarak rastgele değerler üreteceğiz. Bu değerleri eğitim amaçlı ürettiğimizi de unutmayınız.

TC Kimlik Numarasının Matematiği

Kısa bir açıklama ile TC Kimlik numarasının nasıl oluştuğuna ve algoritmasına ulaşabilirsiniz. Aşağıda da bununla iligli minlik bir bilgi almakadır.

  • C kimlik numaralarımızın 1. 3. 5. 7. ve 9. hanelerinin toplamının 7 katından, 2. 4. 6. ve 8. hanelerinin toplamı çıkartıldığında, elde edilen sonucun 10’a bölümünden kalan, yani mod10’u bize 10. haneyi verir.
  • 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10’a bölümünden kalan, yani mod10’u bize 11. haneyi verir.

Yukarıda yer alan hesaplama bilgileri doğrultusunda hesaplama yaparak rastgele TC Kimlik numarası üreteceğiz. Bu işlemi bir çok şekilde gerçekleştirebilirsiniz. Ben kendimce uygun olan bir yolla size göstermeye çalışacağım.

İlk olarak rastgele sayı üreteceğimiz fonksiyonu oluşturalım. Bu fonksiyon ile başlangıç ve bitiş değerleri ile belirlenen aralıklarda değer üretmesini sağlayalım.

function rastgeleSayi(min, max) {
   return Math.floor(Math.random() * (max - min + 1)) + min;
}

Yukarıda yer alan fonksiyon ile belirlenen değerler arasında bir matematikle rakam üretmiş olacağız. Asıl TC numarasını bu yapı oluşturmasa aslında oldukça önemli bir görevdedir.

function TCNoUret(divAdi) {
   var rakam   = [];
   var tcNo    = "";
   // ilk basamağı oluşturuyoruz. 0 olamayacağı için 1-9 arası alıyoruz.
   rakam[0]    = rastgeleSayi(1,9);
   // Diğer değerleri oluşuruyoruz. 2 ve 9 arası
   // diğer haneler için matematik işleteceğiz.
   for(i = 1; i < 9; i++) {
      rakam[i] = rastgeleSayi(0,9);
   }
   // son basamakları matematiksel işleme tabi tutuyoruz.
   rakam[9]   = ((rakam[0] + rakam[2] + rakam[4] + rakam[6] + rakam[8]) * 7 - (rakam[1] + rakam[3] + rakam[5] + rakam[7])) % 10;
   rakam[10]  = (rakam[0] + rakam[1] + rakam[2] + rakam[3] + rakam[4] + rakam[5] + rakam[6] + rakam[7] + rakam[8] + rakam[9]) % 10;
   // oluşturulan tek tek değerleri toparlıyoruz.
   tcNo =   rakam[0].toString() +
            rakam[1].toString() +
            rakam[2].toString() +
            rakam[3].toString() + 
            rakam[4].toString() +
            rakam[5].toString() +
            rakam[6].toString() +
            rakam[7].toString() + 
            rakam[8].toString() +
            rakam[9].toString() +
            rakam[10].toString();
   // veee değeri yazdırıyoruz.
   document.getElementById(divAdi).innerHTML = tcNo;
}

Yukarıda rastgele TC kimlik numarası oluşturması için gerekli olan fonksiyon yer almaktadır. Bu fonksiyonda üretilen rastgele değerler ardı ardına eklenerek TC kimlik numarasını oluşturmaktadır. Burada ilk hane 1-9 arası olacak şeklinde ayarlanmıştır. İkinci haneden dokuzuncu haneye kadar rastgele değer alıyoruz. Son onuncu ve onbirinci değer içinde matematiksel işlemi gerçekleştirerek rastgele üretilen değerleri doğrulayacak rakamlar elde ediyoruz. Son olarakta oluşturulan değerleri innerHTML ile belirlenen ID’ye yazdırıyoruz.

Bu fonksiyonu çalıştırmak içinde bir adet buton ve sonucun yazdırılacağı DIV etiketini oluşturuyoruz.

<button onclick="TCNoUret('sonuc')">ÜRET</button>
<div id="sonuc"></div>

Yukarıdaki işlemi de gerçekleştirince işlemi tamamlamış oluyoruz. ÜRET butonuna tıklatıp rastgele TC kimlik numarası üretebilirsiniz. Bu işlemlerin bitmiş tam haline de aşağıdan ulaşabilirsiniz.

<button onclick="TCNoUret('sonuc')">ÜRET</button>
<div id="sonuc"></div>

<script type="text/javascript">
function rastgeleSayi(min, max) {
   return Math.floor(Math.random() * (max - min + 1)) + min;
}
function TCNoUret(divAdi) {
   var rakam   = [];
   var tcNo    = "";
   // ilk basamağı oluşturuyoruz. 0 olamayacağı için 1-9 arası alıyoruz.
   rakam[0]    = rastgeleSayi(1,9);
   // Diğer değerleri oluşuruyoruz. 2 ve 9 arası
   // diğer haneler için matematik işleteceğiz.
   for(i = 1; i < 9; i++) {
      rakam[i] = rastgeleSayi(0,9);
   }
   // son basamakları matematiksel işleme tabi tutuyoruz.
   rakam[9]   = ((rakam[0] + rakam[2] + rakam[4] + rakam[6] + rakam[8]) * 7 - (rakam[1] + rakam[3] + rakam[5] + rakam[7])) % 10;
   rakam[10]  = (rakam[0] + rakam[1] + rakam[2] + rakam[3] + rakam[4] + rakam[5] + rakam[6] + rakam[7] + rakam[8] + rakam[9]) % 10;
   // oluşturulan tek tek değerleri toparlıyoruz.
   tcNo =   rakam[0].toString() +
            rakam[1].toString() +
            rakam[2].toString() +
            rakam[3].toString() + 
            rakam[4].toString() +
            rakam[5].toString() +
            rakam[6].toString() +
            rakam[7].toString() + 
            rakam[8].toString() +
            rakam[9].toString() +
            rakam[10].toString();
   // veee değeri yazdırıyoruz.
   document.getElementById(divAdi).innerHTML = tcNo;
}
</script>

Yukarıdaki kodları bir HTML dosyasına yazarak sonuç alabilirsiniz. Unutmayınız ki bu tür işlemler sadece eğitim amaçlıdır. Mantığın anlaşılması için kod yapısını biraz uzatmış olabilirim. Balık vermek yerine tutmayı sevdiğimden uzun uzun göstermek istedim.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir