Rakkoc.Com Recep Akkoç / Rakkocun Yazıtları

31Oca/160

Windows Form Uygulamasında Konsol açma

Merhaba Arkadaşlar,

Windows uygulaması içinde konsol açmak için bir örneği paylaşmak istedim. Tabi birazda dökümante olsunda gerektiğinde buradan bakarım mantığında paylaşıyorum.

using System;  
using System.Windows.Forms;  
using System.Text;  
using System.IO;  
using System.Runtime.InteropServices;  
using Microsoft.Win32.SafeHandles;  
 
namespace WindowsApplication  
{  
    static class Program  
    {  
        [DllImport("kernel32.dll",  
            EntryPoint = "GetStdHandle",  
            SetLastError = true,  
            CharSet = CharSet.Auto,  
            CallingConvention = CallingConvention.StdCall)]  
        private static extern IntPtr GetStdHandle(int nStdHandle);  
        [DllImport("kernel32.dll",  
            EntryPoint = "AllocConsole",  
            SetLastError = true,  
            CharSet = CharSet.Auto,  
            CallingConvention = CallingConvention.StdCall)]  
        private static extern int AllocConsole();  
        private const int STD_OUTPUT_HANDLE = -11;  
        private const int MY_CODE_PAGE = 437;  
 
        static void Main(string[] args)  
        {  
            Console.WriteLine("This text you can see in debug output window.");  
              
            AllocConsole();  
            IntPtr stdHandle=GetStdHandle(STD_OUTPUT_HANDLE);  
            SafeFileHandle safeFileHandle = new SafeFileHandle(stdHandle, true);  
            FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write);  
            Encoding encoding = System.Text.Encoding.GetEncoding(MY_CODE_PAGE);  
            StreamWriter standardOutput = new StreamWriter(fileStream, encoding);  
            standardOutput.AutoFlush = true;  
            Console.SetOut(standardOutput);  
 
            Console.WriteLine("This text you can see in console window.");  
 
            MessageBox.Show("Now I'm happy!");  
        }  
    }  
} 

AllocConsole fonksionu tekbaşınada konsolu açıyor, Fakat daha önceden Console.Write gibi bir konsol işlemi yaptırdı iseniz yeni acılacak konsol ekranı sadece siyah ekrandan ibaret bir pencere olacaktır. Aktif uygulamayı handle (tutamaç) edip. bu handle'den bir stream (akış) oluşturup bu stream den bir stream writer (yazıcı akışkan) oluşturup mevcut thread'e basarsak yeni ekelenecek console metinleri direk siyah ekranımıza düşecektir.

iyi çalışmalar dilerim.

 

Windows form da bir örnek de yapayım; Aşağıdaki örnette Timer1 1 saniyede bir ekrana saat tarih basmakta. Button3'e basıldığında Console ekranı gelecek ve saat tarih ekrana yazılmaya başlayacaktır. Bütün işlem button3'un onclick fonksiyonun icindeki adımlar.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Win32.SafeHandles;

namespace MifareHidEmilator
{
    public partial class frmMainForm : Form
    {

        [DllImport("kernel32.dll",
    EntryPoint = "GetStdHandle",
    SetLastError = true,
    CharSet = CharSet.Auto,
    CallingConvention = CallingConvention.StdCall)]
        private static extern IntPtr GetStdHandle(int nStdHandle);
        [DllImport("kernel32.dll",
            EntryPoint = "AllocConsole",
            SetLastError = true,
            CharSet = CharSet.Auto,
            CallingConvention = CallingConvention.StdCall)]
        private static extern int AllocConsole();
        private const int STD_OUTPUT_HANDLE = -11;
        private const int MY_CODE_PAGE = 437;  

        
        public frmMainForm()
        {
            InitializeComponent();
            //this.Hide();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            AllocConsole();

            IntPtr stdHandle = GetStdHandle(STD_OUTPUT_HANDLE);
            SafeFileHandle safeFileHandle = new SafeFileHandle(stdHandle, true);
            FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write);
            Encoding encoding = System.Text.Encoding.GetEncoding(MY_CODE_PAGE);
            StreamWriter standardOutput = new StreamWriter(fileStream, encoding);
            standardOutput.AutoFlush = true;
            Console.SetOut(standardOutput);  
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Console.WriteLine(DateTime.Now);
        }

        private void frmMainForm_Load(object sender, EventArgs e)
        {

        }
    }
}
15Ara/140

Excel’de kullanılan Bazı Fonksiyonların Türkçe İngilizce Karşılıkları

Excel’de kullanılan Bazı Fonksiyonların Türkçe İngilizce Karşılıkları

Kendi şirketim olan yoroca'ın müşterilerine rapor çıktısı alırken kullanmak zorda kaldığım excel'de ingilizce türkçe formul sorunu yaşamakta idim. Araştırdım ve aşağıdakileri buldum. Buraya not düşeyim ilerde burdan ararım.

