• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

Kredi Kartı Doğrulama - Luhn Algoritması

Bu makalem de Kredi ve Bank kart numaralarının doğrulamasında kullanacağımız Luhn algoritmasını inceleyip, problem çözümünü yaparak uygulama haline dönüştüreceğiz.

11.06.2012

Yazar: H. Burak Tungut (Google+)

Kategori: C#.Net

11744

 Her ne kadar 15 Yaşımda bu algoritma ile ilgili bir uygulamayı bir istek üzerine Delphi ile yazmış olsam da tekrar incelediğim de hatırlamakta zorluk çektim.
Kısaca algoritmamızın tarihçesine bakacak olursak Hans Peter Luhn ve IBM tarafından 1954 yılında geliştirilen bu algoritma aynı zaman da Luhn Check ve Mod Check olarak da geçmektedir.

Normal de bu konuyu Web Servisleri anlatırken işlemek istiyordum fakat ilerleyen zamanlarda hem webmethod hem de webservis tarafından yine bu konuya geri döneceğiz.
Öncelikle kabataslak ve bir bakışta algoritmayı bize anlatacak olan şemamıza bakalım,

Öncelikle şunu söylemeliyim ki problem çözmeye ağırlık verelim! Şimdi adım adım giderek bu problemi çözelim.

  1. İlk kuralımızın gelen sayı 16 karakter olmak zorunda.Burada hepimiz hemfikiriz.
  2. Bir değişkene indisleri çift olan sayıların iki katlarının basamak toplamlarının, toplamları aktarılmalı.
  3. Diğer bir değişkene ise indisleri tek olan sayıların toplamları aktarılmalı.
  4. Son olarak da iki değişkenin toplamının 10 a bölünüp bölünmediğini kontrol edeceğiz.

Öyleyse Visual Studio IDE'lerimizi açalım. Bu uygulama Visual Studio 2012 ile gerçekleştireceğim ilk uygulama. Onun için Intro ekranını da ekleyelim :)

Resimde ki gibi Console Application seçelim ve adını da krediKartiAlgoritmasi yapalım.

Bakın problem çözümünün faydasını görüyoruz. Uygulamaya geçmeden problem adımlarını incelediğimiz için bize verdiğimiz sayının basamaklarını toplayan bir methodun gerekli olduğunu söylemiştik.
Bu method ile gelen sayı 0 dan buyuk olma şartı ile deklare ettiğimiz toplam değişkenine sayının 10 ile modunu ekliyor ve sayıyı 10 a bölüyoruz ve return ediyoruz.

Mesela 123 sayısı için,

123 --> mod10 = 3
12 --> mod10 = 2
1 --> mod10 = 1
0,1 --> kurala uymaz ve döngü biter.

Denemek için main methodumuza şekildeki gibi kodu yazdığımız da ekrana 6 sayısını basacağını göreceğiz.

 

 Geldik asıl işi yapacak olan methodumuza.
Öncelikle method imzamıza bakacak olursak geri dönüşümüz bool olacak ve parametre olarak kartNo adında bir string alacak. Aslında String yerine string de yani primitif değişkende tanımlıyabilirsiniz.

İlk olarak kartNo'nun 16 karakterde olmaması halinde direk false geri döndürüyoruz aksi takdirde devam ediyoruz.
Problem çözümünde bahsettiğimiz gibi iki adet değişken tanımlıyoruz.
0 dan 15 e (16 adım) for döngüsü oluşturuyor ve bir adet eleman adında değişken deklare ediyoruz.

Bu değişken gelen her i değerinde kartNo'da karşılık gelen elemanı çekiyor. Örnek verecek olursak 123 için i=2 geldiğinde eleman=3 olacaktır.

Daha sonra gelen indisin çift olması halinde elemanın iki katının basamaklarının toplamını ciftIndis..... değişkenine ekliyoruz.
Tek olması halinde ise direk gelen elemanı tekIndis..... değişkenine ekliyoruz.

Geri dönüş olarak if bloğu yazmaktansa direk böyle bir karar cümlesi kullandım. Dikkat edersek iki değişkenin toplamının mod10 u nu direk return ediyoruz. Bu da zaten bizim istediğimiz karardı.

Biri doğru biri yanlış olmak üzere iki adet kredi kartı numaramızın kontrolünü yapmak için main methodumuzu resimdeki gibi düzenliyoruz.

Ekran çıktımız ise resimdeki gibi olacaktır.

Bu makale ile Kredi ve Bank kartların kontrolünü sağlayan Luhn algoritmasını tanıdık, problem çözümünü adım adım yaptık ve uygulamamızı yaptık.

H.Burak TUNGUT
Bilgisayar Mühendisliği Öğrencisi
www.buraktungut.com

Yazar Hakkında

H. Burak Tungut

H. Burak Tungut

www.buraktungut.com

Lisans eğitimini Bilgisayar Mühendisliği üzerine tamamlamış ve yüksek lisansına İstanbul’da İşletme Yönetimi üzerine devam ettirmektedir. Şu anda mesleğini kurumsal bir firmada Yazılım Mimarı olarak sürdürmekte ve irili ufaklı bir çok açık kaynaklı projeyle daha uğraşmaktadır.

Sosyal Medya

ORANLAR

  • 11744izleme

Arkadaşlarınla Paylaş

  • Tweet

2 Yorum

Mustafa Yenen

Mustafa Yenen

08.12.2015

Merhaba güzel anlatım için öncelikle teşekkürler.Bir Sorum olacaktı C# Console 'da 16 haneli bütün doğru kart numaralarının sayısını bulmak için ne yapmam gerekiyor ?

Veysel Uğur  KIZMAZ

Veysel Uğur KIZMAZ

24.06.2012

Ellerine sağlık. Yalnız kart numarası 16'dan küçük olduğunda kodda ufak değişiklikler gerekebiliyor, bilginize. :)

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120153
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65271
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48392
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