C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Haziran 2022 Cumartesi

Türkçe Sezar Şifreleme Uygulaması C#

 Sezar şifreleme karakter kaydırma özelliğine dayalı basit bir şifreleme egzersizi olarak düşünülebilir. Kaydırma işlemi genellikle C dilindeki char bir değişken ile integer bir değerin toplanması sonucu yeni bir char değer elde edilmesine dayanır. Örneğin C dilinde char degisken; degisken = 'A'; dediğiniz ve değişkeni degisken = degisken + 2 ; denildiğinde  C değerini alır. Bu işlem Sezar şifrelemede kolaylık sağlasa da büyük küçük harf ve Türkçe karakter işin içine girdiğinde oldukça çetrefilli olmakta. ASCII tablosu üzerinden kaydırma yapmak yerine belirlenen bir dizi üzerinden kaydırma yapmak Sezar şifreleme için daha güzel bir çözüm olacaktır. Bu nedenle aşağıdaki kod bloğunda öncelikli olarak bir karakter dizisi belirlenmiş girilen metin bu char dizinde kaçıncı karaktere karşılık geldiği yeni bir integer dizi ile tutulmuş ve kullanıcıdan alınan sayı kadar bu integer dizi kaydırılmıştır. Kaydırma işlemi sonucunda dizinin sonu geçip başa dönmesi için Mod işlemi kullanmakta kaçınılmaz olacaktır.

Bu sezar şifreleme uygulaması Windows form üzerinde geliştirilmiştir ve uygulamanın görüntüsü ve kodları şöyledir;

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text;

namespace SezarSifrelemeWindows
{
    public partial class Form1 : Form
    {
        char[] harfler = { 'a', 'b', 'c' ,'ç','d','e','f','g','ğ','h','ı','i','j','k','l','m', 'n', 'o', 'ö', 'p', 'r','s', 'ş', 't', 'u', 'ü', 'v', 'y','z','A', 'B', 'C' ,'Ç','D','E','F','G','Ğ','H','I','İ','J','K','L','M', 'N', 'O', 'Ö', 'P', 'R','S', 'Ş', 'T', 'U', 'Ü', 'V', 'Y','Z', ' ','.',',','?','!','+','-','1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
        public Form1()
        {
            InitializeComponent();
        }


        private void btnsifrele_Click(object sender, EventArgs e)
        {
            char[] metin_char = txtmetin.Text.ToString().ToCharArray();
            int[] degerler = new int[txtmetin.Text.ToString().Count()] ;
          
            for (int i = 0; i < metin_char.Length; i++)
            {
                for (int k = 0; k < harfler.Length; k++)
                {
                    if (metin_char[i] == harfler[k])
                    {
                        degerler[i] = k;
                    }
                }
            }

            for (int m = 0; m < degerler.Count(); m++)
            {
                degerler[m] += Convert.ToInt16(combo_sifrele.Text.ToString());
            }

            for (int r = 0; r < degerler.Count(); r++)
            {
                if (degerler[r] >= harfler.Length)
                    degerler[r] = degerler[r] % harfler.Length;
            }

            char[] sifreli_metin = new char[txtmetin.Text.ToString().Count()];

            for (int t  = 0; t < degerler.Length; t++)
            {

                sifreli_metin[t] = harfler[degerler[t]];
            }

            string str_sifreli_metin = new string(sifreli_metin);
            txtsifreli.Text = str_sifreli_metin;

        }

        private void btncoz_Click(object sender, EventArgs e)
        {
            char[] metin_char = txtsifreli.Text.ToString().ToCharArray();
            int[] degerler = new int[txtsifreli.Text.ToString().Count()];

            for (int i = 0; i < metin_char.Length; i++)
            {
                for (int k = 0; k < harfler.Length; k++)
                {
                    if (metin_char[i] == harfler[k])
                    {
                        degerler[i] = k;
                    }
                }
            }

            for (int m = 0; m < degerler.Count(); m++)
            {
                degerler[m] -= Convert.ToInt16(combo_coz.Text.ToString());
            }

            for (int r = 0; r < degerler.Count(); r++)
            {
                if (degerler[r] < 0)
                    degerler[r] = degerler[r] + harfler.Length;
            }

            char[] cozulmus_metin = new char[txtsifreli.Text.ToString().Count()];

            for (int t = 0; t < degerler.Length; t++)
            {

                cozulmus_metin[t] = harfler[degerler[t]];
            }

            string str_cozulmus_metin = new string(cozulmus_metin);
            txtmetin.Text = str_cozulmus_metin;
        }
    }
}

 


 

10 Kasım 2011 Perşembe

Javascript ile sayfa adını almak

web sitesi adresinizin www.tersduz.com/icerik.aspx olduğunu farz edin bu
elimizdeki javascript kodu bize icerik.aspx sayfa adının dönmesini sağlamakta.
        var sPath = window.location.pathname;

