Alıştırma - Yeni evcil hayvan verileri girmek için döngü oluşturma ve test etme

Tamamlandı

Bu alıştırmada, yeni ourAnimals dizi verilerinin girişini denetleen kod geliştirin. Döngü denetim değişkenlerinizin ilk değerlerini hesaplar ve hayvanlar için kullanıcı tarafından belirtilen verileri toplayan döngü oluşturursunuz. Bu alıştırma sırasında tamamladığınız ayrıntılı görevler şunlardır:

  1. petCount'u hesapla: ourAnimals dizisinde veri atanmış evcil hayvanların sayısını sayan kodu yazın.
  2. Koşullu iletiler: petCount değeri maxPets değerinden küçük olduğunda ileti çıkışını görüntülemek için kod yazın.
  3. Dış döngü: Yeni ourAnimals dizi verileri girmek için kullanılacak bir döngü yapısı oluşturun.
  4. Çıkış ölçütleri: "Yeni ourAnimals dizi verilerini girin" döngüsü için çıkış koşulunu değerlendiren kod yazın.
  5. 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 dizisindeki evcil hayvan sayısını sayma

Bu görevde, veri giriş döngünüz için çıkış ölçütlerini belirler ve veri atamış evcil hayvan for sayısını saymak için kullanılabilecek bir ourAnimals döngü oluşturursunuz.

  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. switch(menuSelection) deyimini bulun ve ardından case "2": kod satırını bulun.

  3. Console.WriteLine()"Çok yakında" iletisini görüntüleyen deyimini bulun ve boş bir kod satırıyla değiştirin.

  4. Oluşturduğunuz boş kod satırında anotherPet ve petCount değişkenlerini bildirmek için aşağıdaki kodu girin:

    string anotherPet = "y";
    int petCount = 0;
    

    Bu iki değişken, yeni evcil hayvan verilerini girmek için kullanılan bir while döngünün yinelenmesini denetler. Bildirimin bir parçası olarak her iki değişkeni de tanımlarsınız.

    • anotherPet döngünün başlangıcından önce y değeriyle başlatılır while. y döngüsünün içinde, kullanıcı tarafından atanan n veya while değerlerinden birini alır.

    • petCount atanan evcil hayvan özelliklerine sahip hayvan sayısını temsil eder. Hesaplanan bir değer döngünüzün while dışında atanacak ve diziye 1 her yeni hayvan eklendiğinde döngünün while içinde ourAnimals artırılacaktır.

    Önemli

    Değişkenlerinizin kapsamı her zaman mümkün olduğunca dar olmalıdır. Contoso Pets uygulamasında, kod bloğuna petCount kapsam eklemek yerine kapsamı uygulama düzeyinde case "2": belirleyebilirsiniz. Büyük kapsam, uygulamanın herhangi bir yerinden erişmenizi petCount sağlar. petCount uygulama düzeyinde kapsanıyorsa, örnek verileri oluşturduğunuzda ona bir değer atayabilir ve bu değeri uygulamanın geri kalanında program aracılığıyla yönetebilirsiniz. Örneğin, bir evcil hayvan için bir yuva bulduğunuzda ve evcil hayvanı ourAnimals dizisinden çıkardığınızda, petCount değerini 1 kadar azaltabilirsiniz. Asıl soru, bir değişkenin uygulamanızın diğer bölümlerinde kullanılıp kullanılmayacağı konusunda emin olmadığınızda hangi düzeyde bir değişkenin kapsamını tanımlamanız gerektiğidir. Bu durumda, başka bir yerde kullanmasanız bile, petCount'ı uygulama düzeyinde kapsamına almak cazip gelebilir. Uygulama düzeyinde kapsam belirleme petCount , sonuçta başka bir yerde kullanmaya karar verirseniz kullanılabilir olmasını sağlar. Belki diğer değişkenleri uygulama düzeyinde de kapsamlayabilirsiniz. Bu şekilde, değişkenleriniz her zaman kapsam dahilinde ve erişilebilir durumda olur. Peki neden daha sonra uygulamada kullanılabileceğini düşündüğünüz değişkenleri uygulama düzeyinde kapsam olarak kullanmıyorsunuz? Gerekenden daha yüksek bir düzeyde kapsam belirleme değişkenleri sorunlara yol açabilir. Yükseltilmiş kapsam, uygulamanızın kaynak gereksinimlerini şişirir ve uygulamanızı gereksiz güvenlik risklerine maruz bırakabilir. Uygulamalarınız büyüdükçe ve daha karmaşık hale geldikçe daha fazla kaynağa ihtiyaç duyar. Telefonlar ve bilgisayarlar kapsam dahilinde olduklarında bu kaynaklar için bellek ayırır. Uygulamalarınız "gerçek dünya" haline geldikçe daha erişilebilir hale gelir. Uygulamalara genellikle buluttan veya diğer uygulamalardan erişilebilir. Bu sorunları daha da karmaşık hale getiren bir durum, uygulamaların kullanılmadığında bile genellikle çalışır durumda bırakılmasıdır. Bir uygulamanın kaynak gereksinimlerini kontrol altında tutmak ve güvenlik ayak izini mümkün olduğunca küçük tutmak önemlidir. Günümüzün işletim sistemleri kaynakları yönetmek ve uygulamaların güvenliğini sağlamak için harika bir iş çıkarsa da, değişkenlerinizin kapsamını gerçekten ihtiyaç duyulan düzeyde tutmak yine de en iyi yöntemdir. Contoso Pets uygulamanızda, uygulama içinde petCount'u daha geniş bir şekilde kullanmaya karar verirseniz, kodunuzu daha üst düzeyde petCount olarak güncelleyebilirsiniz. Değişkenlerinizin kapsamını olabildiğince dar tutmayı ve yalnızca gerekli olduğunda kapsamlarını artırmayı unutmayın.

  5. Değişken bildirimlerinizin altındaki kod satırında, dizideki ourAnimals hayvanlar arasında yineleyen bir döngü oluşturmak için aşağıdaki kodu girin:

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

    Bu kod tanıdık görünmelidir. for döngüsünü her diziyi yinelediğinizde kullanacaksınız.

  6. Döngümüzdeki for kod bloğunun içine evcil hayvan özellikleri verilerinin bir hayvana atanıp atanmadığını denetlemek için aşağıdaki kodu girin:

    if (ourAnimals[i, 0] != "ID #: ")
    {
    }
    

    Bu kod da tanıdık görünmelidir. Evcil hayvan özelliklerinin atanıp atanmadığını her denetlediğinizde bu if deyimi kullanacaksınız.

  7. Oluşturduğunuz if kod bloğunun içine, petCount değerini 1 artırmak için aşağıdaki kodu girin:

    petCount += 1;
    
  8. Tamamlanan for döngünüzü incelemek için bir dakika ayırın.

    Tamamlanmış for döngünüz aşağıdaki kod gibi görünmelidir:

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

    Bu kod, ourAnimals dizisinde atanan verileri kontrol ederek döngü yapar. Atanmış veri içeren bir hayvan bulduğunda değerini artırır petCounter.

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

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

  11. Devam etmeden önce bildirilen derleme hatalarını düzeltin.

    Uyarı

    Şimdilik anotherPet atanıp hiç kullanılmamasıyla ilgili Uyarı iletisini yoksayabilirsiniz. Bu alıştırmanın devamında anotherPet içeren kodu ekleyeceksiniz.

    Derleme hatanız varsa Derleme hatası ve uyarı iletilerinin sorunun ne olduğunu ve nerede bulabileceğinizi size bildirdiğini unutmayın. Kodunuzu güncelleştirirseniz, yeniden derlemeden önce değişikliklerinizi kaydetmeyi unutmayın.

  12. Terminal panelini kapatın.

