Alıştırma - Hayvanlarımız dizisi verilerini görüntülemek için kod yazın

Tamamlandı

Bu alıştırmada, ourAnimals dizi bilgilerini görüntülemek için kullanılan iç içe döngü yapısını ve seçim kodu bloğunu yazacaksınız. Bu alıştırma sırasında tamamladığınız ayrıntılı görevler şunlardır:

  1. Dış döngü: ourAnimals dizisindeki hayvanlar arasında tekrarlayan dış döngüyü oluşturun.
  2. Veri denetimi: Mevcut evcil hayvan verilerini denetleen ve evcil hayvan için veriler varsa evcil hayvan kimliğini görüntüleyen kod yazın.
  3. İç döngü: Veri atanmış evcil hayvanlar için tüm evcil hayvan özelliklerini görüntüleyen bir iç döngü oluşturun.
  4. Doğrulama testi: Bu alıştırmada geliştirdiğiniz kod için doğrulama testleri gerçekleştirin.

Önemli

Bu alıştırmaya başlamadan önce bu modüldeki önceki alıştırmayı tamamlamanız gerekir.

OurAnimals adlı dizide yineleme yapmak için bir döngü oluşturun

Bu görevde, for dizisindeki hayvanlarda yineleme yapmak için kullanılan dış ourAnimals döngüsünü oluşturursunuz. Dizinizin boyutlarıyla döngünüzün parametreleri arasındaki ilişkiyi incelersiniz for . Ayrıca, çok boyutlu dizilerle çalışırken for deyimlerini ve foreach deyimlerini kullanma arasındaki farkları göz önünde bulundurabilirsiniz.

  1. Visual Studio Code'un açık olduğundan ve Program.cs dosyanızın Düzenleyici'de göründüğünden emin olun.

  2. Seçim deyiminin kod bloğunun switch(menuSelection) içinde aşağıdaki kod satırlarını bulun:

    case "1":
        // List all of our current pet information
        Console.WriteLine("this app feature is coming soon - please check back to see progress.");
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    
  3. Console.WriteLine()"Çok yakında" iletisini görüntülemek için kullanılan deyimi silin ve kod açıklama satırının // List all of our current pet information altında boş bir kod satırı bırakın.

    Geri bildirim iletisine gerek yoktur çünkü dizinin içeriğini ourAnimals görüntüleyeceksiniz. Diğer menü seçimlerine karşılık gelen kodu geliştirirken, bu geri bildirim iletileri de güncelleştirilir.

    şu iletiyi bırakın: Press the Enter key to continue.

  4. Oluşturduğunuz boş kod satırından başlayarak aşağıdaki gibi bir for deyim başlatın:

    for ()
    {
    }
    
  5. Bu for ifadeyle ne elde etmeniz gerektiğini düşünmek için bir dakika ayırın.

    Bir for deyiminin yinelemeleri nasıl uyguladığını denetleyen üç bölümü olduğunu hatırlayın: for initializer; for condition ve for yineleyici. başlatıcı için, koşul için, ve yineleyici için atanan değerler, for ifadesiyle elde etmeniz gerekenlere göre belirlenir.

    Bu durumda, for döngüsü, ourAnimals dizinde yinelemek için kullanılır. Dizilerin sıfırdan başladığını, yani n öğeye sahip bir dizinin 0 ile n-1 arasında indekslendiğini biliyorsunuz. Dizinin boyutlarıyla eşleşmesi için başlatıcıya, koşula ve yineleyiciye ihtiyacınız var. Bu durumda, döngünün for'da başlayıp, 0 artarak, ve 1'te bitmesini istersiniz.

    Diziniz ourAnimals şu şekilde bildirilir: string[,] ourAnimals = new string[maxPets, 6];. Atanan maxPets değerin olduğunu 8biliyorsunuz. Bu bildirimde, maxPets dizideki öğelere başvurmak için kullandığınız sıfır tabanlı dizin numarasını değil, dizinin ilk boyutundaki öğe sayısını belirtir. Bu nedenle, dizi indeks numaraları maxPets = 8 ile 0 arasında değişir.

  6. Döngünüzün for denetim değerini belirtmek için kodunuzu aşağıdaki gibi güncelleştirin:

    for (int i = 0; i < maxPets; i++)
    {
    }
    

    Gördüğünüz gibi, for başlatıcısının ayarını int i = 0; sıfır tabanlı dizi dizini ile hizalamak. Benzer şekilde, koşului < maxPets; ayarlamak dizinin ilk boyutuyla hizalanır. Son olarak, iteratörüi++ olarak ayarlamak, her yinelemede döngü kontrol değerinizi 1 artıracaktır.

  7. ourAnimals dizisinde yineleme yaparken for ve foreach ifadeleri arasında seçim yapmayı düşünecek bir dakika ayırın.

    Amaç, ourAnimals dizisindeki her bir hayvanın üzerinden teker teker geçmektir. Peki neden bir foreach döngüsü kullanmıyorsunuz? Sonuçta, foreach ifadesinin bir dizideki her bir öğeye tekrarlamak istediğiniz durumlar için tasarlandığını biliyorsunuz.

    Bu durumda foreach döngüsünü kullanmama nedeniniz, ourAnimals dizisinin çok boyutlu bir dizi olmasıdır. Çok boyutlu bir dize dizisi olduğundan ourAnimals , içinde ourAnimals yer alan her öğe dize türünde ayrı bir öğedir. Eğer bir foreach döngüsü kullanarak bir ourAnimals üzerinde yineleme yaptıysanız, foreach her bir dizeyi 48 dize öğesi (8 x 6 = 48) içeren bir listede ayrı bir öğe olarak tanır. deyimi foreach iki dizi boyutunu ayrı olarak işlemez. Başka bir deyişle, bir foreach döngü, her satırın bir öğe sütunu içerdiği 8 dize öğeleri satırlarını tanımaz6. Tek seferde bir hayvanla çalışmak ve tek bir yineleme sırasında altı hayvan özelliğinin tamamını işlemek istediğiniz için, bir foreach ifade doğru seçim değildir.

    Ancak, ourAnimals dizisi string dizileri olarak yapılandırılmış bir düzensiz diziyse, foreach ifadesini kullanabilirsiniz. Bir dış döngü için bir foreach ve bir iç döngü için ikinci foreach oluşturursunuz. Dış döngü, girintili dizideki "dize dizisi" öğeleri üzerinde ilerler. Dize dizileri, iki boyutlu dizideki "satırlardır". İç döngü, dize dizilerinde bulunan "dize" öğeleri aracılığıyla yinelenir. Dize dizilerindeki dize öğeleri, iki boyutlu dizideki "sütunlar"dır.

    Aşağıdaki kod örneği, pürüzlü dizi yaklaşımını gösterir.

    string[][] jaggedArray = new string[][]
    {
        new string[] { "one1", "two1", "three1", "four1", "five1", "six1" },
        new string[] { "one2", "two2", "three2", "four2", "five2", "six2" },
        new string[] { "one3", "two3", "three3", "four3", "five3", "six3" },
        new string[] { "one4", "two4", "three4", "four4", "five4", "six4" },
        new string[] { "one5", "two5", "three5", "four5", "five5", "six5" },
        new string[] { "one6", "two6", "three6", "four6", "five6", "six6" },
        new string[] { "one7", "two7", "three7", "four7", "five7", "six7" },
        new string[] { "one8", "two8", "three8", "four8", "five8", "six8" }
    };
    
    foreach (string[] array in jaggedArray)
    {
        foreach (string value in array)
        {
            Console.WriteLine(value);
        }
        Console.WriteLine();
    }
    

    Contoso Pets uygulaması için, çok boyutlu dize dizisini ve iç içe for döngüleri kullanmak, pürüzlü dizi ve iç içe foreach döngüler yerine muhtemelen daha kolaydır. Artık her seçeneğin nasıl çalıştığını gördüğünüze göre, gelecekteki kodlama projelerinde kendi seçiminizi yapabilirsiniz.

  8. Visual Studio Code Dosyası menüsünde Kaydet'i seçin.

  9. Visual Studio Code'da Tümleşik Terminal panelini açın ve Programınızı derleyin komutunu girin.

    EXPLORER görünümünden Terminali Tümleştir'i açmak için Başlatıcı'ya sağ tıklayın ve Tümleşik Terminalde Aç'ı seçin. Tümleşik Terminal panelini açmak için Görünüm veya Terminal menüsünü de kullanabilirsiniz.

    Programınızı oluşturmak için Terminal komut isteminden komutunu girin dotnet build .

  10. Devam etmeden önce bildirilen derleme hatalarını veya uyarılarını düzeltin.

    Derleme hatası ve uyarı iletilerinin sorunun ne olduğunu ve nerede bulabileceğinizi size bildirdiğini unutmayın. Sorunları çözerken, kodunuzun üst kısmında oluşan sorunlarla başlayıp aşağı doğru çalışmak en iyisidir.

  11. Terminal panelini kapatın.

