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