        //var sPage = sPath.substring(sPath.lastIndexOf('\\') + 1);

        var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);

Aşağıdaki kodlarda örneğin bir master page sahibim ve bu master page içerisinde
<ul>

            <li><a id="anasayfa"
href="default.aspx" class="current">Ana
Sayfa</a></li>
            <li><a id="matematikdersleri"
href="dersler.aspx">Matematik Dersleri</a></li>
            <li><a id="siteharitasi"
href="siteharitasi.aspx">Site Haritası</a></li>
            <li><a id="katkidabulunanlar"
href="katkida_bulunanlar.aspx">Katkıda Bulunanlar</a></li>
            <li><a id="okulumuz"
href="http://www.cumhuriyetioo.edu.tr">Okulumuz</a></li>

</ul>  

eğer kullanıcı sayfalar birisine tıkladığında örneğin dersler.aspx sayfasına
tıkladığında current classının anasayfadan gidip matematikderslere geçmesi
gerekli bunun için geliştirmiş olduğum
javascrip kodu şöyle oldu.
<script type="text/javascript">
    $(document).ready(function () {
         var sPath = window.location.pathname;
        //var sPage = sPath.substring(sPath.lastIndexOf('\\')
+ 1);
        var sPage = sPath.substring(sPath.lastIndexOf('/') +
1);
        if (sPage == "") {  
$("#anasayfa").addClass("current");        
$("#matematikdersleri").removeClass("current");
$("#siteharitasi").removeClass("current");
$("#katkidabulunanlar").removeClass("current");           
$("#okulumuz").removeClass("current");
        }
        else if (sPage == "dersler.aspx") {
$("#anasayfa").removeClass("current");
$("#matematikdersleri").addClass("current");
$("#siteharitasi").removeClass("current");           
$("#katkidabulunanlar").removeClass("current");
$("#okulumuz").removeClass("current");
        }
        else if (sPage == "siteharitasi.aspx") {
$("#anasayfa").removeClass("current");
$("#matematikdersleri").removeClass("current");           
$("#siteharitasi").addClass("current");
$("#katkidabulunanlar").removeClass("current");

$("#okulumuz").removeClass("current");
        }
        else if (sPage == "katkida_bulunanlar.aspx") {
$("#anasayfa").removeClass("current");
$("#matematikdersleri").removeClass("current");
$("#siteharitasi").removeClass("current");
$("#katkidabulunanlar").addClass("current");
$("#okulumuz").removeClass("current");
        }
    });
</script>


Eğer menunuz programatik olarak üretiliyorsa örenğin bir repater içerisinde
üretilen ul-li yapısı gibi
<asp:Repeater ID="menu_rpt" runat="server"
DataSourceID="sqlkaynak3">
<HeaderTemplate>
<li><a href="default.aspx" id="menu00"
class="current"><span></span>Anasayfa</a></li>          
</HeaderTemplate>             
<ItemTemplate>           
<li><a href='<%# "konsol.aspx?kategori=" + Eval("id") + "&konsol=" + Eval("adi")
%>' id='<%# "menu" + Eval("id") %>'><span></span><%# Eval("adi") %></a></li>     
</ItemTemplate>

 </asp:Repeater>
ozaman jquery kodlarımız asp.neet için şöyle olmalı
<script type="text/javascript">
    $(document).ready(function () {
        var secili = "menu" + '<%= lblsecilioge.Text %>';
  if (secili != "menuanasayfa") {
            $("#" + secili + "").addClass("current");
$("#menu00").removeClass("current");
        }
        else {
$("#menu00").addClass("current");

        }
    });

</script>

buradaki lblsecilioge.Text içeriği ise görünmeyen bir textbox olup içi söylece
dolduruluyor.
string secili = Request.QueryString["kategori"].ToString();
lblsecilioge.Text = secili;