TÜRKÇE İNGİLİZCE KATEGORİ AÇIKLAMA
ADRES ADDRESS Arama & Başvuru Bir başvuruyu, çalışma sayfasındaki tek bir hücreye metin   olarak verir
AMORDEGRC AMORDEGRC Finansal Yıpranma katsayısı kullanarak her hesap döneminin değer   kaybını verir
AMORLINC AMORLINC Finansal Her hesap dönemi içindeki yıpranmayı verir
VE AND Mantıksal Bütün bağımsız değişkenleri DOĞRU ise, DOĞRU verir
ALANSAY AREAS Arama & Başvuru Bir başvurudaki alan sayısını verir
ASC ASC Metin & Veri Bir karakter dizesindeki çift enli (iki bayt) İngilizce   harfleri veya katakana’yı yarım enli (tek bayt) karakterlerle değiştirir.
ASİN ASIN Math & Trigonometri Bir sayının ark sinüsünü verir
ASİNH ASINH Math & Trigonometri Bir sayının ters hiperbolik sinüsünü verir
ATAN ATAN Math & Trigonometri Bir sayının ark tanjantını verir
ATAN2 ATAN2 Math & Trigonometri Ark tanjantı, x- ve y- koordinatlarından verir
ATANH ATANH Math & Trigonometri Bir sayının ters hiperbolik tanjantını verir
ORTSAP AVEDEV İstatistik Veri noktalarının mutlak sapmalarının ortalamasını verir
ORTALAMA AVERAGE İstatistik Bağımsız değişkenlerinin ortalamasını verir
ORTALAMAA AVERAGEA İstatistik Bağımsız değişkenlerinin, sayılar, metin ve mantıksal   değerleri içermek üzere ortalamasını verir
BAHTTEXT BAHTTEXT Metin & Veri Sayıyı, ß (baht) para birimi biçimini kullanarak metne   dönüştürür
BESSELI BESSELI Mühendislik Değiştirilmiş Bessel işlevi In(x)’i verir.
BESSELJ BESSELJ Mühendislik Bessel işlevi Jn(x)’i verir.
BESSELK BESSELK Mühendislik Değiştirilmiş Bessel işlevi Kn(x)’i verir
BESSELY BESSELY Mühendislik Bessel işlevi Yn(x)’i verir.
BETADAĞ BETADIST İstatistik Birikimli beta olasılık yoğunluğu işlevini verir
BETATERS BETAINV İstatistik Birikimli beta olasılık yoğunluğunun tersini verir
BIN2DEC BIN2DEC Mühendislik İkili bir sayıyı, ondalık sayıya dönüştürür
BIN2HEX BIN2HEX Mühendislik İkili bir sayıyı, onaltılıya dönüştürür
BIN2OCT BIN2OCT Mühendislik İkili bir sayıyı, sekizliye dönüştürür
BİNOMDAĞ BINOMDIST İstatistik Tek terim binom dağılımı olasılığını verir
TAVANAYUVARLA CEILING Math & Trigonometri Bir sayıyı, en yakın tamsayıya ya da en yakın katına yuvarlar
HÜCRE CELL Bilgi Bir hücrenin biçimlendirmesi, konumu ya da içeriği hakkında   bilgi verir
KARAKTER CHAR Metin & Veri Kod sayısıyla belirtilen karakteri verir
KİKAREDAĞ CHIDIST İstatistik Kikare dağılımın tek kuyruklu olasılığını verir
KİKARETERS CHIINV İstatistik Kikare dağılımın tek kuyruklu olasılığının tersini verir
KİKARETEST CHITEST İstatistik Bağımsızlık sınamalarını verir
ELEMAN CHOOSE Arama & Başvuru Değerler listesinden bir değer seçer
TEMİZ CLEAN Metin & Veri Metindeki bütün yazdırılamaz karakterleri kaldırır
KOD CODE Metin & Veri Bir metin dizesindeki ilk karakter için sayısal bir kod verir
SÜTUN COLUMN Arama & Başvuru Bir başvurunun sütun sayısını verir
SÜTUNSAY COLUMNS Arama & Başvuru Bir başvurudaki sütunların sayısını verir
KOMBİNASYON COMBIN Math & Trigonometri Verilen sayıda öğenin kombinasyon sayısını verir
KARMAŞIK COMPLEX Mühendislik Gerçek ve sanal katsayıları, karmaşık sayıya dönüştürür
BİRLEŞTİR CONCATENATE Metin & Veri Pek çok metin öğesini bir metin öğesi olarak birleştirir
GÜVENİRLİK CONFIDENCE İstatistik Bir popülasyon ortalaması için güvenirlik aralığını verir
ÇEVİR CONVERT Mühendislik Bir sayıyı, bir ölçüm sisteminden bir başka ölçüm sistemine   dönüştürür
KORELASYON CORREL İstatistik İki veri kümesi arasındaki bağlantı katsayısını verir
COS COS Math & Trigonometri Bir sayının kosinüsünü verir
COSH COSH Math & Trigonometri Bir sayının hiperbolik kosinüsünü verir
BAĞ_DEĞ_SAY COUNT İstatistik Bağımsız değişkenler listesinde kaç tane sayı bulunduğunu   sayar
BAĞ_DEĞ_DOLU_SAY COUNTA İstatistik Bağımsız değişkenler listesinde kaç tane değer bulunduğunu   sayar
BOŞLUKSAY COUNTBLANK İstatistik Bir aralık içindeki boş hücreleri sayar
EĞERSAY COUNTIF İstatistik Bir aralık içindeki, belli bir ölçütü karşılayan, boş olmayan   hücreleri sayar
KUPONGÜNBD COUPDAYBS Finansal Kupon süresinin başlangıcından alış tarihine kadar olan   süredeki gün sayısını verir
KUPONGÜN COUPDAYS Finansal Kupon süresindeki, gün sayısını, alış tarihini de içermek   üzere, verir
KUPONGÜNDSK COUPDAYSNC Finansal Alış tarihinden bir sonraki kupon tarihine kadar olan gün   sayısını verir
KUPONGÜNSKT COUPNCD Finansal Alış tarihinden bir sonraki kupon tarihini verir
KUPONSAYI COUPNUM Finansal Alış tarihiyle vade tarihi arasında ödenecek kuponların   sayısını verir
KUPONGÜNÖKT COUPPCD Finansal Alış tarihinden bir önceki kupon tarihini verir
KOVARYANS COVAR İstatistik Eşleştirilmiş sapmaların ortalaması olan, kovaryansı verir
KRİTİKBİNOM CRITBINOM İstatistik Birikimli binom dağılımının bir ölçüt değerinden küçük veya   ölçüt değerine eşit olduğu en küçük değeri verir
TOPÖDENENFAİZ CUMIPMT Finansal İki dönem arasında ödenen kümülatif faizi verir
TOPANAPARA CUMPRINC Finansal İki dönem arasında bir borç üzerine ödenen birikimli temeli   verir
TARİH DATE Tarih & Saat Belirli bir tarihin seri numarasını verir
TARİHSAYISI DATEVALUE Tarih & Saat Metin biçimindeki bir tarihi seri numarasına dönüştürür
VSEÇORT DAVERAGE Veri Tabanı Seçili veritabanı girişlerinin ortalamasını verir
GÜN DAY Tarih & Saat Seri numarasını, ayın bir gününe dönüştürür
GÜN360 DAYS360 Tarih & Saat İki tarih arasındaki gün sayısını, 360 günlük yılı esas alarak   hesaplar
AZALANBAKİYE DB Finansal Bir malın belirtilen bir süre içindeki yıpranmasını, sabit   azalan bakiye yöntemini kullanarak verir
VSEÇSAY DCOUNT Veri Tabanı Bir veritabanında sayı içeren hücreleri sayar
VSEÇSAYDOLU DCOUNTA Veri Tabanı Bir veritabanındaki boş olmayan hücreleri sayar
ÇİFTAZALANBAKİYE DDB Finansal Bir malın belirtilen bir süre içindeki yıpranmasını, çift   azalan bakiye yöntemi ya da sizin belirttiğiniz başka bir yöntemi kullanarak   verir
DEC2BIN DEC2BIN Mühendislik Ondalık bir sayıyı, ikiliye dönüştürür
DEC2HEX DEC2HEX Mühendislik Ondalık bir sayıyı, onaltılıya dönüştürür
DEC2OCT DEC2OCT Mühendislik Ondalık bir sayıyı sekizliğe dönüştürür
DERECE DEGREES Math & Trigonometri Radyanları dereceye dönüştürür
DELTA DELTA Mühendislik İki değerin eşit olup olmadığını sınar
SAPKARE DEVSQ İstatistik Sapmaların karelerinin toplamını verir
VAL DGET Veri Tabanı Bir veritabanından, belirtilen ölçütlerle eşleşen tek bir   rapor çıkarır
İNDİRİM DISC Finansal Bir tahvilin indirim oranını verir
VSEÇMAK DMAX Veri Tabanı Seçili veritabanı girişlerinin en yüksek değerini verir
VSEÇMİN DMIN Veri Tabanı Seçili veritabanı girişlerinin en düşük değerini verir
LİRA DOLLAR Metin & Veri Bir sayıyı TL (türk lirası) para birimi biçimini kullanarak   metne dönüştürür.
LİRAON DOLLARDE Finansal Kesir olarak tanımlanmış lira fiyatını, ondalık sayı olarak   tanımlanmış lira fiyatına dönüştürür
LİRAKES DOLLARFR Finansal Ondalık sayı olarak tanımlanmış lira fiyatını, kesir olarak   tanımlanmış lira fiyatına dönüştürür
VSEÇÇARP DPRODUCT Veri Tabanı Kayıtların belli bir alanında bulunan, bir veritabanındaki   ölçütlerle eşleşen değerleri çarpar
VSEÇSTDSAPMA DSTDEV Veri Tabanı Seçili veritabanı girişlerinden oluşan bir örneğe dayanarak,   standart sapmayı tahmin eder
VSEÇSTDSAPMAS DSTDEVP Veri Tabanı Standart sapmayı, seçili veritabanı girişlerinin tüm   popülasyonunu esas alarak hesaplar
VSEÇTOPLA DSUM Veri Tabanı Kayıtların alan sütununda bulunan, ölçütle eşleşen sayıları   toplar
SÜRE DURATION Finansal Belli aralıklarla faiz ödemesi yapan bir tahvilin yıllık   süresini verir
VSEÇVAR DVAR Veri Tabanı Seçili veritabanı girişlerinden oluşan bir örneği esas alarak   farkı tahmin eder
VSEÇVARS DVARP Veri Tabanı Seçili veritabanı girişlerinin tüm popülasyonunu esas alarak   farkı hesaplar
SERİTARİH EDATE Tarih & Saat Başlangıç tarihinden itibaren, belirtilen sayıda ay önce veya   sonraki tarihin seri numarasını verir
ETKİN EFFECT Finansal Efektif yıllık faiz oranını verir
SERİAY EOMONTH Tarih & Saat Belirtilen sayıda ay önce veya sonraki ayın son gününün seri   numarasını verir
HATAİŞLEV ERF Mühendislik Hata işlevini verir
TÜMHATAİŞLEV ERFC Mühendislik Tümleyici hata işlevini verir
HATA.TİPİ ERROR.TYPE Bilgi Bir hata türüne ilişkin sayıları verir
ÇİFT EVEN Math & Trigonometri Bir sayıyı, en yakın daha büyük çift tamsayıya yuvarlar
ÖZDEŞ EXACT Metin & Veri İki metin değerinin özdeş olup olmadığını anlamak için,   değerleri denetler
ÜS EXP Math & Trigonometri e’yi, verilen bir sayının üssüne yükseltilmiş olarak verir
ÜSTELDAĞ EXPONDIST İstatistik Üstel dağılımı verir
ÇARPINIM FACT Math & Trigonometri Bir sayının faktörünü verir
ÇİFTFAKTÖR FACTDOUBLE Math & Trigonometri Bir sayının çift çarpınımını verir
YANLIŞ FALSE Mantıksal YANLIŞ mantıksal değerini verir
FDAĞ FDIST İstatistik F olasılık dağılımını verir
BUL FIND Metin & Veri Bir metin değerini, bir başkasının içinde bulur (büyük küçük   harf duyarlıdır)
FTERS FINV İstatistik F olasılık dağılımının tersini verir
FISHER FISHER İstatistik Fisher dönüşümünü verir
FISHERTERS FISHERINV İstatistik Fisher dönüşümünün tersini verir
SAYIDÜZENLE FIXED Metin & Veri Bir sayıyı, sabit sayıda ondalıkla, metin olarak biçimlendirir
TABANAYUVARLA FLOOR Math & Trigonometri Bir sayıyı, kendinden küçük bir sayıya, sıfıra yakınsayarak   yuvarlar
TAHMİN FORECAST İstatistik Bir doğrusal eğilim boyunca bir değer verir
SIKLIK FREQUENCY İstatistik Bir sıklık dağılımını, dikey bir dizi olarak verir
FTEST FTEST İstatistik Bir F-test’in sonucunu verir
GD FV Finansal Bir yatırımın gelecekteki değerini verir
GDPROGRAM FVSCHEDULE Finansal Bir seri birleşik faiz oranı uyguladıktan sonra, bir   başlangıçtaki anaparanın gelecekteki değerini verir
GAMADAĞ GAMMADIST İstatistik Gama dağılımını verir
GAMATERS GAMMAINV İstatistik Gama birikimli dağılımının tersini verir
GAMALN GAMMALN İstatistik Gama işlevinin doğal logaritmasını, Γ(x) verir
OBEB GCD Math & Trigonometri En büyük ortak böleni verir
GEOORT GEOMEAN İstatistik Geometrik ortayı verir
BESINIR GESTEP Mühendislik Bir sayının eşik değerinden büyük olup olmadığını sınar
ÖZETVERİAL GETPIVOTDATA Veri Tabanı Bir Özet Tablo’da saklanan verileri verir
BÜYÜME GROWTH İstatistik Üstel bir eğilim boyunca değerler verir
HARORT HARMEAN İstatistik Harmonik ortayı verir
HEX2BIN HEX2BIN Mühendislik Onaltılı bir sayıyı ikiliye dönüştürür
HEX2DEC HEX2DEC Mühendislik Onaltılı bir sayıyı ondalığa dönüştürür
HEX2OCT HEX2OCT Mühendislik Onaltılı bir sayıyı sekizliğe dönüştürür
YATAYARA HLOOKUP Arama & Başvuru Bir dizinin en üst satırına bakar ve belirtilen hücrenin   değerini verir
SAAT HOUR Tarih & Saat Bir seri numarasını saate dönüştürür
KÖPRÜ HYPERLINK Arama & Başvuru Bir ağ sunucusunda, bir intranette ya da Internet’te depolanan   bir belgeyi açan bir kısayol ya da atlama oluşturur
HİPERGEOMDAĞ HYPGEOMDIST İstatistik Hipergeometrik dağılımı verir
EĞER IF Mantıksal Gerçekleştirilecek bir mantıksal sınama belirtir
SANMUTLAK IMABS Mühendislik Karmaşık bir sayının mutlak değerini (modül) verir
SANAL IMAGINARY Mühendislik Karmaşık bir sayının sanal katsayısını verir
SANBAĞ_DEĞİŞKEN IMARGUMENT Mühendislik Radyanlarla belirtilen bir açı olan teta bağımsız değişkenini   verir
SANEŞLENEK IMCONJUGATE Mühendislik Karmaşık bir sayının karmaşık eşleniğini verir
SANCOS IMCOS Mühendislik Karmaşık bir sayının kosinüsünü verir
SANBÖL IMDIV Mühendislik İki karmaşık sayının bölümünü verir
SANÜS IMEXP Mühendislik Karmaşık bir sayının üssünü verir
SANLN IMLN Mühendislik Karmaşık bir sayının doğal logaritmasını verir
SANLOG10 IMLOG10 Mühendislik Karmaşık bir sayının, 10 tabanında logaritmasını verir
SANLOG2 IMLOG2 Mühendislik Karmaşık bir sayının 2 tabanında logaritmasını verir
SANÜSSÜ IMPOWER Mühendislik Karmaşık bir sayıyı, bir tamsayı üssüne yükseltilmiş olarak   verir
SANÇARP IMPRODUCT Mühendislik İki karmaşık sayının çarpımını verir
SANGERÇEK IMREAL Mühendislik Karmaşık bir sayının, gerçek katsayısını verir
SANSIN IMSIN Mühendislik Karmaşık bir sayının sinüsünü verir
                                                                                  Bitmap