Mevcut evcil hayvan verilerini ve görüntüleme sonucunu denetleyin

Bu görevde, if dizisinde evcil hayvan özellikleri verileri atanmış her evcil hayvanı bulmak için bir ourAnimals deyimi kullanacaksınız. Atanmış verilere sahip bir evcil hayvan bulunduğunda petID değerini görüntülersiniz. Veri atanmadığında hiçbir şey görüntülenmez. for ve if ifadelerinizin düzgün çalıştığını doğrulamak için kodu çalıştırırsınız.

  1. Kod bloğunuzdaki for ifade içinde aşağıdaki gibi boş bir kod satırı oluşturun:

    for (int i = 0; i < maxPets; i++)
    {
    
    }    
    
  2. Evcil hayvan kimliği verilerini denetleen bir if deyim oluşturmak için kodunuzu aşağıdaki gibi güncelleştirin:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
        }
    }    
    
  3. Bu if deyimin neyi ve neden değerlendiriyor olduğunu göz önünde bulundurmak için bir dakika bekleyin.

    İlk olarak, ifadenin sol tarafını göz önünde bulundurun: ourAnimals[i, 0]. İncelenen hayvanı belirtmek için döngü kontrol değişkeninin i kullanıldığına dikkat edin. Hatırlayacağınız gibi, 0 in [i, 0] özelliğine petID karşılık gelir. Dizinin ilk boyutu hayvanın "sayısına" karşılık olduğundan, ifadenin bu tarafı kodunuzun dizideki her hayvan için atanan petID değeri denetlemesini sağlar.

    İkincisi, karşılaştırma işleci seçimini göz önünde bulundurun. eşit olmayan işlecinin !=kullanıldığına dikkat edin. ifadesi, petID'ye atanan değer, denklemin sağ tarafında listelenen değere eşit olmadığı zaman true olarak değerlendirilir.

    Üçüncüsü, denklemin sağ tarafındaki değeri göz önünde bulundurun. statik dize değerinin kullanıldığına "ID #: " dikkat edin. Bu, örnek veriler oluşturulduğunda atanan petID varsayılan değerdir. Özellikler bir hayvana atandığında, petID değer güncelleştirilir ve varsayılan değere EŞIT DEĞİlDİr.

    Bu, şu anki hayvanın tanımlanmış özelliklere sahip olduğu zaman if ifadesinin kod bloğunun çalıştırılacağını belirtir.

    Uyarı

    Bu, ne zaman != kullanılması gerektiğine yönelik iyi bir örnektir. Varsayılan değer olmadığı sürece hangi değere petID atandığı sizin için önemli değildir.

  4. Bir Console.WriteLine() yöntemi oluşturmak için kodunuzu aşağıdaki şekilde güncelleyin; bu yöntem petID deyiminin kod bloğunda if’i görüntüler.

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
        }
    }    
    

    Bir dizinin bir öğesinin, WriteLine() yöntemi çağrıldığında bir argüman olarak kullanılabileceğini fark edin.

  5. Visual Studio Code Dosyası menüsünde Kaydet'i seçin.

  6. Tümleşik Terminal panelini açın ve programınızı derlemek için komutunu girin.

  7. Devam etmeden önce bildirilen derleme hatalarını veya uyarılarını düzeltin.

  8. Terminal komut isteminde, programınızı çalıştırmak için komutunu girin.

    dotnet run Program kodunuzu çalıştırmak için Terminal komut isteminde komutunu girin.

    Kodunuz bir çalışma zamanı hatası oluşturuyorsa, hataları düzeltin, güncelleştirmelerinizi kaydedin ve uygulamayı yeniden başlatın.

  9. Terminal komut isteminde, yeni kod mantığınızın beklendiği gibi çalıştığını doğrulamak için 1 girin

    Aşağıdaki petID değerlerin görüntülendiğini görmeniz gerekir:

    ID #: d1
    ID #: d2
    ID #: c3
    ID #: c4
    Press the Enter key to continue.
    

    Bu kimlikler, veri atamış evcil hayvanlara karşılık gelir.

    Menü seçeneği 1'i seçtiğinizde kodunuz farklı bir çıktı veriyorsa, kodunuzu gözden geçirin ve güncelleyin. Güncelleştirmeleri yaptıktan sonra Program.cs dosyanızı kaydetmeniz gerektiğini unutmayın.

  10. Uygulamadan çıkın ve terminal panelini kapatın.