petCount maxPets değerinden küçük olduğunda ileti çıktısı görüntüleme

Bu görevde, petCount'ın maxPets'den küçük olup olmadığını kontrol edersiniz ve eğer öyleyse kullanıcı için bir mesaj görüntülersiniz.

  1. Oluşturduğunuz döngünün altına boş bir kod satırı açarak, for değerinin petCount'den küçük olup olmadığını görmek için "aşağıdaki kodu" girin.

    if (petCount < maxPets)
    {
    }
    
  2. deyiminin kod bloğunun if içine kullanıcıya bir ileti görüntülemek için aşağıdaki kodu girin:

    Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
    

    Uygulama kullanıcıları evcil hayvan özelliklerini girmek üzere. Bu ileti önemli bağlam sağlar.

  3. Kod dalını case "2": ve deyiminizi switch gözden geçirmek için bir dakika ayırın.

    Bu noktada, kod dalınız case "2": aşağıdaki kod gibi görünmelidir:

    case "2":
        // Add a new animal friend to the ourAnimals array
        string anotherPet = "y";
        int petCount = 0;
        for (int i = 0; i < maxPets; i++)
        {
            if (ourAnimals[i, 0] != "ID #: ")
            {
                    petCount += 1;
            }
    
        }
    
        if (petCount < maxPets)
        {
            Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
        }
    
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    
  4. Visual Studio Code Dosyası menüsünde Kaydet'i seçin.

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

  6. Devam etmeden önce bildirilen derleme hatalarını düzeltin.

    Tekrar, anotherPet atanmış ancak hiç kullanılmamış olduğu hakkında Uyarı iletisini yoksayabilirsiniz. Sonraki görevde, bir veya daha fazla evcil hayvanın verilerini girmek için kullanılan döngünün oluşturulmasına while başlayacaksınız. Döngü için while oluşturduğunuz ifade anotherPet kullanılacaktır ve bu Uyarı iletisi kaybolacaktır.

    Uyarı iletilerinin endişelenmeniz gereken şeyler olduğunu unutmayın, ancak bunlar programınızı çalıştırmanızı engellemez.

  7. 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 çalışma zamanı hatası oluşturmadığı sürece, uygulamanın ana menüsü artık Terminal panelinde görüntülenmelidir.

  8. Terminal komut istemine 2 girin

    Bu değer kod dalınıza case "2": karşılık gelir.

  9. Terminalde aşağıdaki iletinin görüntülendiğini doğrulayın.

    We currently have 4 pets that need homes. We can manage 4 more.
    Press the Enter key to continue.
    

    Beklenen iletinin görüntülendiğini görmüyorsanız, sorunu tanımlamak ve düzeltmek için kodunuzu gözden geçirin. Değişikliklerinizi kaydedin, yeniden derleyin ve uygulamayı yeniden çalıştırın. Devam etmeden önce kodun beklendiği gibi çalıştığından emin olun.

  10. Terminal komut isteminde, uygulamanızı çalıştırmaya devam etmek için Enter tuşuna basın.

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

