11 Nisan 2021 Pazar

c# - Diziler Tanımlanması ve Fonksiyonları

Merhaba, bugün sizlere temel anlamda c# diziler konusunu işleyeceğiz. Diziler bize  aynı tipte olan verileri sıralı bir şekilde tutmamızı sağlar. Örneğin haftanın günlerini bir dizi olarak düşünürsek İlk eleman (0. eleman) pazartesi son eleman ise (6. eleman) pazar günü olacaktır.

Bir yıldaki günleri de üç boyutlu bir dizi olarak düşünülebiliriz. 1. boyut Haftanın günleri, 2. boyut hafta numarası. 3.boyut da aylar olur.

c# Dizi Tanımlama (Oluşturma)


Tek boyutlu bir dizi tanımlamak istersek bunu iki farklı yöntemle yapabiliriz. Burada hangi şekilde dizi tanımlaması yapılacağı tamamen size kalmış bir konu istediğiniz yöntemi kullanabilirsiniz.

int[] sayilar= { 1,2,3,4,5 };

string[] gunler = {"Pazartesi","Salı","Çarşama","Perşembe","Cuma","C.tesi","Pazar"};

string[] aylar= new string[12];
gunler[0] = "Pazartesi";
gunler[1] = "Salı";
gunler[2] = "Çarşamba";
gunler[3] = "Perşembe";
gunler[4] = "Cuma";
gunler[5] = " C.tesi ";
gunler[6] = "Pazar";

Örnek: Haftanın Günlerini Listbox da Listelemek

For döngüsü kullanarak
private void button1_Click(object sender, EventArgs e)
        {
            string[] gunler = new string[7];
            gunler[0] = "Pazartesi";
            gunler[1] = "Salı";
            gunler[2] = "Çarşamba";
            gunler[3] = "Perşembe";
            gunler[4] = "Cuma";
            gunler[5] = "Cumartesi";
            gunler[6] = "Pazar";

            for (int i = 0; i < gunler.length; i++)
            {
                listBox1.Items.Add(gunler[i]);
            }
        }
Foreach döngüsü kullanarak
private void button1_Click(object sender, EventArgs e)
        {
            string[] gunler = new string[7];
            gunler[0] = "Pazartesi";
            gunler[1] = "Salı";
            gunler[2] = "Çarşamba";
            gunler[3] = "Perşembe";
            gunler[4] = "Cuma";
            gunler[5] = "Cumartesi";
            gunler[6] = "Pazar";

            foreach (string i in gunler)
            {
               listBox1.Items.Add(i);
            }
       }
c# - Diziler haftanın günleri uygulaması

Çok Boyutlu Diziler


Birden fazla boyutu olan dizilere çok boyutlu diziler denmektedir. Çok boyutlu dizilerin tanımlanmaları aşağıdakiler gibidir.

int[,] mdizi = { { 1, 2 }, { 3, 4 }, { 5, 6 } };

int[,] mdizi = new int[3, 2];
mdizi[0, 0] = 1;
mdizi[0, 1] = 2;
mdizi[1, 0] = 3;
mdizi[1, 1] = 4;
mdizi[2, 0] = 5;
mdizi[2, 1] = 6;

Örnek: 4 satır 3 sütun bir matris oluşturma


private void button1_Click(object sender, EventArgs e)
        {
            int[,] mdizi = new int[4, 3];

            for(int i = 0; i < 4; i++)
                {
                for (int j = 0; j < 3; j++)
                    {
                    mdizi[i, j] = i + 1;
                    }
             }
}

c# - Diziler matris oluşturma


Array Sınıfı ve Dizi Fonksiyonları


Array sınıfını kullanarak c# da oluşturulan diziler üzerinde çeşitli sıralamalar yapabiliriz. Bu dizi fonksiyonlar aşağıdaki gibidir.

Array.Sort(Haftalar) // Haftalar dizisini küçükten büyüye sıralar. Karakter ise alfabetik olarak. 
Array.Reverse(Haftalar) // Haftalar dizisini ters çevirip sıralar.
Array.Indexof(Haftalar, 3) // Haftaların dizisinin 3. elemanını (Perşembe) verir.
Array.Copy(haftalar,haftalar2) //Haftalar dizisini haftalar2 dizisine kopyalar.
Array.Clear(Haftalar) // Haftalar dizisinin içerisini siler.

2 Şubat 2021 Salı

