Anasayfa / Yazılım / C# / Dizi Uygulaması (Ortalama, Metot, Sınıf, Döngüler)

Dizi Uygulaması (Ortalama, Metot, Sınıf, Döngüler)

Bu yazımda bir dizi uygulaması gerçekleştirmek istiyorum. Şimdi basit bir uygulama olacağı için yine console üzerinde gerçekleştireceğim. Peki neler yapacağız?

10 elemanlı bir dizim olacak ve bu 10 elemanlı dizi içinde öğrenci notları saklanacak. Bu 10 notu programı çalıştırdığımda ekrana yazdıracağım. Daha sonra bu 10 notun ortalamasını yazacağım, en düşük notu yazacağım. En yüksek notu yazacağım. Daha sonra birde 10 lu aralıklar ile her not aralığından kaç tane var onu bulacağım. Yani diyelim ki 51-60 arası kaç not var, onu bulacağım. Bu işlemlerin hepsini ayrı bir sınıf içinde ve farklı metotlarda yapacağım. Yani aslında ben bu örneğimde basit dedim ama bir çok csharp yapısını bir arada kullanacağım. Hemen visual studio da yeni bir proje açıyorum. Console uygulaması açıyorum. Daha sonra Visual Studio Solution Explorer alanında proje adımda sağ tıklayıp yeni bir Class ekliyorum adını da NotDefteri verdim. Daha sonra NotDefteri sınıfım açıkken aşağıdaki kodları yazıyorum. Açıklamaları kod bloğumda veriyorum.

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

namespace ConsoleApplication22
{
    public class NotDefteri
    {
        //notları tutacağım int tipinde dizi oluşturuyorum.
        private int[] notlar;

        //auto-implemented property DersAdi oluşturuyorum.
        public string DersAdi { get; set; }

        //iki parametreli constructor oluşturuyorum.
        //auto-implemented property DersAdi ve NotlarDizisi
        public NotDefteri(string ad, int[] NotlarDizisi)
        {
            //DersAdi'ni ad'a set ediyorum
            DersAdi = ad;
            //NotlarDizisi çalıştırılır.
            notlar = NotlarDizisi;
        } //iki parametreli NotDefteri constructor burada sonlanıyor

        //Programda Hoşgeldin mesajımı buradaki MesajGoster metodum ile oluşturuyorum
        public void MesajGoster()
        {
            Console.WriteLine( "Not Defteri Programına Hoşgeldiniz \n{0}!\n", DersAdi);
        } // MesajGoster metodu sonu

        //Notlar üzerinde diğer işlemleri yapacğaım kodlarımı NotlariIsle metodumda yazıyorum
        //bu metot çalıştığında kendi içindeki metotları çağıracak ve işlemler gerçekleşecek
        public void NotlariIsle()
        {
            //Dizi halindeki notları listeleyeceğim metodum, sonra oluşturucam
            NotlariListele();

            //Notların ortalamasını alacağım ve ekrana yazdıracağım metot OrtalamaAlı çağırıyorum
            Console.WriteLine( "\nSınıf ortalaması {0:F}", OrtalamaAl() );

            //Notların minimum değerini ve maksimum değerini bulacağım metotları çağırıyorum
            Console.WriteLine( "En düşük not {0}\nEn yüksek not {1}\n", 
                MinimumNot(), MaksimumNot());

            //Not aralıklarındaki hangi aralıktan kaç not var göstereceğim metotu çağırıyorum
            NotAraliklari();
        }//NotlariIsle metodunun sonu

        //En düşük notu bulacak metodumu yazıyorum
        public int MinimumNot()
        {
            //notlar dizisinin 0. indeksindeki elemanı en düşük kabul edip DusukNot değişkenime
            //aktarıyorum
            int DusukNot = notlar[ 0 ];

            //Notlar dizisinde döngümü oluştuyorum
            foreach (int not in notlar)
            {
                //döngünün her adımındaki değeri DusukNot ile karşılaştırıyorum, 
                //eğer o adımdaki değer DusukNot değerinden küçük ise bu sefer o adımdaki değeri
                //DusukNot değerine aktarıyorum
                if (not < DusukNot)
                    DusukNot = not; // yeni DusukNot değerim
            } // foreach döngüsü sonu

            return DusukNot; // en düşük not değerini metot sonucu geri döndürüyorum
        } //MinimumNot metodu sonu

