Analisis Data
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 42 dari 66.
Tantangan
SedangSekarang kita sudah bisa mengumpulkan dan memperbarui data siswa. Mari kita terapkan fungsi analisis untuk mendapatkan wawasan dari nilai. Buat class bernama DataAnalyzer dengan method berikut:
CalculateStudentAverage(int[][] scoreGrid, int studentIndex): Menghitung dan mengembalikan nilai rata-rata untuk siswa tertentu. Kembalikan -1 jika studentIndex tidak valid.CalculateAssignmentAverage(int[][] scoreGrid, int assignmentIndex): Menghitung dan mengembalikan nilai rata-rata untuk tugas tertentu dari semua siswa. Kembalikan -1 jika assignmentIndex tidak valid.FindHighestScore(int[][] scoreGrid): Mengembalikan array berisi tiga bilangan bulat yang mewakili nilai tertinggi dan lokasinya: [studentIndex, assignmentIndex, score]. Jika beberapa entri memiliki nilai tertinggi yang sama, kembalikan entri pertama yang ditemukan.
Catatan: Saat menghitung nilai rata-rata, pertimbangkan hanya nilai yang valid (0-100). Abaikan tugas yang belum dinilai (-1).
Coba sendiri
using System; // Jangan hapus baris ini
public class DataAnalyzer
{
public static double CalculateStudentAverage(int[][] scoreGrid, int studentIndex)
{
// Tulis kodemu di sini
}
public static double CalculateAssignmentAverage(int[][] scoreGrid, int assignmentIndex)
{
// Tulis kodemu di sini
}
public static int[] FindHighestScore(int[][] scoreGrid)
{
// Tulis kodemu di sini
}
}
// Diperlukan untuk pengujian, jangan ubah
public class DataCollector
{
public static int[][] CreateScoreGrid(int students, int assignments)
{
int[][] scoreGrid = new int[students][];
for (int i = 0; i < students; i++)
{
scoreGrid[i] = new int[assignments];
}
return scoreGrid;
}
public static bool ValidateScore(int score)
{
return score >= 0 && score <= 100;
}
public static int[][] PopulateWithDefaultValues(int[][] scoreGrid)
{
for (int i = 0; i < scoreGrid.Length; i++)
{
for (int j = 0; j < scoreGrid[i].Length; j++)
{
scoreGrid[i][j] = -1;
}
}
return scoreGrid;
}
}
public class DataEntry
{
public static int SetStudentScore(int[][] scoreGrid, int studentIndex, int assignmentIndex, int score)
{
// Periksa apakah indeks berada di luar batas
if (studentIndex < 0 || studentIndex >= scoreGrid.Length ||
assignmentIndex < 0 || assignmentIndex >= scoreGrid[studentIndex].Length)
{
return -1;
}
// Validasi skor
if (!DataCollector.ValidateScore(score))
{
return -2;
}
// Tetapkan skor
scoreGrid[studentIndex][assignmentIndex] = score;
return 0;
}
public static int UpdateAllScores(int[][] scoreGrid, int[] studentIndices, int assignmentIndex, int score)
{
int successCount = 0;
for (int i = 0; i < studentIndices.Length; i++)
{
int result = SetStudentScore(scoreGrid, studentIndices[i], assignmentIndex, score);
if (result == 0)
{
successCount++;
}
}
return successCount;
}
}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 error8Sistem Analisis Data
Penyiapan Pengumpulan DataLogika Entri Data3Peningkatan 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