Alıştırma - Yeniden kullanılabilir yöntemler oluşturma
- 10 dakika
Uygulama geliştirirken, aynı şeyi tekrar tekrar yapmak için kod yazarken kendinizi bulabilirsiniz. Yinelenen kod yazmak yerine, aynı görevi gerçekleştirmek için bir yöntem kullanmak kodunuzu kısaltır ve uygulamaları daha hızlı geliştirmenize yardımcı olur. Bu alıştırmada yinelenen kodu belirleyip yeniden kullanılabilir bir yöntemle değiştireceksiniz. Haydi başlayalım!
Yinelenen kodu tanımlama
Bu görevde, farklı saat dilimlerindeki ilaç sürelerini izleyen bir uygulamaya göz atacaksınız. Kullanıcı geçerli saat dilimini ve hedef saat dilimini girer. İlaç zamanlamaları görüntülenir ve yeni saat dilimi için ayarlanır.
Visual Studio Code Düzenleyicisi'nde, önceki alıştırmalardaki mevcut kodları silin.
Aşağıdaki kodu kopyalayıp Visual Studio Code Düzenleyicisi'ne yapıştırın:
using System; int[] times = {800, 1200, 1600, 2000}; int diff = 0; Console.WriteLine("Enter current GMT"); int currentGMT = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Current Medicine Schedule:"); /* Format and display medicine times */ foreach (int val in times) { string time = val.ToString(); int len = time.Length; if (len >= 3) { time = time.Insert(len - 2, ":"); } else if (len == 2) { time = time.Insert(0, "0:"); } else { time = time.Insert(0, "0:0"); } Console.Write($"{time} "); } Console.WriteLine(); Console.WriteLine("Enter new GMT"); int newGMT = Convert.ToInt32(Console.ReadLine()); if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12) { Console.WriteLine("Invalid GMT"); } else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) { diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT)); /* Adjust the times by adding the difference, keeping the value within 24 hours */ for (int i = 0; i < times.Length; i++) { times[i] = ((times[i] + diff)) % 2400; } } else { diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT)); /* Adjust the times by adding the difference, keeping the value within 24 hours */ for (int i = 0; i < times.Length; i++) { times[i] = ((times[i] + diff)) % 2400; } } Console.WriteLine("New Medicine Schedule:"); /* Format and display medicine times */ foreach (int val in times) { string time = val.ToString(); int len = time.Length; if (len >= 3) { time = time.Insert(len - 2, ":"); } else if (len == 2) { time = time.Insert(0, "0:"); } else { time = time.Insert(0, "0:0"); } Console.Write($"{time} "); } Console.WriteLine();Aynı kodla tekrarlanan birkaç
fordöngü olduğuna dikkat edin.İlaç sürelerini biçimlendiren ve görüntüleyen iki
foreachdöngü vardır. Saat dilimi farkı göre saatleri ayarlayan başka ikifordöngü vardır.Kod yazarken, aynı görevi yerine getirmek için kod bloklarını yinelediğiniz fark edebilirsiniz. Bu, bunun yerine görevi gerçekleştirmek için bir yöntem kullanarak kodunuzu birleştirmek için mükemmel bir fırsattır. Hadi alıştırma yapalım!
Yinelenen görevleri gerçekleştirmek için yöntemler oluşturma
Yinelenen kodu tanımladığınıza göre, kodu içeren bir yöntem oluşturabilir ve yinelenenleri kaldırabilirsiniz. Yöntemleri kullanmak kodunuzu kısaltmanın ve okunabilirliği geliştirmenin ek bir bonusunu sunar!
foreach Döngüler zaman değerlerini biçimlendirip görüntüler, böylece yönteme bu görevi açıkça yansıtan bir ad verebilirsiniz. Saatleri ayarlayan döngüde for de aynı işlemi yapabilirsiniz. Haydi başlayalım!
Önceki kodun sonuna yeni bir boş kod satırı girin.
Yeni boş kod satırında, aşağıdaki kodu girerek bir yöntem imzası oluşturun:
void DisplayTimes() { }Yöntem gövdesini tanımlamak için aşağıdaki gibi bloğu kopyalayıp yapıştırarak yöntemini güncelleştirin
DisplayTimesforeach:void DisplayTimes() { /* Format and display medicine times */ foreach (int val in times) { string time = val.ToString(); int len = time.Length; if (len >= 3) { time = time.Insert(len - 2, ":"); } else if (len == 2) { time = time.Insert(0, "0:"); } else { time = time.Insert(0, "0:0"); } Console.Write($"{time} "); } Console.WriteLine(); }Bu yöntemde, zaman görüntülendikten sonra yeni bir satır eklemek için sonuna çağrısı
Console.WriteLineeklersiniz. Ardından, saatleri saat dilimi farkına göre ayarlamak için başka bir yöntem oluşturacaksınız.Önceki kodun sonuna yeni bir boş kod satırı girin.
Yeni boş kod satırında, aşağıdaki kodu girerek bir yöntem imzası oluşturun:
void AdjustTimes() { }aşağıdaki gibi döngü kopyalayıp
AdjustTimesyapıştırarak yöntemini güncelleştirinfor:void AdjustTimes() { /* Adjust the times by adding the difference, keeping the value within 24 hours */ for (int i = 0; i < times.Length; i++) { times[i] = ((times[i] + diff)) % 2400; } }
3. Adım: Yöntemleri çağırma
Bu görevde, yinelenen kod bloklarını silecek ve bunları oluşturduğunuz yöntemlere yapılan çağrılarla değiştireceksiniz.
"Tıp sürelerini biçimlendirme ve görüntüleme" açıklamasının altında yinelenen
foreachdöngünün ilk örneğini bulun:Console.WriteLine("Current Medicine Schedule:"); /* Format and display medicine times */ foreach (int val in times) { ... } Console.WriteLine(); Console.WriteLine("Enter new GMT");Tanımladığınız kodu yöntemine
DisplayTimesyapılan bir çağrıyla değiştirin. Değiştirme işlemi aşağıdaki kodla sonuçlanmalıdır:Console.WriteLine("Current Medicine Schedule:"); DisplayTimes(); Console.WriteLine("Enter new GMT");Ardından, yinelenen kodun ikinci örneğini değiştireceksiniz.
"Tıp sürelerini biçimlendirme ve görüntüleme" açıklamasının altında döngünün
foreachikinci örneğini bulun:Console.WriteLine("New Medicine Schedule:"); /* Format and display medicine times */ foreach (int val in times) { ... } Console.WriteLine();Tanımladığınız kodu yöntemine
DisplayTimesyapılan bir çağrıyla değiştirin. Değiştirme işlemi aşağıdaki kodla sonuçlanmalıdır:Console.WriteLine("New Medicine Schedule:"); DisplayTimes();Büyük bir kod bloğu yerine bir yöntem kullanmanın daha fazla netlik sağladığına ve kodun anlaşılmasını kolaylaştırmaya nasıl olanak sağladığına dikkat edin. Şimdi de oluşturduğunuz yöntemle
AdjustTimesaynı işlemi yapalım.Yinelenen
for-loops ile aşağıdaki kodu bulun:else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) { diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT)); /* Adjust the times by adding the difference, keeping the value within 24 hours */ for (int i = 0; i < times.Length; i++) { times[i] = ((times[i] + diff)) % 2400; } } else { diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT)); /* Adjust the times by adding the difference, keeping the value within 24 hours */ for (int i = 0; i < times.Length; i++) { times[i] = ((times[i] + diff)) % 2400; } }"Farkı ekleyerek saatleri ayarlama" açıklamasının altındaki yinelenen kod örneklerini yönteminize
AdjustTimesyapılan çağrılarla değiştirin. Değiştirme işlemi aşağıdaki kodla sonuçlanmalıdır:else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) { diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT)); AdjustTimes(); } else { diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT)); AdjustTimes(); }Artık çoğaltılan kodun tümü yeni yönteminizle değiştirildi. Kodunuzun ne kadar okunabilir ve kısa göründüğüne dikkat edin!
Çalışmanızı Denetleme
Bu görevde, uygulamanızı Tümleşik Terminal'den çalıştıracak ve kodunuzun düzgün çalıştığını doğrulayacaksınız. Haydi başlayalım.
Doğru olduğundan emin olmak için kodunuzu aşağıdakilerle karşılaştırın:
int[] times = {800, 1200, 1600, 2000}; int diff = 0; Console.WriteLine("Enter current GMT"); int currentGMT = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Current Medicine Schedule:"); DisplayTimes(); Console.WriteLine("Enter new GMT"); int newGMT = Convert.ToInt32(Console.ReadLine()); if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12) { Console.WriteLine("Invalid GMT"); } else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) { diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT)); AdjustTimes(); } else { diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT)); AdjustTimes(); } Console.WriteLine("New Medicine Schedule:"); DisplayTimes(); void DisplayTimes() { /* Format and display medicine times */ foreach (int val in times) { string time = val.ToString(); int len = time.Length; if (len >= 3) { time = time.Insert(len - 2, ":"); } else if (len == 2) { time = time.Insert(0, "0:"); } else { time = time.Insert(0, "0:0"); } Console.Write($"{time} "); } Console.WriteLine(); } void AdjustTimes() { /* Adjust the times by adding the difference, keeping the value within 24 hours */ for (int i = 0; i < times.Length; i++) { times[i] = ((times[i] + diff)) % 2400; } }Ctrlveya Visual Studio Code Dosya menüsünü kullanarak çalışmanızı kaydedin.
Gerekirse Visual Studio Code'un Tümleşik Terminal panelini açın.
EXPLORER panelinde, TestProject klasör konumunuzdaki bir Terminali açmak için TestProjesi'ne sağ tıklayın ve Tümleşik Terminalde Aç'ı seçin.
Terminal komut istemine dotnet run girin
GMT istemleri için -6 ve +6 girin.
Kodunuzun aşağıdaki çıkışı ürettiğini doğrulayın:
Enter current GMT -6 Current Medicine Schedule: 8:00 12:00 16:00 20:00 Enter new GMT +6 New Medicine Schedule: 20:00 0:00 4:00 8:00Kodunuz farklı sonuçlar görüntülüyorsa hatanızı bulmak ve güncelleştirmeler yapmak için kodunuzu gözden geçirmeniz gerekir. Sorunu düzeltip düzeltmediğinize bakmak için kodu yeniden çalıştırın. Kodunuz beklenen sonuçları elde edene kadar kodunuzu güncelleştirmeye ve çalıştırmaya devam edin.
Bilgilerinizi kontrol edin
Geri Bildirim
Bu sayfayı yararlı buldunuz mu?
No
Bu konu hakkında yardıma mı ihtiyacınız var?
Bu konuyu açıklığa kavuşturmak veya bu konuda size yol göstermek için Ask Learn'ü kullanmayı denemek ister misiniz?