        //En Yüksek notu bulacak metodumu yazıyorum
        public int MaksimumNot()
        {
            //notlar dizisinin 0. indeksindeki elemanı en yüksek kabul edip YuksekNot değişkenime
            //aktarıyorum
            int YuksekNot = notlar[ 0 ];

            //Notlar dizisinde döngümü oluştuyorum
            foreach (int not in notlar)
            {
                //döngünün her adımındaki değeri YuksekNot ile karşılaştırıyorum, 
                //eğer o adımdaki değer YuksekNot değerinden büyük ise bu sefer o adımdaki değeri
                //YuksekNot değerine aktarıyorum
                if (not > YuksekNot)
                    YuksekNot = not; // yeni YuksekNot değerim
            } // foreach döngüsü sonu

            return YuksekNot; // en yüksek not değerini metot sonucu geri döndürüyorum
        } //MaksimumNot metodu sonu

        //Dizinin ortalamasını alacak metodumu yazıyorum
        public double OrtalamaAl()
        {
            //Dizideki değişkenlerin toplam değerini burada tutacağım
            int toplam=0;
            //notlar dizisinde olan her bir elemanı toplam değişkeni ile topluyoruz
            foreach (int not in notlar)
            {
                toplam += not;
            }
            //Geriye toplam değerinin dizinin eleman sayısına bölümü sonucu elde edilen
            //değeri döndürüyorum
            return (double) toplam / notlar.Length;
        } //OrtalamaAl metodunun sonu

        //NotAraliklari metodumu burada oluşturuyorum
        public void NotAraliklari()
        {
            Console.WriteLine("Not Dağılımı:");

            //YildizSayisi değişkenimde dizim içindeki notları inceleyerek hangi aralıkta 
            //kaç tane not var, onu sayacağım. Daha sonra bu sayı kadar yıldız ile gösterim 
            //yapacağım. Burada dikkat edilecek husus YildizSayisi adında int tipinde bir dizi
            //oluşturdum. Bu dizimin ilgili indeksinde ilgili not aralıklarını saklayacağım.
            int[] YildizSayisi = new int[11];

            //her bir not aralığı için ilgili YildizSayisi dizisindeki elemanlardan ilgili 
            //indeksin eleman sayısını arttırıyorum
            foreach (int not in notlar)
            {
                ++YildizSayisi[not / 10];
            }

            //Not aralıklarına göre Yıldız sayısını göstereceğim döngümü oluşturuyorum
            for (int sayac = 0; sayac < YildizSayisi.Length; sayac++)
            {
                if (sayac == 10)
                {
                    Console.Write(" 100: ");
                }
                else
                {
                    Console.Write("{0:D2}-{1:D2}: ", sayac * 10, sayac * 10 + 9);
                }

                for (int yildizlar = 0; yildizlar < YildizSayisi[sayac]; yildizlar++)
                {
                    Console.Write("*");
                }

                Console.WriteLine();

            }
        } //NotAraliklari metodumun sonu.

        //NotlariListele metodumu oluşturuyorum, 
        //tüm notları öğrenci öğrenci alt alta listeleyeceğim
        public void NotlariListele()
        {
            Console.WriteLine("Notlar:\n");

            //Her bir öğrenci notunu listeleyeceğim döngümüz.
            for (int ogrenci = 0; ogrenci < notlar.Length; ogrenci++)
            {
                Console.WriteLine("Öğrenci {0:0}: {1,3}", ogrenci+1, notlar[ogrenci]);
            }
        } //NotlariListele metodumun sonu

    } //NotDefteri sınıfımın sonu
}

Sınıfı yani classı oluşturduktan sonra program.cs dosyama geri dönüyorum. NotDefteri classını kullanarak işlem yapacağım. Kodlarım aşağıdaki şekilde, açıklamalarımı da kod satırına ekliyorum.

program.cs

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

namespace ConsoleApplication22
{
    class Program
    {
        static void Main(string[] args)
        {
            //Notları sakladığım tek boyutlu dizimi oluşturuyorum.
            int[] NotlarDizisi = { 45, 89, 90, 34, 65, 12, 78, 54, 98, 52 };

            NotDefteri BizimNotlar = new NotDefteri("Notları listeleme programı", NotlarDizisi);

            BizimNotlar.MesajGoster();
            BizimNotlar.NotlariIsle();

            Console.ReadLine();
        }
    }
}

Ekran görüntümüz aşağıdaki gibi olur.

2013033101

Uygulamayı aşağıdaki linkten indirebilirsiniz.

4 yorum

  1. Emeğine sağlık kardeşim. Sağolasın

  2. Bende teşekkür ederim.

Bir cevap yazın

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