Alıştırma - Hayvanlarımız dizisi verilerini görüntülemek için kod yazın
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:
- Dış döngü: ourAnimals dizisindeki hayvanlar arasında tekrarlayan dış döngüyü oluşturun.
- 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.
- İç döngü: Veri atanmış evcil hayvanlar için tüm evcil hayvan özelliklerini görüntüleyen bir iç döngü oluşturun.
- 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.
Visual Studio Code'un açık olduğundan ve Program.cs dosyanızın Düzenleyici'de göründüğünden emin olun.
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;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 informationaltında boş bir kod satırı bırakın.Geri bildirim iletisine gerek yoktur çünkü dizinin içeriğini
ourAnimalsgö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.Oluşturduğunuz boş kod satırından başlayarak aşağıdaki gibi bir
fordeyim başlatın:for () { }Bu
forifadeyle ne elde etmeniz gerektiğini düşünmek için bir dakika ayırın.Bir
fordeyiminin 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,forifadesiyle elde etmeniz gerekenlere göre belirlenir.Bu durumda,
fordöngüsü,ourAnimalsdizinde yinelemek için kullanılır. Dizilerin sıfırdan başladığını, yaninöğeye sahip bir dizinin0ilen-1arası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ünfor'da başlayıp,0artarak, ve1'te bitmesini istersiniz.Diziniz
ourAnimalsşu şekilde bildirilir:string[,] ourAnimals = new string[maxPets, 6];. AtananmaxPetsdeğerin olduğunu8biliyorsunuz. Bu bildirimde,maxPetsdizideki öğ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 = 8ile0arasında değişir.Döngünüzün
fordenetim 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ğerinizi1artıracaktır.ourAnimals dizisinde yineleme yaparken
forveforeachifadeleri 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
foreachdöngüsü kullanmıyorsunuz? Sonuçta,foreachifadesinin bir dizideki her bir öğeye tekrarlamak istediğiniz durumlar için tasarlandığını biliyorsunuz.Bu durumda
foreachdöngüsünü kullanmama nedeniniz,ourAnimalsdizisinin çok boyutlu bir dizi olmasıdır. Çok boyutlu bir dize dizisi olduğundanourAnimals, içindeourAnimalsyer alan her öğe dize türünde ayrı bir öğedir. Eğer birforeachdöngüsü kullanarak birourAnimalsüzerinde yineleme yaptıysanız,foreachher bir dizeyi 48 dize öğesi (8 x 6 = 48) içeren bir listede ayrı bir öğe olarak tanır. deyimiforeachiki dizi boyutunu ayrı olarak işlemez. Başka bir deyişle, birforeachdöngü, her satırın bir öğe sütunu içerdiği8dize öğ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, birforeachifade doğru seçim değildir.Ancak,
ourAnimalsdizisi string dizileri olarak yapılandırılmış bir düzensiz diziyse,foreachifadesini kullanabilirsiniz. Bir dış döngü için birforeachve bir iç döngü için ikinciforeacholuş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
fordöngüleri kullanmak, pürüzlü dizi ve iç içeforeachdö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.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ı 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.
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.
Kod bloğunuzdaki
forifade içinde aşağıdaki gibi boş bir kod satırı oluşturun:for (int i = 0; i < maxPets; i++) { }Evcil hayvan kimliği verilerini denetleen bir
ifdeyim oluşturmak için kodunuzu aşağıdaki gibi güncelleştirin:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { } }Bu
ifdeyimin 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şkenininikullanıldığına dikkat edin. Hatırlayacağınız gibi,0in[i, 0]özelliğinepetIDkarşı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 atananpetIDdeğ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ığı zamantrueolarak 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 atananpetIDvarsayılan değerdir. Özellikler bir hayvana atandığında,petIDdeğ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
ififadesinin 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ğerepetIDatandığı sizin için önemli değildir.Bir
Console.WriteLine()yöntemi oluşturmak için kodunuzu aşağıdaki şekilde güncelleyin; bu yöntempetIDdeyiminin kod bloğundaif’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.Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
Tümleşik Terminal panelini açın ve programınızı derlemek için komutunu girin.
Devam etmeden önce bildirilen derleme hatalarını veya uyarılarını düzeltin.
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 bir çalışma zamanı hatası oluşturuyorsa, hataları düzeltin, güncelleştirmelerinizi kaydedin ve uygulamayı yeniden başlatın.
Terminal komut isteminde, yeni kod mantığınızın beklendiği gibi çalıştığını doğrulamak için 1 girin
Aşağıdaki
petIDdeğ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.
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.
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]); } }forHer 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
fordöngünün kod bloğunun içine "iç içe" yerleştirilmiş ikinciforbir döngüye sahip olduğunuzu fark edersiniz. Bildiğiniz gibi, dış döngüourAnimalsdizisindeki 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.Girdiğiniz
forbeyâ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çeforyerleştirdiğinizde, geleneksel yaklaşımlardan biri dış döngüdeive iç döngüdejkullanmaktı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 şeklindedirj < 6;. Başlatıcı ve koşulun bu birleşimi, ihtiyacınız0-5olan dizi dizini aralığıyla eşleşir.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]); } } }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çfordöngülerdeki döngü denetim değişkenlerini kullandığına dikkat edin.Aşağıdaki öğelerin her birini biliyorsunuz:
- Dizinin ilk boyutu
ourAnimalsfarklı evcil hayvanlara karşılık gelir. - Dizinin ikinci boyutu
ourAnimalsher evcil hayvanın özelliklerine karşılık gelir. - deyimi,
ifgeç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.
- Dizinin ilk boyutu
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.
Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
Bir Terminal bölmesi açın ve Programı oluşturun.
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.
Gerekirse Visual Studio Code'un Tümleşik Terminal panelini açın.
Terminal komut istemine dotnet run girin
Terminal komut istemine 1 girin
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.
Uygulamadan çıkın ve terminal panelini kapatın.