C# – Geometrik Şekil Hesaplamaları – Class denemeleri

Oğlum sebebiyle bir kaç gün dinlendikten sonra tekrar kaldığım yerden devam etmek üzere kolları sıvadım. Tek başına öğrenmenin insan üzerinde baskı oluşturmama gibi rahatlatıcı bir etkisi var. Kritik konu dağılmamak, dağılınca toparlanmak cidden zor oluyor.

Bu akşam kendime verdiğim bir kaç ödevi bir arada çıkartmak üzere denemeler yaptım. Son düzlükte hem Math sınıfı üzerinden , hem class yapılarını, hemde constructor çalışmasını bir arada yapmış oldum. Java’dan miras olduğunu düşündüğüm getter-setter yapısı biraz duraksamama sebep olsa da, gene konuyu hızlıca geçebildim.

Temel amacım olan bu sürecin paylaşımı ile ilgili en temel konuyu paylaşmadığımı farkettim; Kaynak! Sayfamın sağ tarafında (sidebar) bulunan Takip ettiğim Gruplar altında Tutorials Point üzerinden C# öğrenmeye çalışmaktayım. Şöyle bir PDF’leri de var : LINK

 

Programda main metodunun bulunduğu ana dosyamızın dışında harici 3 dosya – sınıf kullandım : Daire, Kare, Dikdörtgen. Bunları sırasıyla paylaşayım;

program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

/*
 * Hakan Müştak @ 2014
 * hmustak@gmail.com - www.mustak.org
 */

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool tekrar = true;
            Console.Title = "Hakan Müştak@2014";

            do
            {
                //Konsolu Temizle
                Console.Clear();
                //Hesap yapacağımız bileşeni seçelim (Daire, kare..vs)
                switch (bilesenSecimi()) // Seçim ayrı bir metod içinde yapılıyor, çıktısı buraya dönüyor
                {
                    case 1: daire();
                        break;
                    case 2: kare();
                        break;
                    case 3: dikdortgen();
                        break;
                    default:
                        Console.WriteLine("\n*** Hatalı giriş yaptınız ***\n");
                        bekle(2500);
                        tekrar = false;
                        break;
                }//switch-case

                yeniSatır(); //Boş satır ekle

                //Uygulamayı tekrar deneme ister mi?
                Console.Write("Tekrar denemek için herhangi bir tuşa basınız,\nUygulamadan çıkmak için [Q] harfine basınız ");
                string cevap = Console.ReadLine();// bu gibi girişlere try-catch konmalı 
                //Cevabı biraz sindirsin, bekletelim
                bekle(700);
                //Cevabın sonucunun değerlendirilmesi
                tekrar = (cevap == "Q") || (cevap == "q") ? false : true; //true ise false, false ise true dönüyor :))
                
            } while (tekrar);


        }//Main Class

//--------------------------------------------------------------------------------------
        //Giriş bileşen seçimi
        static int bilesenSecimi()
        {
            //Seçim listesi
            separator(); // ayıraç yatay çizgi - hr
            Console.WriteLine("Konsol üzeri Antremanları - Geometrik Şekil Hesaplamaları");
            separator(); // ayıraç yatay çizgi - hr
            Console.WriteLine("(1) Daire");
            Console.WriteLine("(2) Kare");
            Console.WriteLine("(3) Dikdörtgen");
            separator(); // ayıraç yatay çizgi - hr
            Console.Write("Lütfen hesap yapmak istediğiniz bileşeni seçin : ");
            //Hatalı giriş için kontrol
            try
            {
                return Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception)
            {
                Console.WriteLine("\nHatalı giriş yapıldı..!\n");
                bekle(1500);
                Console.Clear();
                bilesenSecimi();
            }

            return 0;

        }//bilesenSecimi()

