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.
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