Yeni ourAnimals dizi verilerini girmek için kullanılacak bir döngü yapısı oluşturma

Bu görevde whileanotherPet'ye eşit olduğu ve ypetCount'ten küçük olduğu sürece yinelemeye devam eden bir maxPets döngüsü oluşturursunuz.

  1. Kod Düzenleyicisi'nde, kod bloğunuzun if (petCount < maxPets) altında boş bir kod satırı oluşturun.

  2. Yeni while döngünüzü oluşturma işlemine başlamak için aşağıdaki kodu girin:

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. Visual Studio Code Dosyası menüsünde Kaydet'i seçin.

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

  5. Artık kullanılmamayla ilgili anotherPet Uyarı iletisini almadığınıza dikkat edin.

    Derleme hataları veya uyarıları bildirildiyse devam etmeden önce sorunları düzeltin.

Yeni evcil hayvanlar döngüsü için çıkış koşulunu denetleyin

Bu görevde kod bloğunu while (anotherPet == "y" && petCount < maxPets) güncelleştirirsiniz. Yeniden kod petCount değerini artırır ve sonra petCount değerinin maxPets'den küçük olup olmadığını denetler. Eğer petCount değeri maxPets değerinden küçükse, kullanıcıya başka bir evcil hayvan için bilgi girmek isteyip istemediğini sorarsınız ve yanıtın y veya n olduğundan emin olursunuz. Kod bloğundan while (anotherPet == "y" && petCount < maxPets) sonra, petCount değerini kontrol edersiniz. Eğer petCountmaxPets'e eşitse, kullanıcıya daha fazla evcil hayvan eklenemeyeceğini bildirirsiniz.

Uyarı