//--------------------------------------------------------------------------------------
        //Daire çağırımı
        static void daire()
        {
            Console.Clear();//Ekranı temizle
            Console.WriteLine("Daire Hesaplama");
            separator(); // ayıraç yatay çizgi - hr
            Console.Write("Lütfen Dairenizin yarıçapını (radius) girin : ");
            //Hatalı giriş için kontrol
            try
            {
                double radius = Convert.ToDouble(Console.ReadLine()); // yarıçap girişi
                Daire d = new Daire(radius); //daire sınıfını çağıralım
                yeniSatır(); //Boş satır ekle
                Console.WriteLine("Radius : {0:.00}\nCevre : {1:.00} - Alan : {2:.00}",
                    d.radius, d.cevre(), d.alan()); //yarıçapa göre sınıf içindeki metodların çıktılarını burada ekrana basıyoruz
                separator(); // ayıraç yatay çizgi - hr
            }
            catch (Exception)
            {
                Console.WriteLine("\nHatalı giriş yapıldı..!\n");
                bekle(1500);
                Console.Clear();
                daire();
            }

        }

//--------------------------------------------------------------------------------------
        //Kare çağırımı
        static void kare()
        {
            Console.Clear();//Ekranı temizle
            Console.WriteLine("Kare Hesaplama");
            separator(); // ayıraç yatay çizgi - hr
            Console.Write("Lütfen Karenizin bir kenar uzunluğunu girin : ");
            //Hatalı giriş için kontrol
            try
            {
                double kenar = Convert.ToDouble(Console.ReadLine());// bu gibi girişlere try-catch konmalı 
                Kare k = new Kare(kenar);//kare sınıfını çağıralım
                yeniSatır(); //Boş satır ekle
                Console.WriteLine("Bir kenar uzunluğu : {0:.00}\nCevre : {1:.00} - Alan : {2:.00} - Kosegen : {3:.00}", 
                    k.kenar,k.cevre(),k.alan(),k.kosegen()); //kenara göre sınıf içindeki metodların çıktılarını burada ekrana basıyoruz
                separator(); // ayıraç yatay çizgi - hr
            }
            catch (Exception)
            {
                Console.WriteLine("\nHatalı giriş yapıldı..!\n");
                bekle(1500);
                Console.Clear();
                kare();
            }
        
        
        }

//--------------------------------------------------------------------------------------
        //Dikdörtgen çağırımı
        static void dikdortgen()
        {
            Console.Clear();//Ekranı temizle
            //Kenarların uzunluklarını belirle
            Console.WriteLine("Dikdörtgen Hesaplama");
            separator(); // ayıraç yatay çizgi - hr
            Console.Write("Lütfen Dikdörgenin ilk kenar uzunluğunu girin : ");
            //Hatalı giriş için kontrol
            try
            {
                double kisaKenar = Convert.ToDouble(Console.ReadLine());// bu gibi girişlere try-catch konmalı 
                Console.Write("Lütfen Dikdörgenin ikinci kenar uzunluğunu girin : ");
                double uzunKenar = Convert.ToDouble(Console.ReadLine());// bu gibi girişlere try-catch konmalı 
                yeniSatır(); //Boş satır ekle
                Dikdortgen dd = new Dikdortgen(kisaKenar, uzunKenar);//dikdörtgen sınıfını çağıralım
                Console.WriteLine("Kısa kenar uzunluğu : {0:.00} - Uzun kenar uzunluğu : {1:.00} \nCevre : {2:.00} - Alan : {3:.00} - Kosegen : {4:.00}",
                    dd.kisaKenar, dd.uzunKenar, dd.cevre(), dd.alan(), dd.kosegen());//kenarlara göre sınıf içindeki metodların çıktılarını burada ekrana basıyoruz
                separator(); // ayıraç yatay çizgi - hr
            }
            catch (Exception)
            {
                Console.WriteLine("\nHatalı giriş yapıldı..!\n");
                bekle(1500);
                Console.Clear();
                dikdortgen();
            }

        }


