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
😈 😈 😈 😈 🙄 🙄 🙄 🙄