c# - Bekletme Ekranı Oluşturma (Splash Screen)

c# - Bekletme Ekranı Oluşturma (Splash Screen)

Merhaba bugün sizlerle c# dilini kullanarak yapmış olduğum bir bekletme ekranı (Splash Screen) projesini paylaşıyorum. Özellikle otomasyon gibi büyük projelerinize bekletme, yüklenme ekranı oluşturarak şık ve profesyonel bir hava katabilirsiniz. Bekletme ekranına açılış formunda yapmanız gerekmekte. Ayrıca bu form üzerinde çeşitli özellik (properties) ayarlamaları bulunuyor. 

Form Tasarımı


Projemize 2 adet panel ekliyoruz eklediğimiz panellerin Dock özellikleri bottom yapıyoruz bu şekilde yatay olarak formun altına sabitleniyor. Diğer paneli de aynı şekilde yapıyoruz fakat bu panelin genişliği başlangıçtaki değere göre yapılmalıdır. Aktif olarak ilerleyecek panel budur ve form genişliğine eşit olduğunda yeni formumuza geçiş yapılacaktır. 

Giriş adında yeni bir form ekledim, bekletme ekranı tamamlandığında otomatik olarak bu form açılıyor.


Özellikler (Properties) Ayarları

Form

  • FormBorderStyle: None // Formumuzun kenarlıklarını kaldırır.
  • StartPosition: CenterScreen // Formumuzun ekranın ortasında açılmasını sağlar.
  • ShowInTaskBar Özelliğin form simgemizin görev çubuğunda görülüp görülmeyeceğini gösterir. Bu değeri istiyorsak true istemiyorsak false olarak ayarlayabiliriz.

Panel

  • Dock: Bottom // Panelin formun altına konumlanmasını sağlar.
  • Enabled: True // Timer nesnesinin program çalıştırıldığında aktif olmasını sağlar.

Timer

  • Interval: 15// Timer'ın kaç salisede bir çalışacağını gösterir bu değeri istediğiniz bir değer yapabilirsiniz. Burada bulunan değer ne kadar fazla olursa o kadar hızlı yüklenip diğer formumuza geçecektir. 

Kodlar


Timer içine yazılması gereken kodlar:
private void timer1_Tick(object sender, EventArgs e)
        {
            panel2.Width += 1; // Timer her çalıştığında panel 2 genişliği artar.
            if (panel2.Width >= 680) // Form genişliği değerine ulaştığı durumda.
            {
                timer1.Stop(); // Sayacımızı durdurduk.
                giris f2 = new giris(); // yeni formu f2 adında tanıttık.
                f2.Show();    // Yeni formu Ekrana gösterir.
                this.Hide();  // Mevcut formu gizler.
            }
             
        }

Tüm işlev eklediğimiz timer nesnesi üzerinden yapıldığında ekstra bir koda gerek duymadık.

Çeşitli yazılım dilleriyle yapmış olduğum diğer projelere ulaşmak için tıklayın.

28 Temmuz 2020 Salı

c# - Sayı Tahmin Etme Oyunu

Merhaba, bugün c# ile yapmış olduğum bir sayı tahmin oyununu sizlerle paylaşıyorum. İsteyen arkadaşlar daha ileri seviyede geliştirebilir veya projelerinde kullanabilir. Form yüklendiğinde arka planda belirlenen 0 ile 1000 arasındaki sayıyı 10 denemede tahmin etmek. Sayıyı bulmayı kolaylaştırmak için bulunmak istenen sayının tahminlere göre hangi aralıkta olduğu veriliyor. 10 hak içerisinde sayı tahmin edilmediğinde veya sayı doğru bilindiğinde mesaj ekranı gelmekte daha sonra oyun yeni bir rastgele sayı tutulup tekrar başlamakta.

Ekran Görüntüsü:

c# sayı tahmin oyunu -1
















Çalışma Görüntüsü:

c# sayı tahmin oyunu -2
Aranan sayının 110 ile 125 arasında bir sayı olduğu görülüyor.


















Kodlar:

   
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;

namespace number_guessing_game
{
    public partial class Form1 : Form
    {
        Random rastgele = new Random();
        int tahmin, sayi;
        int hak = 10;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            //ozgurcyaman.com
            tahmin = Convert.ToInt32(textBox1.Text);