SANKAREKÖK
IMSQRT Mühendislik Karmaşık bir sayının karekökünü verir
SANÇIKAR IMSUB Mühendislik İki karmaşık sayının farkını verir
SANTOPLA IMSUM Mühendislik Karmaşık sayıların toplamını verir
İNDİS INDEX Arama & Başvuru Başvurudan veya diziden bir değer seçmek için, bir dizin   kullanır
DOLAYLI INDIRECT Arama & Başvuru Metin değeriyle belirtilen bir başvuru verir
BİLGİ INFO Bilgi Geçerli işletim ortamı hakkında bilgi verir
TAMSAYI INT Math & Trigonometri Bir sayıyı, en yakın daha küçük tamsayıya yuvarlar
KESMENOKTASI INTERCEPT İstatistik Doğrusal çakıştırma çizgisinin kesişme noktasını verir
FAİZORANI INTRATE Finansal Tam olarak yatırım yapılmış bir tahvilin faiz oranını verir
FAİZTUTARI IPMT Finansal Bir yatırımın verilen bir süre için faiz ödemesini verir
İÇ_VERİM_ORANI IRR Finansal Bir para akışı serisi için, iç verim oranını verir
EBOŞSA ISBLANK Bilgi Değer boşsa, DOĞRU verir
EHATA ISERR Bilgi Değer, #YOK dışındaki bir hata değeriyse, DOĞRU verir
EHATALIYSA ISERROR Bilgi Değer, herhangi bir hata değeriyse, DOĞRU verir
ÇİFTMİ ISEVEN Bilgi Sayı çiftse, DOĞRU verir
EMANTIKSALSA ISLOGICAL Bilgi Değer, mantıksal bir değerse, DOĞRU verir
EYOKSA ISNA Bilgi Değer, #YOK hata değeriyse, DOĞRU verir
                 Bitmap                           Bitmap

