Meratakan Percabangan Bersarang
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 22 dari 66.
Percabangan bersarang dapat membuat kodemu sulit dibaca dan dipelihara. Meratakannya membantu meningkatkan keterbacaan dengan mengurangi tingkat indentasi.
Berikut contoh percabangan yang bertingkat dalam:
if (userLoggedIn)
{
if (userHasPermission)
{
if (fileExists)
{
// Proses file
ProcessFile();
}
else
{
Console.WriteLine("File not found");
}
}
else
{
Console.WriteLine("No permission");
}
}
else
{
Console.WriteLine("Not logged in");
}
Kita bisa meratakan ini menggunakan pengembalian lebih awal atau klausa penjaga:
if (!userLoggedIn)
{
Console.WriteLine("Not logged in");
return;
}
if (!userHasPermission)
{
Console.WriteLine("No permission");
return;
}
if (!fileExists)
{
Console.WriteLine("File not found");
return;
}
// Proses file
ProcessFile();
Perhatikan bahwa kode yang diratakan memiliki indentasi yang lebih sedikit dan lebih mudah diikuti.
Tantangan
MudahDalam pemeriksaan kelayakan beasiswa, percabangan bersarang yang dalam membuat kode sulit dibaca dan dipelihara. Dalam tantangan ini, kamu akan mengubah struktur percabangan bersarang yang berantakan menjadi kode yang rapi dan mudah dibaca menggunakan guard clause.
Guard clause adalah pernyataan return awal yang langsung menangani kondisi tertentu, sehingga bagian fungsi lainnya dapat berfokus pada "alur normal".
Tugasmu adalah melengkapi guard clause yang belum diterapkan sepenuhnya dalam method CheckScholarshipEligibility sesuai aturan berikut:
- Jika usia kurang dari 17, segera kembalikan "Not eligible due to age requirement"
- Jika GPA ≥ 3.5 DAN siswa memiliki rekomendasi, berikan beasiswa penuh
- Jika GPA ≥ 3.8, berikan beasiswa penuh (meskipun tanpa rekomendasi)
- Jika GPA ≥ 3.0 DAN siswa memiliki rekomendasi, berikan beasiswa sebagian
- Jika GPA berada di antara 3.5 dan 3.8, berikan beasiswa sebagian
- Untuk semua kasus lainnya, kembalikan "Not eligible for scholarship"
Coba sendiri
using System;
class Program
{
public static void CheckScholarshipEligibility(int age, double gpa, bool hasRecommendation)
{
// Klausa penjaga untuk persyaratan usia
if (age < 17)
{
Console.WriteLine("Not eligible due to age requirement.");
return;
}
// Klausa penjaga untuk beasiswa penuh dengan rekomendasi
if (/* Lengkapi kondisi ini */)
{
Console.WriteLine("Full scholarship granted!");
return;
}
// Klausa penjaga untuk beasiswa penuh dengan GPA yang luar biasa
if (/* Lengkapi kondisi ini */)
{
Console.WriteLine("Full scholarship granted!");
return;
}
// Klausa penjaga untuk beasiswa parsial dengan rekomendasi
if (/* Lengkapi kondisi ini */)
{
Console.WriteLine("Partial scholarship granted.");
return;
}
// Klausa penjaga untuk beasiswa parsial dengan GPA yang baik
if (/* Lengkapi kondisi ini */)
{
Console.WriteLine("Partial scholarship granted.");
return;
}
// Kasus default: tidak memenuhi syarat
Console.WriteLine("Not eligible for scholarship.");
}
static void Main(string[] args)
{
// Kasus uji untuk umpan balik langsung
Console.WriteLine("Test Case 1: Age 16, GPA 4.0, Has Recommendation: True");
CheckScholarshipEligibility(16, 4.0, true);
Console.WriteLine("\nTest Case 2: Age 18, GPA 3.9, Has Recommendation: False");
CheckScholarshipEligibility(18, 3.9, false);
Console.WriteLine("\nTest Case 3: Age 17, GPA 3.6, Has Recommendation: True");
CheckScholarshipEligibility(17, 3.6, true);
Console.WriteLine("\nTest Case 4: Age 19, GPA 3.2, Has Recommendation: True");
CheckScholarshipEligibility(19, 3.2, true);
Console.WriteLine("\nTest Case 5: Age 18, GPA 2.8, Has Recommendation: False");
CheckScholarshipEligibility(18, 2.8, false);
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1array Multidimensi
Dasar-Dasar array 2DMendeklarasikan dan Menginisialisasi array 2DMengakses Elemen array 2DPerulangan Bersarang dengan array 2Darray BergerigiOperasi Matriks UmumRangkuman: array Multidimensi4Teknik Alur Kontrol
Pengembalian DiniKlausa PenjagaPernyataan Lompatan (goto)Break dan ContinueMeratakan Percabangan Bersarang7Operator Logika Lanjutan
Evaluasi Hubung SingkatOperator Logika PercabanganPrioritas OperatorRingkasan Operator Lanjutan2Pengambilan Keputusan Tingkat Lanjut
Beberapa KondisiLogika Boolean yang KompleksPerbandingan If dan SwitchPernyataan Switch BersarangUlasan: Pengambilan Keputusan Tingkat Lanjut5Penanganan Exception
Dasar Try-CatchJenis ExceptionBeberapa Blok CatchBekerja dengan fileBlok FinallyUsing vs. Try-FinallyException KustomRingkasan: Penanganan error3Peningkatan Loop
Performa LoopIterasi yang KompleksSetiap Jenis LoopRefactoring LoopRangkuman: Loop yang Dioptimalkan6Penanganan Null
Dasar Referensi NullTipe Nilai NullablePola Pemeriksaan NullPemrograman DefensifRingkasan: Keamanan NullLatihan sendiri: Compiler C# online