Veri atanmış evcil hayvanlar için tüm evcil hayvan özelliklerini görüntüleme

Bu görevde, geçerli evcil hayvanın tüm özelliklerini görüntülemek için kullanılan for deyim kodu bloğunun içinde bir if döngü oluşturursunuz.

  1. Kod Düzenleyicisi'nde, Program.cs dosyanızda aşağıdaki kod satırlarını bulun:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
        }
    }    
    
  2. for Her evcil hayvanın özellikleriyle yinelenecek döngü oluşturmak için kodunuzu aşağıdaki gibi güncelleştirin:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
            for (int j = 0; j < 6; j++)
            {
            }
        }
    }    
    

    İlk for döngünün kod bloğunun içine "iç içe" yerleştirilmiş ikinci for bir döngüye sahip olduğunuzu fark edersiniz. Bildiğiniz gibi, dış döngü ourAnimals dizisindeki hayvanlar üzerinde yinelenir. Amaç, iç döngünün her bir hayvanın özellikleri aracılığıyla yinelemesi içindir. Hayvan verileri çok boyutlu bir dizide depolandığından, hayvan özelliklerine erişmek kolay olacaktır.

  3. Girdiğiniz for beyânı gözden geçirmek için bir dakikanızı ayırın.

    Döngü denetim değişkeninin adlı jolduğuna dikkat edin. Döngüleri iç içe for yerleştirdiğinizde, geleneksel yaklaşımlardan biri dış döngüde i ve iç döngüde j kullanmaktır. Bunun gibi kuralların takip etmek, başkalarının kodunuzu okumasını kolaylaştırır.

    Her hayvan için altı özellik depolandığından, başlatıcıint j = 0; ve koşul için şeklindedir j < 6;. Başlatıcı ve koşulun bu birleşimi, ihtiyacınız 0 - 5olan dizi dizini aralığıyla eşleşir.

  4. Bir evcil hayvanın her özelliğini ayrı bir satırda görüntülemek için kodunuzu aşağıdaki gibi güncelleştirin:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine(ourAnimals[i, 0]);
            for (int j = 0; j < 6; j++)
            {
                Console.WriteLine(ourAnimals[i, j]);
            }
        }
    }    
    
  5. Oluşturduğunuz iç içe yapıyı ve kodunuzun üreteceği çıkışı göz önünde bulundurmak için bir dakika düşünün.

    konsoluna yazılan değerin hem ourAnimals[i, j]dış hem de iç for döngülerdeki döngü denetim değişkenlerini kullandığına dikkat edin.

    Aşağıdaki öğelerin her birini biliyorsunuz:

    • Dizinin ilk boyutu ourAnimals farklı evcil hayvanlara karşılık gelir.
    • Dizinin ikinci boyutu ourAnimals her evcil hayvanın özelliklerine karşılık gelir.
    • deyimi, if geçerli evcil hayvana atanmış evcil hayvan verisi olmadığında iç döngünün çalışmasını engeller.
    • İç döngü, dış döngünün her yinelemesi için tüm yinelemelerini tamamlar.

    Bu nedenle, her hayvanın özelliklerinin amaçlandığı gibi gösterileceğini biliyorsunuz.

  6. petID iletisini boş WriteLine()bir iletiyle değiştirmek için kodunuzu aşağıdaki gibi güncelleştirin:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine();
            for (int j = 0; j < 6; j++)
            {
                Console.WriteLine(ourAnimals[i, j]);
            }
        }
    }    
    

    Bu son güncelleştirme, çıkışınız konsolda görüntülendiğinde evcil hayvanlar arasındaki ayrımı görmeyi kolaylaştırır.

  7. Visual Studio Code Dosyası menüsünde Kaydet'i seçin.

  8. Bir Terminal bölmesi açın ve Programı oluşturun.

  9. Devam etmeden önce bildirilen derleme hatalarını veya uyarılarını düzeltin.