EMETİNDEĞİLSE
ISNONTEXT Bilgi Değer, metin değilse, DOĞRU verir
ESAYIYSA ISNUMBER Bilgi Değer, bir sayıysa, DOĞRU verir
TEKMİ ISODD Bilgi Sayı tekse, DOĞRU verir
ISPMT ISPMT Finansal Yatırımın belirli bir dönemi boyunca ödenen faizi hesaplar.
EREFSE ISREF Bilgi Sayı bir başvuruysa, DOĞRU verir
EMETİNSE ISTEXT Bilgi Değer, bir metinse DOĞRU verir
JIS JIS Metin & Veri Bir karakter dizesindeki tek enli (tek bayt) İngilizce   harfleri veya katakana’yı çift enli (iki bayt) karakterlerle değiştirir.
BASIKLIK KURT İstatistik Bir veri kümesinin basıklığını verir
BÜYÜK LARGE İstatistik Bir veri kümesindeki k. en büyük değeri verir
OKEK LCM Math & Trigonometri En küçük ortak katı verir
SOLDAN LEFT Metin & Veri Bir metin değerinden en soldaki karakterleri verir
UZUNLUK LEN Metin & Veri Bir metin dizesindeki karakter sayısını verir
DOT LINEST İstatistik Doğrusal bir eğilimin parametrelerini verir
LN LN Math & Trigonometri Bir sayının doğal logaritmasını verir
LOG LOG Math & Trigonometri Bir sayının, belirtilen bir tabandaki logaritmasını verir
LOG10 LOG10 Math & Trigonometri Bir sayının 10 tabanında logaritmasını verir
LOT LOGEST İstatistik Üstel bir eğilimin parametrelerini verir
LOGTERS LOGINV İstatistik Bir lognormal dağılımının tersini verir
LOGNORMDAĞ LOGNORMDIST İstatistik Birikimli lognormal dağılımını verir
ARA LOOKUP Arama & Başvuru Bir vektördeki veya dizideki değerleri arar
KÜÇÜKHARF LOWER Metin & Veri Metni küçük harfe dönüştürür
KAÇINCI MATCH Arama & Başvuru Bir başvurudaki veya dizideki değerleri arar
MAK MAX İstatistik Bir bağımsız değişkenler listesindeki en büyük değeri verir
MAKA MAXA İstatistik Bir bağımsız değişkenler listesindeki, sayılar, metin ve   mantıksal değerleri içermek üzere, en büyük değeri verir
DETERMİNANT MDETERM Math & Trigonometri Bir dizinin dizey determinantını verir
MSÜRE MDURATION Finansal Varsayılan par değeri 10.000.000 lira olan bir tahvil için   Macauley değiştirilmiş süreyi verir
ORTANCA MEDIAN İstatistik Verilen sayıların ortancasını verir
PARÇAAL MID Metin & Veri Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz   konumdan başlamak üzere verir
MİN MIN İstatistik Bir bağımsız değişkenler listesindeki en küçük değeri verir
MİNA MINA İstatistik Bir bağımsız değişkenler listesindeki, sayılar, metin ve   mantıksal değerleri de içermek üzere, en küçük değeri verir
DAKİKA MINUTE Tarih & Saat Bir seri numarasını dakikaya dönüştürür
DİZEY_TERS MINVERSE Math & Trigonometri Bir dizinin dizey tersini verir
D_İÇ_VERİM_ORANI MIRR Finansal Pozitif ve negatif para akışlarının farklı oranlarda finanse   edildiği durumlarda, iç verim oranını verir
DÇARP MMULT Math & Trigonometri İki dizinin dizey çarpımını verir
MODÜLO MOD Math & Trigonometri Bölmeden kalanı verir
ENÇOK_OLAN MODE İstatistik Bir veri kümesindeki en sık rastlanan değeri verir
AY MONTH Tarih & Saat Bir seri numarasını aya dönüştürür
KYUVARLA MROUND Math & Trigonometri İstenen kata yuvarlanmış bir sayı verir
ÇOKTERİMLİ MULTINOMIAL Math & Trigonometri Bir sayılar kümesinin çok terimlisini verir
S N Bilgi Sayıya dönüştürülmüş bir değer verir
YOKSAY NA Bilgi #YOK hata değerini verir
NEGBINOMDAĞ NEGBINOMDIST İstatistik Negatif binom dağılımını verir
TAMİŞGÜNÜ NETWORKDAYS Tarih & Saat İki tarih arasındaki tam çalışma günlerinin sayısını verir
NOMİNAL NOMINAL Finansal Yıllık nominal faiz oranını verir
NORMDAĞ NORMDIST İstatistik Normal birikimli dağılımı verir
NORMTERS NORMINV İstatistik Normal birikimli dağılımın tersini verir
NORMSDAĞ NORMSDIST İstatistik Standart normal birikimli dağılımı verir
NORMSTERS NORMSINV İstatistik Standart normal birikimli dağılımın tersini verir
DEĞİL NOT Mantıksal Bağımsız değişkeninin mantığını tersine çevirir
ŞİMDİ NOW Tarih & Saat Geçerli tarihin ve saatin seri numarasını verir
DÖNEM_SAYISI NPER Finansal Bir yatırımın dönem sayısını verir
NBD NPV Finansal Bir yatırımın bugünkü net değerini, bir dönemsel para akışları   serisine ve bir indirim oranına bağlı olarak verir
OCT2BIN OCT2BIN Mühendislik Sekizli bir sayıyı ikiliye dönüştürür
OCT2DEC OCT2DEC Mühendislik Sekizli bir sayıyı ondalığa dönüştürür
OCT2HEX OCT2HEX Mühendislik Sekizli bir sayıyı onaltılıya dönüştürür
TEK ODD Math & Trigonometri Bir sayıyı en yakın daha büyük tek sayıya yuvarlar
TEKYDEĞER ODDFPRICE Finansal Tek bir ilk dönemi olan bir tahvilin değerini, her 100.000.000   lirada bir verir
TEKYÖDEME ODDFYIELD Finansal Tek bir ilk dönemi olan bir tahvilin ödemesini verir
TEKSDEĞER ODDLPRICE Finansal Tek bir son dönemi olan bir tahvilin fiyatını her 10.000.000   lirada bir verir
TEKSÖDEME ODDLYIELD Finansal Tek bir son dönemi olan bir tahvilin ödemesini verir
KAYDIR OFFSET Arama & Başvuru Verilen bir başvurudan, bir başvuru kaydırmayı verir
YADA OR Mantıksal Bağımsız değişkenlerden herhangi birisi DOĞRU ise, DOĞRU verir
PEARSON PEARSON İstatistik Pearson çarpım moment korelasyon katsayısını verir
YÜZDEBİRLİK PERCENTILE İstatistik Bir aralıktaki değerlerin k. frekans toplamını verir
YÜZDERANK PERCENTRANK İstatistik Bir veri kümesindeki bir değerin yüzde mertebesini verir
PERMÜTASYON PERMUT İstatistik Verilen sayıda nesne için, permütasyon sayısını verir
SES PHONETIC Metin & Veri Bir metin dizesinden fonetik (furigana) karakterleri ayıklar.
PI Math & Trigonometri Pi değerini verir
DEVRESEL_ÖDEME PMT Finansal Bir yıllık dönemsel ödemeyi verir
POISSON POISSON İstatistik Poisson dağılımını verir
KUVVET POWER Math & Trigonometri Bir üsse yükseltilmiş sayının sonucunu verir
ANA_PARA_ÖDEMESİ PPMT Finansal Verilen bir süre için, bir yatırımın anaparasına dayanan   ödemeyi verir
DEĞER PRICE Finansal Dönemsel faiz ödeyen bir tahvilin fiyatını 10.000.00 liralık   değer başına verir
DEĞERİND PRICEDISC Finansal İndirimli bir tahvilin fiyatını 10.000.000 liralık nominal   değer başına verir
DEĞERVADE PRICEMAT Finansal Faizini vade sonunda ödeyen bir tahvilin fiyatını 10.000.000   nominal değer başına verir
OLASILIK PROB İstatistik Bir aralıktaki değerlerin iki limit arasında olma olasılığını   verir
ÇARPIM PRODUCT Math & Trigonometri Bağımsız değişkenlerini çarpar
YAZIM.DÜZENİ PROPER Metin & Veri Bir metin değerinin her bir sözcüğünün ilk harfini büyük harfe   çevirir
BD PV Finansal Bir yatırımın bugünkü değerini verir
DÖRTTEBİRLİK QUARTILE İstatistik Bir veri kümesinin kartil değerini verir
BÖLÜM QUOTIENT Math & Trigonometri Bir bölme işleminin tamsayı kısmını verir
RADYAN RADIANS Math & Trigonometri Dereceleri radyanlara dönüştürür
S_SAYI_ÜRET RAND Math & Trigonometri 0 ile 1 arasında rastgele bir sayı verir
RASTGELEARALIK RANDBETWEEN Math & Trigonometri Belirttiğiniz sayılar arasında rastgele bir sayı verir
RANK RANK İstatistik Bir sayılar listesindeki bir sayının mertebesini verir
FAİZ_ORANI RATE Finansal Bir yıllık dönem başına düşen faiz oranını verir
GETİRİ RECEIVED Finansal Tam olarak yatırılmış bir tahvilin vadesinin bitiminde alınan   miktarı verir
DEĞİŞTİR REPLACE Metin & Veri Metnin içindeki karakterleri değiştirir
YİNELE REPT Metin & Veri Metni, verilen sayıda defa yineler
SAĞDAN RIGHT Metin & Veri Bir metin değerinin en sağdaki karakterlerini verir
ROMEN ROMAN Math & Trigonometri Bir normal rakamı, metin olarak, romen rakamına çevirir
YUVARLA ROUND Math & Trigonometri Bir sayıyı, belirtilen basamak sayısına yuvarlar
AŞAĞIYUVARLA ROUNDDOWN Math & Trigonometri Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar
YUKARIYUVARLA ROUNDUP Math & Trigonometri Bir sayıyı daha büyük sayıya doğru, sıfırdan ıraksayarak   yuvarlar
SATIR ROW Arama & Başvuru Bir başvurunun satır sayısını verir
SATIRSAY ROWS Arama & Başvuru Bir başvurudaki satırların sayısını verir
RKARE RSQ İstatistik Pearson çarpım moment korelasyon katsayısının karesini verir
RTD RTD Arama & Başvuru COM otomasyonunu destekleyen programdan gerçek zaman verileri   alır.
MBUL SEARCH Metin & Veri Bir metin değerini, bir başkasının içinde bulur (büyük küçük   harf duyarlı değildir)
SANİYE SECOND Tarih & Saat Bir seri numarasını saniyeye dönüştürür
SERİTOPLA SERIESSUM Math & Trigonometri Bir üs serisinin toplamını, formüle bağlı olarak verir
İŞARET SIGN Math & Trigonometri Bir sayının işaretini verir
SİN SIN Math & Trigonometri Verilen bir açının sinüsünü verir
SİNH SINH Math & Trigonometri Bir sayının hiperbolik sinüsünü verir
ÇARPIKLIK SKEW İstatistik Bir dağılımın çarpıklığını verir
DA SLN Finansal Bir malın bir dönem içindeki doğrusal yıpranmasını verir
EĞİM SLOPE İstatistik Doğrusal çakışma çizgisinin eğimini verir
KÜÇÜK SMALL İstatistik Bir veri kümesindeki k. en küçük değeri verir
KAREKÖK SQRT Math & Trigonometri Pozitif bir karekök verir
KAREKÖKPİ SQRTPI Math & Trigonometri (* Pi sayısının) kare kökünü verir
STANDARTLAŞTIRMA STANDARDIZE İstatistik Normalleştirilmiş bir değer verir
STDSAPMA STDEV İstatistik Standart sapmayı, bir örneğe bağlı olarak tahmin eder
STDSAPMAA STDEVA İstatistik Standart sapmayı, sayılar, metin ve mantıksal değerleri   içermek üzere, bir örneğe bağlı olarak tahmin eder
STDSAPMAS STDEVP İstatistik Standart sapmayı, tüm popülasyona bağlı olarak hesaplar
STDSAPMASA STDEVPA İstatistik Standart sapmayı, sayılar, metin ve mantıksal değerleri   içermek üzere, tüm popülasyona bağlı olarak hesaplar
STHYX STEYX İstatistik Öngörülen bir y değerinin standart hatasını, çakışmadaki her   bir x için verir
YERİNEKOY SUBSTITUTE Metin & Veri Bir metin dizesinde, eski metnin yerine yeni metin koyar
ALTTOPLAM SUBTOTAL Math & Trigonometri Bir listedeki ya da veritabanındaki bir alt toplamı verir
TOPLA SUM Math & Trigonometri Bağımsız değerlerini toplar
ETOPLA SUMIF Math & Trigonometri Belirli bir ölçütle belirlenen hücreleri ekler
TOPLA.ÇARPIM SUMPRODUCT Math & Trigonometri İlişkili dizi bileşenlerinin çarpımlarının toplamını verir
TOPKARE SUMSQ Math & Trigonometri Bağımsız değişkenlerin karelerinin toplamını verir
TOPX2EY2 SUMX2MY2 Math & Trigonometri İki dizideki ilişkili değerlerin farkının toplamını verir
TOPX2PY2 SUMX2PY2 Math & Trigonometri İki dizideki ilişkili değerlerin karelerinin toplamının   toplamını verir
TOPXEY2 SUMXMY2 Math & Trigonometri İki dizideki ilişkili değerlerin farklarının karelerinin   toplamını verir
YAT SYD Finansal Bir malın belirli bir dönem için olan amortismanını verir
M T Metin & Veri Bağımsız değerlerini metne dönüştürür
TAN TAN Math & Trigonometri Bir sayının tanjantını verir
TANH TANH Math & Trigonometri Bir sayının hiperbolik tanjantını verir
HTAHEŞ TBILLEQ Finansal Bir Hazine bonosunun bono eşdeğeri ödemesini verir
HTAHDEĞER TBILLPRICE Finansal Bir Hazine bonosunun değerini, 10.000.000 liralık nominal   değer başına verir
HTAHÖDEME TBILLYIELD Finansal Bir Hazine bonosunun ödemesini verir
TDAĞ TDIST İstatistik T-dağılımını verir
METNEÇEVİR TEXT Metin & Veri Bir sayıyı biçimlendirir ve metne dönüştürür
ZAMAN TIME Tarih & Saat Belirli bir zamanın seri numarasını verir
ZAMANSAYISI TIMEVALUE Tarih & Saat Metin biçimindeki zamanı seri numarasına dönüştürür
TTERS TINV İstatistik T-dağılımının tersini verir
BUGÜN TODAY Tarih & Saat Bugünün tarihini seri numarasına dönüştürür
DEVRİK_DÖNÜŞÜM TRANSPOSE Arama & Başvuru Bir dizinin devrik dönüşümünü verir
                 Bitmap                           Bitmap                           Bitmap                           Bitmap