            if (tahmin == sayi) 
            {
                MessageBox.Show("Tebrikler " + hak.ToString() + ". 
                hakkınız varken bildiniz");
                hak = 10;
                label1.Text = "0";
                label5.Text = "1000";
                label6.Text = "Kalan hak: 10";
                textBox1.Text = "";

            }

            else if (tahmin < sayi) 
            {
                hak--;
                label1.Text = tahmin.ToString();
                label6.Text = "Kalan hak: " + hak.ToString();
                textBox1.Focus();
                textBox1.Text = "";

            }
            else if (tahmin > sayi)
            {
                hak--;
                label5.Text = tahmin.ToString();
                label6.Text = "Kalan hak: " + hak.ToString();
                textBox1.Focus();
                textBox1.Text="";

            }
            if (hak == 0)
            {
                MessageBox.Show("Tüm haklarınız bitti kaybettiniz, 
                doğru sayi: " + sayi.ToString());
                sayi = rastgele.Next(1001);


            }
         
        }

        private void button2_Click(object sender, EventArgs e)
        {
            sayi = rastgele.Next(1001);
            hak = 10;
            label1.Text = "0";
            label5.Text = "1000";
            label6.Text = "Kalan hak: 10";
            textBox1.Focus();
            textBox1.Text = "";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
            sayi = rastgele.Next(1001);
            label6.Text = "Kalan hak: " + hak.ToString();

           

        }
    }
}

Daha önce paylaşmış olduğum c# ile kronometre uygulaması için tıklayın 
Daha önce paylaşmış olduğum c# ile çarpım sonucu bulma oyunu için tıklayın

15 Haziran 2020 Pazartesi

c# - Kronometre Uygulaması

C# dile ile kronometre uygulamasının programlanması, bu uygulama istenildiğinde başlatılıp durdurulabilecek ve istenilen sayıların kayıtları tutulabilecek şekilde tasarlanmıştır.

Tasarım görüntüsü:

Kronometre uygulaması ozgurcyaman.blogspot.com

Çalışma Görüntüsü:




Kodlar:

   
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;

namespace Kronometre
{
    public partial class Form1 : Form
    {
        int sayi = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;

        }

        private void timer1_Tick(object sender, EventArgs e)
        {

            sayi++;

            label1.Text = sayi.ToString();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;

        }

        private void button3_Click(object sender, EventArgs e)
        {
            label2.Text = label1.Text;
        }
    }
}

c# - Çarpım Sonucu Bulma Oyunu

Bugün c# dili ile birlikte basit bir oyun yapıyoruz. Oyunun amacı rastgele olarak gelen iki sayının çarpım sonucunu 10 saniye içerisinde bilmek, pas butonu ile gelen iki rastgele sayı değişebiliyor. 10 saniye içerisinde tahmin yapılmadığında veya yanlış tahmin yapıldığında program otomatik olarak kapanıyor.

Tasarım Görüntüsü:

Çarpım sonucu bulma oyunu ozgurcyaman.blogspot.com


Kodlar:
   
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;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int sonuc=0, sayi1=0, sayi2=0, tahmin, sayac=10;

        private void button2_Click(object sender, EventArgs e)
        {
            Random x = new Random();

            sayi1 = x.Next(1, 100);
            sayi2 = x.Next(1, 100);

            label1.Text = sayi1.ToString();
            label3.Text = sayi2.ToString();

            timer1.Enabled = true;
            sayac = 10;
            label5.Text = sayac.ToString() + " Saniyeniz kaldı";
            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            sayac--;
            label5.Text = sayac.ToString()+" Saniyeniz kaldı";
            if (sayac==0)
            {
                timer1.Enabled = false;
                MessageBox.Show("Süreniz Bitti Kaybettiniz");
                this.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tahmin = Convert.ToInt32(textBox1.Text);
            sonuc = (sayi1 * sayi2);
            if (tahmin==sonuc)
            {
                timer1.Enabled = false;
                MessageBox.Show("Tebrikler " + sayac.ToString() + " saniye kala bildiniz");
                this.Close();
            }
            else
            {
                timer1.Enabled = false;
                MessageBox.Show("Maalesef bilemediniz doğru cevap: " + sonuc.ToString());
                this.Close();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Random x = new Random();
            
            sayi1 = x.Next(1, 100);
            sayi2 = x.Next(1, 100);

            label1.Text = sayi1.ToString();
            label3.Text = sayi2.ToString();

            timer1.Enabled = true;
            label5.Text = sayac.ToString() + " Saniyeniz kaldı";
        }
    }
}