Alıştırma - Yeni evcil hayvan verileri girmek için döngü oluşturma ve test etme
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:
- petCount'u hesapla:
ourAnimalsdizisinde veri atanmış evcil hayvanların sayısını sayan kodu yazın. - Koşullu iletiler:
petCountdeğerimaxPetsdeğerinden küçük olduğunda ileti çıkışını görüntülemek için kod yazın. - Dış döngü: Yeni
ourAnimalsdizi verileri girmek için kullanılacak bir döngü yapısı oluşturun. - Çıkış ölçütleri: "Yeni ourAnimals dizi verilerini girin" döngüsü için çıkış koşulunu değerlendiren kod yazın.
- 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.
Visual Studio Code'un açık olduğundan ve Program.cs dosyanızın Düzenleyici'de göründüğünden emin olun.
switch(menuSelection)deyimini bulun ve ardındancase "2":kod satırını bulun.Console.WriteLine()"Çok yakında" iletisini görüntüleyen deyimini bulun ve boş bir kod satırıyla değiştirin.Oluşturduğunuz boş kod satırında
anotherPetvepetCountdeğ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
whiledöngünün yinelenmesini denetler. Bildirimin bir parçası olarak her iki değişkeni de tanımlarsınız.anotherPetdöngünün başlangıcından önceydeğeriyle başlatılırwhile.ydöngüsünün içinde, kullanıcı tarafından atanannveyawhiledeğerlerinden birini alır.petCountatanan evcil hayvan özelliklerine sahip hayvan sayısını temsil eder. Hesaplanan bir değer döngünüzünwhiledışında atanacak ve diziye1her yeni hayvan eklendiğinde döngününwhileiçindeourAnimalsartı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
petCountkapsam eklemek yerine kapsamı uygulama düzeyindecase "2":belirleyebilirsiniz. Büyük kapsam, uygulamanın herhangi bir yerinden erişmenizipetCountsağlar.petCountuygulama 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ıourAnimalsdizisinden çıkardığınızda,petCountdeğerini1kadar 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 belirlemepetCount, 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çindepetCount'u daha geniş bir şekilde kullanmaya karar verirseniz, kodunuzu daha üst düzeydepetCountolarak güncelleyebilirsiniz. Değişkenlerinizin kapsamını olabildiğince dar tutmayı ve yalnızca gerekli olduğunda kapsamlarını artırmayı unutmayın.Değişken bildirimlerinizin altındaki kod satırında, dizideki
ourAnimalshayvanlar 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.
fordöngüsünü her diziyi yinelediğinizde kullanacaksınız.Döngümüzdeki
forkod 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
ifdeyimi kullanacaksınız.Oluşturduğunuz
ifkod bloğunun içine,petCountdeğerini 1 artırmak için aşağıdaki kodu girin:petCount += 1;Tamamlanan
fordöngünüzü incelemek için bir dakika ayırın.Tamamlanmış
fordö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,
ourAnimalsdizisinde atanan verileri kontrol ederek döngü yapar. Atanmış veri içeren bir hayvan bulduğunda değerini artırırpetCounter.Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
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.Devam etmeden önce bildirilen derleme hatalarını düzeltin.
Uyarı
Şimdilik
anotherPetatanıp hiç kullanılmamasıyla ilgili Uyarı iletisini yoksayabilirsiniz. Bu alıştırmanın devamındaanotherPetiç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.
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.
Oluşturduğunuz döngünün altına boş bir kod satırı açarak,
fordeğerininpetCount'den küçük olup olmadığını görmek için "aşağıdaki kodu" girin.if (petCount < maxPets) { }deyiminin kod bloğunun
ifiç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.
Kod dalını
case "2":ve deyiminiziswitchgö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;Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
Visual Studio Code'da Tümleşik Terminal panelini açın ve Programınızı derleyin komutunu girin.
Devam etmeden önce bildirilen derleme hatalarını düzeltin.
Tekrar,
anotherPetatanmış 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ınawhilebaşlayacaksınız. Döngü içinwhileoluşturduğunuz ifadeanotherPetkullanı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.
Terminal komut isteminde, programınızı çalıştırmak için komutunu girin.
dotnet runProgram 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.
Terminal komut istemine 2 girin
Bu değer kod dalınıza
case "2":karşılık gelir.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.
Terminal komut isteminde, uygulamanızı çalıştırmaya devam etmek için Enter tuşuna basın.
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.
Kod Düzenleyicisi'nde, kod bloğunuzun
if (petCount < maxPets)altında boş bir kod satırı oluşturun.Yeni
whiledöngünüzü oluşturma işlemine başlamak için aşağıdaki kodu girin:while (anotherPet == "y" && petCount < maxPets) { }Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
Visual Studio Code'da Tümleşik Terminal panelini açın ve Programınızı derleyin komutunu girin.
Artık kullanılmamayla ilgili
anotherPetUyarı 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.
Ö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.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;petCount'nınmaxPets'den küçük olup olmadığını kontrol etmek için aşağıdaki kodu girin:// check maxPet limit if (petCount < maxPets) { }Oluşturduğunuz deyiminin kod bloğunun
ifiç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)");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");breakifadesindecase "2";ilecase "3";'yi ayıranswitchifadesini bulun.Kodumuzun sonundaki
Console.WriteLine()veConsole.ReadLine()deyimlerine dikkat edin.Bu kod kullanıcıya bir ileti görüntüler ve uygulamayı duraklatır.
Console.WriteLine()veConsole.ReadLine()deyimlerini birifdeyiminin 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
petCountdeğeri,whiledöngüsünün içinde arttırılır. EğerpetCountdeğerimaxPets'e eşitse,ourAnimalsdizisine başka evcil hayvan eklenemez. Bu durum oluştuğunda kullanıcıya bildirmeniz gerekir.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":Döngünüzdeki
whilekodu 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(); }Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
Visual Studio Code'da Tümleşik Terminal panelini açın ve Programınızı derleyin komutunu girin.
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.
Gerekirse Visual Studio Code'un Tümleşik Terminal panelini açın.
Terminal komut istemine dotnet run girin
Terminal komut istemine 2 girin
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)Terminal komut istemine n girin
"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.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)Terminal komut istemine y girin
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
petCountvemaxPetsarasındaki ilişkiye dayanır.maxPets'a8değeri atandığını biliyorsunuz, peki yapetCount? Aşağıdaki öğeler, uyguladığınız mantığı değerlendirmeye yardımcı olur:Döngünün ilk yinelemesine
petCountgirdiğiniz zaman4whileolduğunu biliyorsunuz.petCountherwhiledöngüsü yinelendiğinde artırıldığını biliyorsunuz.petCountdeğerine atanan değer ilepetCount'in artırılma şeklininourAnimalsdizisinde verilerin nasıl depolandığını etkilediğini biliyorsunuz. Aşağıdaki öğeler ile içindepetCountdepolanan veriler arasındakiourAnimalsilişkiyi açıklar:- Uygulama, örnek verileri oluşturduğunda
ourAnimalsdiziye dört evcil hayvan ekler. - Uygulama,
ourAnimalsdeğeripetCountolduğunda yeni verileri4dizisine 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 ve1hayvanourAnimals[3,0]için4evcil hayvan kimliğini içerir. Bu nedenle,petCount4olduğ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
petCountdeğ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,
petCountzaten olarak5ayarlanır.
- Uygulama, örnek verileri oluşturduğunda
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ünanotherPet == "y"vepetCount < maxPetsnedeniyle yineleyeceğini biliyorsunuz. -
petCount'e atanan değer,whiledöngüsü yinelediğinde artırılacaktır. - Atanan
petCountdeğer olacaktır6(kullanıcı ilk kez y girdikten sonra).
- Döngü
Uygulamayı test etme işlemine devam ettikçe kod mantığının bu analizini göz önünde bulundurun.
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)Terminal komut istemine y girin
İkinci kez girdiğinizde
y,petCountolarak artırılır7.petCounthâlâmaxPets'den küçükTerminal komut istemine y girin
Üçüncü kez girdiğinizde
y,petCountolarak artırılır8. ArtıkpetCounteşittirmaxPetsÜçüncü kez
whilegirdiğ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çinmaxPetsdeğerine eşit bir değere ulaştığında kodunuzu güncelleştirin.petCount'ın, varsayılan değerimaxPetsolan8'e eşit olduğunu öğrenene kadar "y" yanıtını vermeye devam edin.Terminal komut isteminde, uygulamanızı çalıştırmaya devam etmek için Enter tuşuna basın.
Uygulamadan çıkın ve terminal panelini kapatın.