EĞİLİM
TREND İstatistik Doğrusal bir eğilim boyunca değerler verir
KIRP TRIM Metin & Veri Metindeki boşlukları kaldırır
KIRPORTALAMA TRIMMEAN İstatistik Bir veri kümesinin iç ortasını verir
DOĞRU TRUE Mantıksal DOĞRU mantıksal değerini verir
NSAT TRUNC Math & Trigonometri Bir sayının, tamsayı durumuna gelecek şekilde, fazlalıklarını   atar
TTEST TTEST İstatistik T-test’le ilişkilendirilmiş olasılığı verir
TÜR TYPE Bilgi Bir değerin veri türünü belirten bir sayı verir
BÜYÜKHARF UPPER Metin & Veri Metni büyük harfe dönüştürür
SAYIYAÇEVİR VALUE Metin & Veri Bir metin bağımsız değişkenini sayıya dönüştürür
VAR VAR İstatistik Varyansı, bir örneğe bağlı olarak tahmin eder
VARA VARA İstatistik Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere,   bir örneğe bağlı olarak tahmin eder
VARS VARP İstatistik Varyansı, tüm popülasyona bağlı olarak hesaplar
VARSA VARPA İstatistik Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere,   tüm popülasyona bağlı olarak hesaplar
DAB VDB Finansal Bir malın amortismanını, belirlenmiş ya da kısmi bir dönem   için, bir azalan bakiye yöntemi kullanarak verir
DÜŞEYARA VLOOKUP Arama & Başvuru Bir dizinin ilk sütununa bakar ve bir hücrenin değerini vermek   için satır boyunca hareket eder
HAFTANINGÜNÜ WEEKDAY Tarih & Saat Bir seri numarasını, haftanın gününe dönüştürür
HAFTASAY WEEKNUM Tarih & Saat Dizisel değerini, haftanın yıl içinde bulunduğu konumu sayısal   olarak gösteren sayıya dönüştürür
WEIBULL WEIBULL İstatistik Weibull dağılımını hesaplar
İŞGÜNÜ WORKDAY Tarih & Saat Belirtilen sayıda çalışma günü öncesinin ya da sonrasının   tarihinin seri numarasını verir
AİÇVERİMORANI XIRR Finansal Dönemsel olması gerekmeyen bir para akışları programı için, iç   verim oranını verir
ANBD XNPV Finansal Dönemsel olması gerekmeyen bir para akışları programı için,   bugünkü net değeri verir
YIL YEAR Tarih & Saat Bir seri numarasını yıla dönüştürür
YILORAN YEARFRAC Tarih & Saat Başlangıç_tarihi ve bitiş_tarihi arasındaki tam günleri   gösteren yıl kesirini verir
ÖDEME YIELD Finansal Belirli aralıklarla faiz ödeyen bir tahvilin ödemesini verir
ÖDEMEİND YIELDDISC Finansal İndirimli bir tahvilin yıllık ödemesini verir; örneğin, bir   Hazine bonosunun
ÖDEMEVADE YIELDMAT Finansal Vadesinin bitiminde faiz ödeyen bir tahvilin yıllık ödemesini   verir
ZTEST ZTEST İstatistik Bir z-testinin iki kuyruklu P-değerini hesaplar
YÜZDEBİRLİK ERCENTILE İstatistik  Bir aralıktaki   değerlerin k
YÜZDERANK PERCENTRANK İstatistik  Bir veri kümesindeki   bir değerin yüzde mertebesini verir
ZAMAN TIME Tarih & Saat  Belirli bir zamanın   seri numarasını verir
ZAMANSAYISI TIMEVALUE Tarih & Saat  Metin biçimindeki   zamanı seri numarasına dönüştürür

alıntı : http://www.excelgurusu.com/bazi-fonksiyonlar/

21Eyl/140

CRC Nedir nerde nasıl ne için kullanılabilir

Merhaba sevgili okurlarım, Google ve diğer botlar.

Bugün CRC'den size bahsedeceğim.  CRC – Cyclic Redundancy Check dediğimiz arkadaş bir veri kontrol formatıdır. Bugunlerde Check Digitlerden bahsettim bol bol birde CRC yani türkçe adı ile Döngüsel Artıklık Denetimi . “Hata sezen” kod olarakta bilinir.