Evcil hayvan verilerini girmek için kullanılan kod bir sonraki alıştırmada geliştirilir. Şimdilik, veriler giriliyormuş ve petCount dizisine kaydediliyormuş gibi ourAnimals artırılıyor. Bu, döngüyle while ilişkili kod mantığını geliştirmeyi tamamlamanızı sağlar.

  1. Önceki görevde oluşturduğunuz döngünün while (anotherPet == "y" && petCount < maxPets) kod bloğu içinde boş bir kod satırı oluşturun.

  2. değerini artırmak petCountiçin aşağıdaki kodu girin:

    // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
    petCount = petCount + 1;
    
  3. petCount'nın maxPets'den küçük olup olmadığını kontrol etmek için aşağıdaki kodu girin:

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. Oluşturduğunuz deyiminin kod bloğunun if içine, kullanıcıya başka bir evcil hayvan eklemek isteyip istemediğini sormak için aşağıdaki kodu girin:

    // another pet?
    Console.WriteLine("Do you want to enter info for another pet (y/n)");
    
  5. Girdiğiniz iletinin WriteLine() altında, kullanıcı yanıtını okumak ve kullanıcının "y" veya "n" girdiğinden emin olmak için aşağıdaki kodu girin:

    do
    {
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            anotherPet = readResult.ToLower();
        }
    
    } while (anotherPet != "y" && anotherPet != "n");
    
  6. break ifadesinde case "2"; ile case "3";'yi ayıran switch ifadesini bulun.

  7. Kodumuzun sonundaki Console.WriteLine() ve Console.ReadLine() deyimlerine dikkat edin.

    Bu kod kullanıcıya bir ileti görüntüler ve uygulamayı duraklatır.

  8. Console.WriteLine() ve Console.ReadLine() deyimlerini bir if deyiminin içine almak için kodunuzu aşağıdaki gibi güncelleştirin:

    
    if (petCount >= maxPets)
    {
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
    break;
    
    case "3":
    

    Belirtilen petCount değeri, while döngüsünün içinde arttırılır. Eğer petCount değeri maxPets'e eşitse, ourAnimals dizisine başka evcil hayvan eklenemez. Bu durum oluştuğunda kullanıcıya bildirmeniz gerekir.

  9. Kullanıcıya Contoso Pets'in kapasitesine ulaştığını bildirmek için kodunuzu aşağıdaki gibi güncelleştirin:

    
        if (petCount >= maxPets)
        {
            Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
        }
    
        break;
    
    case "3":
    
  10. Döngünüzdeki while kodu ve oluşturduğunuz kullanıcı iletisini gözden geçirmek için bir dakikanızı ayırın.

    Döngünüz ve kullanıcı iletisini görüntüleyen kodunuz while (anotherPet == "y" && petCount < maxPets) aşağıdaki kod gibi görünmelidir:

    while (anotherPet == "y" && petCount < maxPets)
    {
        // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
        petCount = petCount + 1;
    
        // check maxPet limit
        if (petCount < maxPets)
        {
            // another pet?
            Console.WriteLine("Do you want to enter info for another pet (y/n)");
            do
            {
                readResult = Console.ReadLine();
                if (readResult != null)
                {
                    anotherPet = readResult.ToLower();
                }
    
            } while (anotherPet != "y" && anotherPet != "n");
        }
    }
    
    if (petCount >= maxPets)
    {
        Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
  11. Visual Studio Code Dosyası menüsünde Kaydet'i seçin.

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

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

İşinizi kontrol edin

Bu görevde, uygulamamızı Tümleşik Terminal'den çalıştıracak ve oluşturduğunuz döngü ve dallanma mantığının beklendiği gibi çalıştığını doğrulaacaksı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 2 girin

  4. Aşağıdaki iletileri gördüğünüzden emin olun:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  5. Terminal komut istemine n girin

  6. "Kodunuzun 'n' girdiğinizde yeni evcil hayvan ekleme döngüsünden çıktığını doğrulayın."

    Kod mantığınız beklendiği gibi çalışıyorsa Terminal'de ana menünün görüntülendiğini görmeniz gerekir.

    Kodunuz beklendiği zaman döngüden çıkmazsa yürütmeyi durmaya zorlamak için Terminalde Ctrl + C tuşlarına basın. Kodunuzu el ile adım adım izlemeniz ve çıkış ölçütü değişkenlerinin değerlerini izlemeniz gerekir. Kullanıcı "n" girdiğinde döngüden while çıktığınızdan emin olmak için gerekirse kodunuzu güncelleştirin. Değişikliklerinizi kaydedin, programınızı yeniden oluşturun ve doğrulama testini çalıştırarak bu noktaya geri dönün.

  7. Terminal komut istemine 2 girin

    Bir kez daha aşağıdaki iletilerin görüntülendiğini göreceksiniz:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  8. Terminal komut istemine y girin

  9. Kodunuzda petCount'nin nasıl kullanıldığını düşünmek için bir dakikanızı ayırın.

    Kodunuzu doğrulayabilmek için önce kod mantığınızı anlamanız gerekir.

    Kod mantığınız bu durumda petCount ve maxPets arasındaki ilişkiye dayanır. maxPets'a 8 değeri atandığını biliyorsunuz, peki ya petCount? Aşağıdaki öğeler, uyguladığınız mantığı değerlendirmeye yardımcı olur:

    • Döngünün ilk yinelemesine petCount girdiğiniz zaman 4while olduğunu biliyorsunuz.

    • petCount her while döngüsü yinelendiğinde artırıldığını biliyorsunuz.

    • petCount değerine atanan değer ile petCount'in artırılma şeklinin ourAnimals dizisinde verilerin nasıl depolandığını etkilediğini biliyorsunuz. Aşağıdaki öğeler ile içinde petCountdepolanan veriler arasındaki ourAnimals ilişkiyi açıklar:

      • Uygulama, örnek verileri oluşturduğunda ourAnimals diziye dört evcil hayvan ekler.
      • Uygulama, ourAnimals değeri petCount olduğunda yeni verileri 4 dizisine depolar. Bu bir hata değil. Dizi öğelerinin sıfır tabanlı olduğunu hatırladığınızda kod mantıklıdır. Örneğin, ourAnimals[0,0] hayvan için evcil hayvan kimliğini ve 1 hayvan ourAnimals[3,0] için 4evcil hayvan kimliğini içerir. Bu nedenle, petCount4 olduğunda beşinci evcil hayvan için verileri depoluyorsunuz.
      • Uygulama, evcil hayvan verilerini artırmadan önce diziye depolar petCount.
      • Uygulama, kullanıcıya başka bir evcil hayvan eklemeyi sorup sormayacağını bildirmeden önce petCount değerini artırır.
      • Uygulama ilk kez başka bir evcil hayvan (y/n) için bilgi girmek istiyor musunuz ? istemini görüntülediğinde, petCount zaten olarak 5ayarlanır.
    • Kullanıcı ilk başta y girerse Başka bir evcil hayvan (y/n) istemi için bilgi girmek istiyor musunuz, şunu biliyorsunuz:

      • Döngü while (anotherPet == "y" && petCount < maxPets) yinelenir. Döngünün anotherPet == "y" ve petCount < maxPets nedeniyle yineleyeceğini biliyorsunuz.
      • petCount'e atanan değer, while döngüsü yinelediğinde artırılacaktır.
      • Atanan petCount değer olacaktır 6 (kullanıcı ilk kez y girdikten sonra).

    Uygulamayı test etme işlemine devam ettikçe kod mantığının bu analizini göz önünde bulundurun.

  10. Terminal panelinin aynı "başka bir evcil hayvan?" iletisiyle güncellendiğine, ancak kodunuzun güncellenmiş petCount'nin görünmediğine dikkat edin.

    Terminal panelinde artık aşağıdaki çıkış gösterilmelidir:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    
  11. Terminal komut istemine y girin

    İkinci kez girdiğinizde y , petCount olarak artırılır 7. petCount hâlâ maxPets'den küçük

  12. Terminal komut istemine y girin

    Üçüncü kez girdiğinizde y , petCount olarak artırılır 8. Artık petCount eşittir maxPets

  13. Üçüncü kez while girdiğinizde kodunuzun döngüden çıktığını doğrulayın.

    Terminal panelinde artık aşağıdaki çıkış gösterilmelidir:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    We have reached our limit on the number of pets that we can manage.
    Press the Enter key to continue.
    

    Kodunuz beklendiği gibi döngüden çıkmazsa, kodunuzu elle adım adım izleyin ve çıkış ölçütü değişkenlerinin değerlerini takip edin. Döngüden petCount çıktığınızdan emin olmak için maxPets değerine eşit bir değere ulaştığında kodunuzu güncelleştirin. petCount'ın, varsayılan değeri maxPets olan 8'e eşit olduğunu öğrenene kadar "y" yanıtını vermeye devam edin.

  14. Terminal komut isteminde, uygulamanızı çalıştırmaya devam etmek için Enter tuşuna basın.

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