23 Eylül 2011 Cuma

C# Değişken Kullanımı


Değer Tipleri:
C# Adı
CTS Karşılığı
Açıklama
Max ve Min aralık yada değeri
sbyte
System.Byte
8 bit işaretli tamsayı
-128 : 127
short
System.Int16
16 bit işaretli tamsayı
-32.768 : 32.767
int
System.Int32
32 bit işaretli tamsayı
-2.147.483.648 : 2.147.483.647
long
System.Int64
64 bit işaretli tamsayı
-9.223.372.036.854.775.808 : -9.223.372.036.854.775.807
byte
System.Byte
8 bit işaretsiz tamsayı
0,177083333
ushort
System.UInt16
16 bit işaretsiz tamsayı
0 : 65.535
uint
System.UInt32
32 bit işaretsiz tamsayı
0 : 4.294.967.295
ulong
System.UInt64
64 bit işaretsiz tamsayı
0 : 18.446.744.073.709.551.615
float
System.Single
32 bit tek kayan sayı
+yada - 1,5*10-45 : + ya da - 3,4*1038
double
Sytem.Double
64 bit çift kayan sayı
+yada - 5*10-324 : + ya da - 1,7*10308
decimal
System.Decimal
128 bit ondalıklı sayı
+yada - 1,5*10-28 : + ya da - 7,9*1028
bool
System.Boolean

true ya da false
char
System.Char
Karakterleri temsil eder
16 Unicode karakterleri

Referans Tipleri:
C# Adı
CTS Karşılığı
Açıklama
object
System.Object
Bütün veri türlerinin türediği kök eleman
string
System.String
Unicode karakterlerinden oluşan string

27 Ağustos 2011 Cumartesi

C# ile ExecuteNonQuery(), ExecuteScalar(), ExecuteReader() kullanımı

ExecuteNonQuery() ;
Bu metod geriye int olarak update, insert, delete olaylarından etkilenen satır sayısı döndürüyor.
DDL ve DML komutları için geliştirilmiştir diyebiliriz. Tamamiyle veri kaynağı üzerinde bir takım sonuçların doğmasına yardımcı olurlar. Bu tip komut cümlecikleri için, ExecuteNonQuery metodu kullanılır.



















ExecuteScalar();
Bu metod sadece tek alanlık veri döndüren sql sorguları için kullanılır. Geriye Object tipinde bir değer döndürür.




















Bu örnekte, Kisiler isimli tablomuza KisiID değeri 3 olan satırın sadece Adisimli alanının değerini veren bir komut nesnesi ve Kisilertablsundaki satır sayısını veren başka bir komut nesnesi kullanılmıştır. Her iki sql ifadeside sonuç olarak tek bir hücreyi döndürmektedir. Eğer sql ifadenizden birden fazla sütun alıyorsanız ve bu ifadeyi ExecuteScalar ile çalıştırıyorsanız, ilk satırın ilk sütunu haricindeki tüm veriler göz ardı edilecektir.

ExecuteReader();
Uygulamalarımızda genelde veri kaynaklarından veri kümeleri çekme ihtiyacını hissederiz. Böyle bir durumda, ExecuteReader metodunu kullanabiliriz. ExecuteReader metodu, çalıştırılan komut sonucu elde edilen sonuç kümesinden bir SqlDataReader nesnesi için veri akışını sağlar.

9 Nisan 2009 Perşembe

C# goto kullanmak

Merhabalar,
C# goto kullanmak işlemine değineceğim.vb6 da sık sık kullandığımız Go to işlemini C# kullanmak isteyebilirsiniz.Gerçi goto yazılımda asla önerilmez(kimse dev bir lanetli labirentin içinde kaybolmayı istemez).Dönüştürme projelerinde bol bol goto kullanılmış ise ne yapalım C# goto kullanmaktan başka çare var mı ?

kullanım ise çok kolay


if (intasd== 2 float.Parse(dPK.ToString()) > 0) goto cccccc;

cccccc:

işin ise bir püf noktası var bir bloktan çıkmak için en sona yazılamıyor(kim bloktan çıkmak için goto kullanır ki ). etiketten sonra biraz koda ihtiyacınız var belki 3+5=8; falan yazarsınız :)