Mantıksal anlatımını çok iyi yapmayacağımdan bunun ile ilgili beğendiğim bir yaziyi Copy/Paste yaparacagim.

Öncelikle belirteyim bu CRC haberleşmede kullanılan ve “hata sezen” kod adı verilen bir yöntemdir. Zaten iki tip yöntem var: Hata sezen ve hata düzelten. Hata sezen, adından da anlaşılabileceği gibi, sadece verinin düzgün iletilip iletilmediğini anlamaya yarar. Hata düzelten ise hatayı bulur ve düzeltir. Peki hangi durumlarda bu ikisinden biri seçilir:

Diyelim ki uydu ile haberleşiyoruz. Burada uyduya aktarılan veriler (Uplink) ve uydudan gelen veriler (Downlink) oldukça yavaş aslında. Sonuçta uydunun avantajı çok geniş bir alanı kaplamasıdır. (Tüm dünya misal?) Burada hata sezen kod kullanırsak olası bir hata durumunda uydu bu durumu, veriyi aldığı merkeze belirtir ve aynı veri tekrar aktarılır. Zaten sistem yavaş, üstüne de böyle bir durum olursa daha bir yavaşlar diye bu noktada hata düzelten kod kullanılır. Hatayı düzeltebilmesi için verinin boyutu arttırılmalıdır. Hata düzelten yöntemini daha sonra farklı bir yazıda açıklayacağım. Hata sezen kodlara geri dönelim…

Yukarıdaki açıklamadan sonra herhalde nerede kullanılabileceği tahmin edilebilir: Aktarım hızımız çok yüksekse ve hatalı bir veri gelince bunun tekrar alınması sisteme koymayacaksa kullanılması gayet güzeldir hata sezen kodların. İşte bizim CRC de bunu yapmakta.

CRC’deki temel mantık, gönderilecek verinin sonuna verinin daha önceden belirlenen bir sayıya bölümünden kalan eklenir. Karşı taraf bu veri kümesini alınca daha önceden belirlenmiş sayıya böler. Sonuç sıfır ise veri hatasız aktarılmıştır. Olayı rakamlara dökmek daha iyi açıklayacaktır:

Misal göndermek istediğimiz veri 10011010 olsun. (Tamamen attım) Bu bölücü sayımız da (bu noktadan itibaren buna polinom diyeceğim sınavda filan sorulursa işin ezberi bu şekilde çünkü) belirlenebilir bir şey. Misal bu polinom da 11001 olsun diyorsam tamamen atıyorum ama hem alıcı hem verici bunu biliyor farz ediyorumdur. Sınavda da zaten “Falanca veriyi şu polinomla, CRC kodlaması ile nasıl göndeririz?” gibi bir soru çıkacaktır. Bu noktada sadece bu iki sayıyı birbirine bölüp verinin sonuna dört bit olarak eklememiz kafi ancak yine işin biraz ezberine girelim:

Veri 10011010 denmişse bunu bir polinom gibi yazmamız gerekiyor önce: Bunun için ikilik tabandaki bir sayıyı onluk tabana çevirirken kullandığımız “iki üzeri” terimleri yerine “x üzeri” diyoruz. Yani normalde bu sayı 2^7+2^4+2^3+2^1 iken biz buna x^7+x^4+x^3+x^1 diyoruz. Aynı şekilde bölücü polinom da (11001 demiştik üstte) x^4+x^3+1 oluyor. (Son hane x^0=1 durumunda) Bu noktadan sonra kısaca verinin sonuna dört bit sıfır ekliyoruz demek yerine iletilecek polinomu x^4 ile genişletiyoruz diyoruz. Yani 10011010, 100110100000 oluyor ve yine bunu polinom olarak yazarsak x^11+x^8+x^7+x^5 oluyor. Daha sonra son halindeki veri polinomu ile elimizdeki polinom üzerinde bölme işlemi uygulayıp son bitleri kalan ile değiştiriyoruz ve iş bitiyor. Bu noktadan sonra bir konuya netlik getireyim: Sakın bu işlemi onluk taban üzerinden yapmayın!

10011010 onluk tabanda 154’e karşılık gelmektedir. Elimizdeki bölücü polinom da (11001) 25’e denk geliyor. İkisini birbirine bölersek kalan dört çıkar. Bölüm bizi zerre ilgilendirmiyor ama kalan önemli. Onluk tabanda dört, ikilikte 0100’a denk gelmekte. Yani gönderilecek veri 100110100100 olacak… Değil aslında. Haydi diyelim sonun dört sıfır atmıştık yeni veri 100110100000 aslında diyelim ve o da onluk tabanda 2464’e denk gelmekte. Buna da 25’i bölersek kalan 13(1101) çıkıyor. Ancak donanımsal olarak bu bölme işlemi biraz farklı olduğundan az sonra göreceksiniz ki sonuç farklı çıkmakta…

100110100000| 11001
11001 | Bölüm de artık neyse… Siyah yazdıklarım bölme gereği bir aşağı inen bitler
010100
11001
011011
11001
00010000
11001
010010
11001
010110
11001
01111 —> Bakıyoruz ki kalan ne 0100 ne de 1101 çıktı.

Bilenler fark etmiştir sürekli iki değeri XOR’ladık. (Özel veya) XOR’un mantığı, aynı olan bitler 0, farklı olan bitler 1 çıkışı verir. Polinom aritmetiğinde bölme bölme diye sürekli söylediğim yerde bu XOR kullanılır ki bu fark da buradan geliyor. Hadi diyelim ben bu işlemi yanlış yaptım. Hemen Prentice Hall: Computer Networks, Fourth Edition kitabındaki örneği yazının sonuna yapıştırıyorum. Buradaki örneği ondalık olarak ele alalım:

Burada gönderilecek veri 1101011011 olarak belirtilmiş ve kendisi 859 yapıyor ondalık olarak. Bunun bi de sonunda dört sıfır olan 11010110110000 halini ele alırsak o da 13744 ‘e denk gelmekte. Bölüyoruz polinoma ki kendisi de 10011, ondalık 19, ilk hali ile kalan dört, uzatılmış halinde kalan yedi. Eee resme bi bakıyoruz (adamlar bölmüş güzel güzel göstere göstere) ve sonuç 1110 çıkmış, ondalık da 14 ediyor kendisi.

Bu ondalık işine nerden bulaştın derseniz; internette Türkçe kaynaklar genelde bu ondalık sistem üzerinden anlatıyor. Ben de garibim baktım çok da mantıklı geldi (kolay da), sınavda tuttum böle yaptım. Hocaya göstermelik de bu bölme işlemini yaptım ama bi baktım sonuç farklı! Dedim heralde yanlış işlem yaptım ondalık rakamlar yalan söylemez(!) sonucu değiştirverdim. Sonuç: Sınavdan -10 puan…

Neyse işte bu şekilde CRC kodlama ile gönderdik kodu, karşı tarafta alıp bölme işlemini yapıyor. Bu sondaki kalan eklenmiş halinde polinom bölmesi yapınca sonuç sıfır oluyor! Oldu ise tamam, durum güzel. Bu bölücü polinom iki tarafca da biliniyor kabul ediyoruz, tekrar belirteyim. Zaten en basitinden şifreli bir dosya açarken “CRC failed” diye bir hata alırsınız eğer şifre yanlışsa. Bu şifre de bizim polinomumuz olmuş oluyor.

Umarım yeterli açıklama yapabilmişimdirim. İnternet iyi güzel hoş, bilgi var da doğru bilgiyi ayırt edebilmek lazım(mış). Ben CRC için yapamadım bu ayrımı, sınavdan sonra dank etti ama olan oldu bi kere…

CRC.jpg

17Eyl/142

Ean8 ve Ean13 Barkod hesaplamasi

Merhabalar, Kacan uykumun pesinden kosmak yerine bloglamak istedim. Fakat suan macbookumda oldugum icin turkce karakter kullanamiyorum malesef. Dubai mali olunca cihaz 🙂

Bu aralar check algoritmalarinin paylasildigi bir yer haline gelmekte baktim ki burasi, Luhn Check mod 10 dogrulamasi mevcut, Tc Kimlik dogrulamasi mevcut C# da EAN 13 ve EAN8 nasil hesaplanir onu yazayim dedim.

Turkce karakter kullanmadigim icin ozur dileyecektim konuyu nasil dagittim nereye ne sekilde blog'un iceriginde dondu 🙁 anlamadim ve suan ise yarar birsey yapmanin en guzel kismi uykum geldi 🙁