//--------------------------------------------------------------------------------------
        //Destek metodlar
        //Separator - Ayırıcı çizgi : Göz yorgunluğu için iyi geliyor 
        static void separator()
        {
            Console.WriteLine("---------------------------------------------------------");
        }
        //Yenisatır - Enter - NewLine
        static void yeniSatır()
        {
            Console.WriteLine();
        }
        //Bekle - wait
        static void bekle(int sure)
        {
            Thread.Sleep(sure);
        }


    }//class
}//namespace

 

Daire.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*
 * Hakan Müştak @ 2014
 * hmustak@gmail.com - www.mustak.org
 */

namespace ConsoleApplication1
{
    class Daire
    {
        //Sabitler
        private const double PI = Math.PI; //Pi sabiti
        //Değişkenler
        private double myRadius; //Yarıçap

        //Getter-Setter
        public double radius
        {
            get { return myRadius; }
            set { myRadius = value; }
        }

        //Constructor
        public Daire(double yaricap)
        {
            radius = yaricap;
        }


        //Cevre hesaplama
        public double cevre()
        {
            return ( 2 * PI * radius );
        }

        //Alan Hesaplama
        public double alan()
        {
            return (PI * Math.Pow(radius,2) );
        }


    }//Class
}//namespace

 

Kare.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*
 * Hakan Müştak @ 2014
 * hmustak@gmail.com - www.mustak.org
 */

namespace ConsoleApplication1
{
    class Kare
    {
        //Değişkenler
        private double myKenar; //Kenar uzunluğu

        //Getter-Setter
        public double kenar
        {
            get { return myKenar; }
            set { myKenar = value; }
        }

        //Constructor
        public Kare(double gelenkenar)
        {
            kenar = gelenkenar;
        }

        //Çevre Hesaplama
        public double cevre(){
            return ( 4 * kenar);
        }

        //Alan Hesaplama
        public double alan()
        {
            return ( Math.Pow(kenar, 2) );
        }
        
        //Köşegen Hesaplama
        public double kosegen()
        {
            return ( Math.Sqrt( 2 * Math.Pow(kenar, 2) ) );
        }

    }
}

 

Dikdörtgen.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*
 * Hakan Müştak @ 2014
 * hmustak@gmail.com - www.mustak.org
 */

namespace ConsoleApplication1
{
    class Dikdortgen
    {
        //Değişkenler
        private double myKisaKenar;
        private double myUzunKenar;

        //Getter-Setter
        public double kisaKenar
        {
            get { return myKisaKenar; }
            set { myKisaKenar = value; }
        }
        
        public double uzunKenar
        {
            get { return myUzunKenar; }
            set { myUzunKenar = value; }
        }

        //Constructor
        public Dikdortgen(double kkenar, double ukenar)
        {
            kisaKenar = kkenar;
            uzunKenar = ukenar;
        }

        //Çevre
        public double cevre()
        {
            return ( 2 * ( kisaKenar + uzunKenar ) );
        }

        //Alan
        public double alan()
        {
            return ( kisaKenar * uzunKenar );
        }

        //Köşegen Hesaplama
        public double kosegen()
        {
            return ( Math.Sqrt(Math.Pow(kisaKenar, 2) + Math.Pow(uzunKenar, 2)));
        }


    }
}

 

Olumlu/olumsuz eleştrilere açık olduğumu belirteyim 🙂

Herkese iyi çalışmalar
Hakan Müştak ☯ 2014/10

28/10/2014 : Aldığım bir öneri/eleştriye istinaden şunu ekleyeyim. Paylaştıklarım geliştirilen bir proje olmadığı, tamamen antreman için yaptığım çalışmaların paylaşımı olduğu için, GIT üzerinde olması bana manasız geliyor. Harddiskimde duracağına burada birilerine fayda sağlar diye paylaşıyorum.

 

 

 

   

1 yorum

  1. Mehmet dedi ki:

    Size bir soru bir dairenin içine kaç daire daha koyabiliriz desem bunun yazılımı nasıl olur ilk önce dairenin çevresini giricez sonra içine kaç tane daire daha koyabiliriz onu söylücek

Bir Cevap Yazın

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

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top