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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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.

 

 

 


2 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 yanıt yazın

E-posta adresiniz yayınlanmayacak. 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