Fazla uzatmiyim EAN 8 ve EAN 13 birer barkod cesididir. Hatta en cok kullanilanlardan birtanesidir. Ean13'u surekli ev urunlerinde gorurz uzunlu kisali olan barkod cesitlerindendir ean.

Ean 13 e ornek :

perakendecilik sektorunden bir ornek ve anlatimi.

Ean 13 ilk 12 hanesi barkod datasidir. 13. karakter kontrol dijit.

Ean 8 ilk 7 hanesi barkod datasi, 8. karakter kontrol dijiti.

kimi yerde kontrol dijiti kimi yerde check digit yaziyorum kusura bakmayin.

(Kodlar baska kaynaklardan alintidir..)

Ean 13 C# kodu :

static int _checksum_ean13(String data)
{
    // Test string for correct length
    if(data.Length != 12 && data.Length != 13)
        return -1;

    // Test string for being numeric
    for(int i=0;i<data.Length;i++)
    {
        if(data[i] < 0x30 || data[i] > 0x39)
            return -1;
    }

    int sum = 0;

    for(int i=11;i>=0;i--)
    {
        int digit = data[i] - 0x30;
        if ((i & 0x01) == 1)
            sum += digit;
        else
            sum += digit * 3;
    }
    int mod = sum % 10;
    return mod == 0 ? 0 : 10 - mod;
}

Ean 8 C# Kodu :

static int _checksum_ean8(String data)
{
    // Test string for correct length
    if(data.Length != 7 && data.Length != 8)
        return -1;
	
    // Test string for being numeric
    for(int i=0;i<data.Length;i++)
    {
        if(data[i] < 0x30 || data[i] > 0x39)
            return -1;
    }

    int sum = 0;

    for(int i=6;i>=0;i--)
    {
        int digit = data[i] - 0x30;
        if ((i & 0x01) == 1)
            sum += digit;
        else
            sum += digit * 3;
    }
    int mod = sum % 10;
    return mod == 0 ? 0 : 10 - mod;
}
15Eyl/145

TC Kimlik No Algoritması ve hesaplaması

Merhabalar sevgili okurlarım, gerçeği söylemek gerekirse okurum olabilecek bir içeriğim yok. Bunun farkındayım, daha çok googlayanlaya yönelik bilgi kaynağım mevcut tabi.

Düşük cümleler kuruyorsam affola. Yavaş yavaş Türkçe karakterleri kullanmaya çalışıyorum.

Bir önceki yazımda IMEI ve Kredi kartı gibi verilerin kontrolünde kullanılan algoritmayı paylaşmıştım. Luhn Check digit Mode 10 algoritması Bu yazımda da T.C. kimlik numarasının 10. ve 11. hanelerini hesaplayacağız.

Öncelik ile tc kimlik no Türkiye Cumhuriyeti vatandaşlarının kimliklerine verilen ID (identification) numaralarıdır. Devlet dairelerinde, bankalarda ve bir çok noktada güvenlik ve kimlik tanımlama işlemi için kullanılır. T.C. veri tabanında sorgulamak için belirli anlaşmalar yapmanız ve ücretini ödemeniz gerekmektedir. T.C. Kimlik No o kişiye ait mi bunun kontrolünü direk siz yapamazsınız fakat Numara kurallara uygun mu buna bakarsınız; Bunun için gerekli bilgiler :
  1. TC Kimlik numaraları 11 basamaktan oluşmaktadır.
  2.  İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
  3.  11 hanelidir.
  4. Her hanesi rakamsal değer içerir.
  5.  İlk hane 0 olamaz.
  6. Son hane tek sayi (1,3,5,7,9) olamaz
  7. 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10′a bölümünden kalan, yani Mod10′u bize 10. haneyi verir.
  8. 1. 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.
  9. 10. hanenin hesaplama şekline göre çift bir sayının 10'a bölümü çift, tek bir sayının 10'a bölümü tek sayı olur. 2 adet çift sayının toplamı çift, 2 adet tek sayının toplamı çift sonuç verir. Bu sonuça göre Son hane her zaman çifttir. 

Şimdi gelelim farklı dillerdeki doğrulama örneklerine.

C#

public static bool TcDogrulaV2(string tcKimlikNo)
{
    bool returnvalue = false;
    if (tcKimlikNo.Length == 11)
    {
        Int64 ATCNO, BTCNO, TcNo;
        long C1,C2,C3, C4, C5,C6,C7,C8, C9,Q1,Q2;
 
        TcNo = Int64.Parse(tcKimlikNo);

	// bolu yuz islemi int tanimlanmis degiskende son 2 haneyi silmek icin kullanılır.
 
        ATCNO = TcNo / 100;
        BTCNO = TcNo / 100;
 
         C1 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C2 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C3 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C4 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C5 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C6 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C7 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C8 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         C9 = ATCNO % 10;  ATCNO = ATCNO / 10 ;
         Q1 = ((10-((((C1+C3+C5+C7+C9)*3)+(C2+C4+C6+C8))%10))%10);
         Q2 = ((10-(((((C2+C4+C6+C8)+Q1)*3)+(C1+C3+C5+C7+C9))%10))%10);

         /*
         Q1 TC nosunun 10. hanesi
         Q2 TC nosunun 11. hanesi
         BTCNO son 2 hanesi olmayan tckimlikNo
         */ 

         returnvalue = ((BTCNO * 100)+(Q1 * 10)+Q2 == TcNo);
    }
    return returnvalue;
}

Vb.Net

Function TcDogrulaV2(ByVal tcKimlikNo As String) As Boolean
    Dim returnvalue As Boolean = False
    If (tcKimlikNo.Length <> 11) Then
        tcCustom.ErrorMessage = "<br>TC Kimlik Numarası 11 Haneli Olmalıdır."
        Return returnvalue
    End If
    Dim TcNo As Long = Long.Parse(tcKimlikNo)
    Dim BTCNO As Long = Long.Parse(Left(tcKimlikNo, 9))
         
    Dim C1 As Long = Long.Parse(Mid(tcKimlikNo, 1, 1))
    Dim C2 As Long = Long.Parse(Mid(tcKimlikNo, 2, 1))
    Dim C3 As Long = Long.Parse(Mid(tcKimlikNo, 3, 1))
    Dim C4 As Long = Long.Parse(Mid(tcKimlikNo, 4, 1))
    Dim C5 As Long = Long.Parse(Mid(tcKimlikNo, 5, 1))
    Dim C6 As Long = Long.Parse(Mid(tcKimlikNo, 6, 1))
    Dim C7 As Long = Long.Parse(Mid(tcKimlikNo, 7, 1))
    Dim C8 As Long = Long.Parse(Mid(tcKimlikNo, 8, 1))
    Dim C9 As Long = Long.Parse(Mid(tcKimlikNo, 9, 1))
         
    Dim Q1 As Long = ((10 - (((((((C1 + C3) + C5) + C7) + C9) * 3) + (((C2 + C4) + C6) + C8)) Mod 10)) Mod 10)
    Dim Q2 As Long = ((10 - (((((((C2 + C4) + C6) + C8) + Q1) * 3) + ((((C1 + C3) + C5) + C7) + C9)) Mod 10)) Mod 10)
    'Response.Write((((BTCNO * 100) + (Q1 * 10)) + Q2) & " - ")
    'Response.Write(tcKimlikNo)
    If ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo) Then
        tcCustom.ErrorMessage = ""
    Else
        tcCustom.ErrorMessage = "<br>Hatalı TC Kimlik Numarası."
    End If
       
    Return ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo)
End Function

Javascript

function check_tcno(a){
  if(a.substr(0,1)==0&&a.lenght!=11){
    return false;
  }
  var i = 9, md='', mc='', digit, mr='';
  while(digit = a.charAt(--i)){
    i%2==0 ? md += digit : mc += digit;
  }
  if(((eval(md.split('').join('+'))*7)-eval(mc.split('').join('+')))%10!=parseInt(a.substr(9,1),10)){
    return false;
  }
  for (c=0;c<=9;c++){
    mr += a.charAt(c);
  }
  if(eval(mr.split('').join('+'))%10!=parseInt(a.substr(10,1),10)){
    return false;
  }
  return true;
}

PHP

// with pattern
function check_tcno($tcno) {
        preg_replace('/([1-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1}).*$/e', "eval('\$on=((((\\1+\\3+\\5+\\7+\\9)*7)-(\\2+\\4+\\6+\\8))%10); \$onbir=(\\1+\\2+\\3+\\4+\\5+\\6+\\7+\\8+\\9+\$on)%10; \$sonIki = \$on.\$onbir;')", $tcno);
        return(substr($tcno, -2) == $sonIki);
}