İşinizi kontrol edin

Bu görevde, uygulamanızı Tümleşik Terminal'den çalıştırır ve iç içe geçmiş for ile if deyimlerinin beklenen sonucu ürettiğini doğrularsınız.

  1. Gerekirse Visual Studio Code'un Tümleşik Terminal panelini açın.

  2. Terminal komut istemine dotnet run girin

  3. Terminal komut istemine 1 girin

  4. Atama yapılmış olan dört evcil hayvanın verilerinin görüntülendiğini doğrulayın.

    ID #: d1
    Species: dog
    Age: 2
    Nickname: lola
    Physical description: medium sized cream colored female golden retriever weighing about 65 pounds. housebroken.
    Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.
    
    ID #: d2
    Species: dog
    Age: 9
    Nickname: loki
    Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken.
    Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.
    
    ID #: c3
    Species: cat
    Age: 1
    Nickname: Puss
    Physical description: small white female weighing about 8 pounds. litter box trained.
    Personality: friendly
    
    ID #: c4
    Species: cat
    Age: ?
    Nickname:
    Physical description:
    Personality:
    Press the Enter key to continue.
    

    Uyarı

    Beklenen sonuçların görüntülendiğini görmüyorsanız güncelleştirilmiş Program.cs dosyanızı kaydettiğinizden emin olun. Beklenen sonuçları görmüyorsanız ve sorunu belirleyemiyorsanız, Final klasöründeki Program.cs kodunu inceleyebilirsiniz. Son klasörü, Kurulum sırasında tamamladığınız indirme işleminin bir parçası olarak eklenir. Son klasöründeki Program.cs dosyasını denetlemeden önce kodunuzda söz dizimi ve mantık sorununu tanımlamaya ve çözmeye çalışmak için zaman harcamanızı öneririz.

  5. Uygulamadan çıkın ve terminal panelini kapatın.