Alıştırma - Do ve while yineleme deyimleri arasında ayrım yapmak için sınama etkinliğini tamamlama
Kod zorlukları öğrendiklerini pekiştirecek ve devam etmeden önce biraz güven kazanmanıza yardımcı olacaktır.
Do ve while deyimi yinelemeleri arasındaki farkı inceleyin
Gördüğünüz gibi C# dört tür yineleme deyimini destekler: for, foreach, do-whileve while. Microsoft'un dil başvurusu belgelerinde bu deyimler şu şekilde açıklanmaktadır:
- deyimi
for: belirtilen Boole ifadesi ('koşul') true olarak değerlendirilirken gövdesini yürütür. - deyimi
foreach: bir koleksiyonun öğelerini numaralandırır ve koleksiyonunun her öğesi için gövdesini yürütür. - deyimi
do-while: Gövdesini bir veya daha fazla kez koşullu olarak yürütür. - deyimi
while: gövdesini koşullu olarak sıfır veya daha fazla kez yürütür.
for ve foreach yinelemeleri birbirinden ve ve do-while yinelemelerinden while açıkça ayırt edilmiş gibi görünüyor. Ancak ve do-while deyimlerinin tanımları while oldukça benzer görünüyor. ile arasında do-whilewhile ne zaman seçim yapmak gerektiğini bilmek daha rastgele görünür ve hatta biraz kafa karıştırıcı olabilir. Bazı sınama projeleri farkları net hale getirmede yardımcı olabilir.
Bu sınamada size üç ayrı kodlama projesi için koşullar sunulacaktır. Her proje, bir veya do-while deyimi kullanarak while bir yineleme kodu bloğu uygulamanızı gerektirir. ve do-while deyimleri arasında while seçim yapmak için belirtilen koşulları değerlendirmeniz gerekir. İlk seçiminiz umduğunuz gibi çalışmıyorsa, başladıktan sonra geçiş yapabilirsiniz.
Not
Kodlama projenizin koşulları, ve do-while deyimleri arasında while seçim yapmaya yardımcı olmak için kullanılabilir. Değerlendirilecek Boole ifadesi hakkında bildikleriniz veya bilmediğiniz şeyler bazen ve do-while deyimleri arasında while seçim yapmanıza yardımcı olabilir. Bu sınama alıştırmasında, proje koşulları Boole ifadesini oluşturmak için kullanılacak bilgileri içerir.
Bu sınama sırasında kullanıcı girişini yönetme
Kullanıcı girişini almak için bir Console.ReadLine() deyim kullanırken, giriş değişkeni için null atanabilir bir tür dizesi (belirlenmiş string?) kullanmak ve sonra kullanıcı tarafından girilen değeri değerlendirmek yaygın bir uygulamadır. Aşağıdaki kod örneği, kullanıcı girişini yakalamak için null atanabilir bir tür dizesi kullanır. Kullanıcı tarafından sağlanan değer null olduğunda yineleme devam eder:
string? readResult;
Console.WriteLine("Enter a string:");
do
{
readResult = Console.ReadLine();
} while (readResult == null);
deyimi tarafından değerlendirilen Boole ifadesi, kullanıcı girişinin while belirtilen gereksinimi karşıladığından emin olmak için kullanılabilir. Örneğin, kullanıcıdan en az üç karakter içeren bir dize girmesini isteyen bir komut isteminde aşağıdaki kod kullanılabilir:
string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
readResult = Console.ReadLine();
if (readResult != null)
{
if (readResult.Length >= 3)
{
validEntry = true;
}
else
{
Console.WriteLine("Your input is invalid, please try again.");
}
}
} while (validEntry == false);
Sayısal değerler için giriş kullanmak Console.ReadLine() istiyorsanız, dize değerini sayısal bir türe dönüştürmeniz gerekir.
yöntemi, int.TryParse() bir dize değerini tamsayıya dönüştürmek için kullanılabilir. yöntemi, değerlendirilecek bir dize ve bir değer atanacak bir tamsayı değişkeninin adı olmak üzere iki parametre kullanır. yöntemi bir Boole değeri döndürür. Aşağıdaki kod örneği yönteminin int.TryParse() kullanılmasını gösterir:
// capture user input in a string variable named readResult
int numericValue = 0;
bool validNumber = false;
validNumber = int.TryParse(readResult, out numericValue);
atanan readResult dize değeri geçerli bir tamsayıyı temsil ederse, değer adlı numericValuetamsayı değişkenine atanır ve true adlı validNumberBoole değişkenine atanır. atanan readResult değer geçerli bir tamsayıyı temsil etmiyorsa, validNumber değerine falseatanır. Örneğin, "7" değerine eşitse readResult , değer 7 öğesine numericValueatanır.
Kod projesi 1 - tamsayı girişini doğrulayan kod yazma
İlk kodlama projenizin uygulaması gereken koşullar şunlardır:
Çözümünüz bir
do-whileveyawhileyineleme içermelidir.Yineleme bloğundan önce: çözümünüz kullanıcıdan 5 ile 10 arasında bir tamsayı değeri istemesi için bir deyim kullanmalıdır
Console.WriteLine().Yineleme bloğunun içinde:
- Çözümünüz kullanıcıdan giriş almak için bir
Console.ReadLine()deyimi kullanmalıdır. - Çözümünüz girişin bir tamsayının geçerli bir gösterimi olduğundan emin olmalıdır.
- Tamsayı değeri 5 ile 10 arasında değilse, kodunuzun kullanıcıdan 5 ile 10 arasında bir tamsayı değeri istemesi için bir deyimi kullanması
Console.WriteLine()gerekir. - Çözümünüz yinelemeden çıkmadan önce tamsayı değerinin 5 ile 10 arasında olduğundan emin olmalıdır.
- Çözümünüz kullanıcıdan giriş almak için bir
Yineleme kodu bloğunun altında (sonra): çözümünüz kullanıcıya giriş değerinin kabul edildiğini bildirmek için bir
Console.WriteLine()deyimi kullanmalıdır.
Visual Studio Code'da boş bir Program.cs dosya açtığınızdan emin olun.
Gerekirse Visual Studio Code'ı açın ve düzenleyicide bir Program.cs dosyası hazırlamak için aşağıdaki adımları tamamlayın:
Dosya menüsünde Klasörü Aç'ı seçin.
CsharpProjects klasörüne gitmek ve açmak için Klasör Aç iletişim kutusunu kullanın.
Visual Studio Code EXPLORER panelinde Program.cs'ı seçin.
Visual Studio Code Seçimi menüsünde Tümünü Seç'i seçin ve delete tuşuna basın.
1. kod projesi için her koşulu uygulayan kodu yazın.
Uygulamanızı çalıştırın ve kodunuzun belirtilen gereksinimlere göre kullanıcı girişini doğrulayıp doğrulamadığını doğrulayın.
Örneğin, uygulamanızı çalıştırdığınızda "iki" ve "2" gibi giriş değerlerini reddetmeli, ancak "7" giriş değerini kabul etmelidir.
Yukarıda açıklanan örnekte konsol çıkışı aşağıdakine benzer olmalıdır:
Enter an integer value between 5 and 10 two Sorry, you entered an invalid number, please try again 2 You entered 2. Please enter a number between 5 and 10. 7 Your input value (7) has been accepted.
Kod projesi 2 - dize girişini doğrulayan kod yazma
İkinci kodlama projenizin uygulaması gereken koşullar şunlardır:
Çözümünüz bir
do-whileveyawhileyineleme içermelidir.Yineleme bloğundan önce: çözümünüz kullanıcıdan üç rol adı istemesi için bir
Console.WriteLine()deyim kullanmalıdır: Yönetici, Yönetici veya Kullanıcı.Yineleme bloğunun içinde:
- Çözümünüz kullanıcıdan giriş almak için bir
Console.ReadLine()deyimi kullanmalıdır. - Çözümünüz, girilen değerin üç rol seçeneğinden biriyle eşleştiğinden emin olmalıdır.
- Çözümünüz, baştaki
Trim()ve sondaki boşluk karakterlerini yoksaymak için giriş değerinde yöntemini kullanmalıdır. - Çözümünüz büyük/küçük harf kullanımını yoksaymak için giriş değerinde yöntemini kullanmalıdır
ToLower(). - Girilen değer rol seçeneklerinden biriyle eşleşmiyorsa, kodunuzun kullanıcıdan geçerli bir giriş istemesi için bir
Console.WriteLine()deyimi kullanması gerekir.
- Çözümünüz kullanıcıdan giriş almak için bir
Yineleme kodu bloğunun altında (sonra): Çözümünüz, kullanıcıya giriş değerinin kabul edildiğini bildirmek için bir
Console.WriteLine()deyimi kullanmalıdır.
Visual Studio Code Düzenleyicisi panelindeki tüm kodu açıklama satırı
- Kod düzenleyicisindeki tüm kod satırlarını seçin
- Düzenle menüsünde Açıklamayı Engelle'yi seçin.
Kod projesi 2 için her koşulu uygulayan kodu yazın.
Uygulamanızı çalıştırın ve kodunuzun belirtilen gereksinimlere göre kullanıcı girişini doğrulayıp doğrulamadığını doğrulayın.
Örneğin, uygulamanızı çalıştırdığınızda "Yönetici" gibi bir giriş değerini reddetmeli, ancak " yönetici " giriş değerini kabul etmelidir.
Bu örneğin konsol çıkışı aşağıdakine benzer olmalıdır:
Enter your role name (Administrator, Manager, or User) Admin The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User) Administrator Your input value (Administrator) has been accepted.
Kod projesi 3 - Bir dize dizisinin içeriğini işleyen kod yazma
Üçüncü kodlama projenizin uygulaması gereken koşullar şunlardır:
çözümünüz, kodlama mantığınızın girişini göstermek için aşağıdaki dize dizisini kullanmalıdır:
string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };Çözümünüz, bir dize içindeki nokta karakterinin konumunu tutmak için kullanılabilecek adlı
periodLocationbir tamsayı değişkeni bildirmelidir.Çözümünüz, dizideki her dize öğesini işlemek için kullanılabilecek bir dış
foreachveyafordöngü içermelidir. Döngülerin içinde işlenecek dize değişkeni olarak adlandırılmalıdırmyString.Dış döngüde, çözümünüz değişkendeki
IndexOf()ilk dönem karakterininStringkonumunu almak için sınıfının yönteminimyStringkullanmalıdır. Yöntem çağrısı şuna benzer olmalıdır:myString.IndexOf("."). Dizede nokta karakteri yoksa, -1 değeri döndürülür.Çözümünüz, değişkeni işlemek
do-whileiçin kullanılabilecek bir içwhileveyamyStringdöngü içermelidir.İç döngüde, çözümünüzün işlenen dizelerin her birinde yer alan her tümceyi ayıklaması ve görüntülemesi (konsola yazması) gerekir.
İç döngüde çözümünüz nokta karakterini görüntülememelidir.
İç döngüde, çözümünüz dize bilgilerini işlemek için ,
Remove()veSubstring()yöntemlerini kullanmalıdırTrimStart().
Visual Studio Code Düzenleyicisi panelindeki tüm kodu açıklama satırı
- Kod düzenleyicisindeki tüm kod satırlarını seçin
- Düzenle menüsünde Açıklamayı Engelle'yi seçin.
Kod projesi 3 için listelenen her koşulu uygulayan kodu yazın.
Uygulamanızı çalıştırın ve çıkışınızın gereksinimleri karşıladığını doğrulayın.
Kod mantığınız düzgün çalışıyorsa çıkışınız aşağıdakine benzer olmalıdır:
I like pizza I like roast chicken I like salad I like all three of the menu choices
İster takılıp çözüme göz atmanız gereksin, ister başarıyla bitirin, bu sınamanın çözüm projelerini görüntülemeye devam edin.