// spagetti
function _tcNoCheck($tcNo){
    // For Controller
    $isDouble = is_double($tcNo);
    $size     = strlen($tcNo);
    $type     = gettype($tcNo);
              
    // First Controller
    if($tcNo == "" || $tcNo == null || $tcNo == 0){
        return false; //Bu alan boş bırakılamaz!
    }else if($size != 11 && $type != "integer"){            
        // Data Type Size Controller
        return false; //T.C. kimlik no 11 haneli olmak zorundadır!
    }else if($type == "integer"){
        // Type convert controller
        return false; //T.C. kimlik no 0(sıfır) ile başlayamaz ve 11 hane olmak zorundadır!
    }else if($isDouble != true) {
        // Data Type Controller
        return false; //T.C. kimlik no sadece sayısal girilmelidir!
    }else{
        // TC NO's
        $tc1;$tc2;$tc3;$tc4;$tc5;$tc6;
        $tc7;$tc8;$tc9;$tc10;$tc11;
              
        $tc1 = substr($tcNo,0,1);
        $tc2 = substr($tcNo,1,1);
        $tc3 = substr($tcNo,2,1);
        $tc4 = substr($tcNo,3,1);
        $tc5 = substr($tcNo,4,1);
        $tc6 = substr($tcNo,5,1);
        $tc7 = substr($tcNo,6,1);
        $tc8 = substr($tcNo,7,1);
        $tc9 = substr($tcNo,8,1);
        $tc10 = substr($tcNo,9,1);
        $tc11 = substr($tcNo,10,1);
  
        //First Algo. Checks
        $algoCheck1 = (($tc1 + $tc3 + $tc5 + $tc7 + $tc9) * 7);
        $algoCheck2 = abs(((($tc2 + $tc4 + $tc6 + $tc8) - $algoCheck1) % 10));
        $algoCheck3 = (($tc1 + $tc2 + $tc3 + $tc4 + $tc5 + $tc6 + $tc7 + $tc8 + $tc9 + $tc10) % 10); 
                  
        if($algoCheck2 != $tc10){
            return false; //Geçersiz T.C. kimlik no!!!
        }
                 
        if($algoCheck3 != $tc11){
            return false; //Geçersiz T.C. kimlik no!!!
        }
    }
              
        //GEÇERLİ T.C. Kimlik No.>";
        return true;
 }

//kisaltilmis (ev makarnasi :p)

function is_valid_tckn( $tckn )
{
    $x = $tckn;
    $valid1=((7*($x[0]+$x[2]+$x[4]+$x[6]+$x[8])-($x[1]+$x[3]+$x[5]+$x[7]))%10)==$x[9];
    $valid2=(($x[0]+$x[1]+$x[2]+$x[3]+$x[4]+$x[5]+$x[6]+$x[7]+$x[8]+$x[9])%10)==$x[10];
    return $valid1 && $valid2;
}

Delphi

Function TCKimlikDogrula(TCNo : String) : Boolean;
var
 bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,onn,onbir,
 ilk,son,onuncu,onbirinci :  integer;
 _Soniki, pSoniki : string;
begin
 if (Length(TCNo) < 11) or (Length(TCNo) > 11 ) then
  begin
     ShowMessage('doğru düzgün gir tc no nu !!');
     Abort
  end
   else
 bir := StrToInt(TCNo[1]);
 iki := StrToInt(TCNo[2]);
 uc  := StrToInt(TCNo[3]);
 dort:= StrToInt(TCNo[4]);
 bes := StrToInt(TCNo[5]);
 alti:= StrToInt(TCNo[6]);
 yedi:= StrToInt(TCNo[7]);
 sekiz:= StrToInt(TCNo[8]);
 dokuz:= StrToInt(TCNo[9]);
 onn  := StrToInt(TCNo[10]);
 onbir:= StrToInt(TCNo[11]);
 
 ilk := (bir+uc+bes+yedi+dokuz) * 7;
 son := iki+dort+alti+sekiz;
 onuncu := (ilk - son) mod 10;
 onbirinci := (bir+uc+bes+yedi+dokuz+iki+dort+alti+sekiz+onuncu);
 onbirinci := onbirinci mod 10;
 
 _Soniki := IntToStr(onuncu) + IntToStr(onbirinci);
 pSoniki := TCNo[10] + TCNo[11];
 
 if _Soniki = pSoniki then
  begin
   Result := True;
  end
   else
    Result := False;
end;

Python

# -------------------------------------------------------------------------
# tc numarasının checksum kısmını hesaplayan kısım
def tcno_checksum(tcno):
    tc    = '%d' % tcno
    tc10  = int(tc[0]) + int(tc[2]) + int(tc[4]) + int(tc[6]) + int(tc[8])
    tc10 *= 7
    tc10 -= int(tc[1]) + int(tc[3]) + int(tc[5]) + int(tc[7])
    tc10 %= 10
 
    tc11  = int(tc[0]) + int(tc[1]) + int(tc[2]) + int(tc[3]) + int(tc[4])
    tc11 += int(tc[5]) + int(tc[6]) + int(tc[7]) + int(tc[8]) + int(tc10)
    tc11 %= 10
 
    return '%s%d%d' % (tc, tc10, tc11)

Tsql

CREATE PROCEDURE [dbo].[tckimliknoDogrulama]

(

@TCKimlikNo nvarchar(11)

)

AS

SET NOCOUNT ON

if @TCKimlikNo is null

begin

return 'false'

end

if LEN(@TCKimlikNo) <> 11

begin

return 'false'

end

--Sayi mi degil mi kontrolu

declare @count int

select @count=1

while @count<=LEN(@TCKimlikNo)

begin

if substring(@TCKimlikNo,@count,1)<>'0' and substring(@TCKimlikNo,@count,1)<>'1' and substring(@TCKimlikNo,@count,1)<>'2'

and substring(@TCKimlikNo,@count,1)<>'3' and substring(@TCKimlikNo,@count,1)<>'4' and substring(@TCKimlikNo,@count,1)<>'5'

and substring(@TCKimlikNo,@count,1)<>'6' and substring(@TCKimlikNo,@count,1)<>'7' and substring(@TCKimlikNo,@count,1)<>'8'

and substring(@TCKimlikNo,@count,1)<>'9'

begin

return 'false'

end

select @count= @count+1

end

--Cift mi degil mi kontrolu

if (substring(@TCKimlikNo,LEN(@TCKimlikNo),1)<>'0' and

substring(@TCKimlikNo,LEN(@TCKimlikNo),1)<>'2' and

substring(@TCKimlikNo,LEN(@TCKimlikNo),1)<>'4' and

substring(@TCKimlikNo,LEN(@TCKimlikNo),1)<>'6' and

substring(@TCKimlikNo,LEN(@TCKimlikNo),1)<>'8' )

begin

return 'false'

end

declare @tmp1 bigint,@tmp bigint,@asb nvarchar(9),@str nvarchar(5)

select @tmp1= convert(bigint,@tckimlikno)/100, @tmp= convert(bigint,@tckimlikno)/100

select @count =9,@asb=''

while @count>0

begin

select @str=substring(@TCKimlikNo,@count,1)

select @asb=@asb+@str

select @count = @count -1

end

declare @oddsum bigint,@evensum bigint,@evensumtot bigint,@oddsumtot bigint,@total bigint,@chkdigit1 bigint,@chkdigit2 bigint

SELECT @oddsum=convert(bigint,(substring(@asb,1,1)))+convert(bigint,(substring(@asb,3,1)))+convert(bigint,(substring(@asb,5,1)))+convert(bigint,(substring(@asb,7,1)))+convert(bigint,(substring(@asb,9,1)))

SELECT @evensum=convert(bigint,(substring(@asb,2,1)))+convert(bigint,(substring(@asb,4,1)))+convert(bigint,(substring(@asb,6,1)))+convert(bigint,(substring(@asb,8,1)))

select @oddsumtot=@oddsum,@evensumtot=@evensum

select @total=@oddsum*3+@evensum

select @chkdigit1= (10-@total%10)%10

select @oddsum= @chkdigit1+@evensumtot

select @evensum= @oddsumtot

select @total = @oddsum*3+@evensum

select @chkdigit2=(10-@total%10)%10

select @tmp =@tmp*100+@chkdigit1*10+@chkdigit2

if @tmp <> convert(bigint,@tckimlikno)

begin

return 'false'

end

else

begin return 'true'

end

RETURN

 

Toplam 9 sayfa mevcuttur; 2. sayfayi okuyorsunuz...12345678...Son »