Menu
CoddyTech

Memeriksa kunci dan nilai

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 27 dari 65.

Sebelum mengakses data dalam Map, penting untuk memastikan bahwa kunci atau nilai yang kamu cari benar-benar ada. Dart menyediakan dua method untuk ini: containsKey() dan containsValue().

method containsKey() memeriksa apakah kunci tertentu ada di map, lalu mengembalikan true jika ditemukan dan false jika tidak. Ini sangat berguna sebelum mencoba mengakses nilai, sehingga kamu dapat menghindari kemungkinan error.

Map<String, String> userPermissions = {
  'user123': 'admin',
  'user456': 'editor',
  'user789': 'viewer'
};

bool hasUser = userPermissions.containsKey('user123');
print(hasUser);  // true

bool hasUnknownUser = userPermissions.containsKey('user999');
print(hasUnknownUser);  // false

Demikian pula, containsValue() memeriksa apakah nilai tertentu ada di mana pun dalam map. Method ini menelusuri semua nilai dan mengembalikan true jika menemukan kecocokan.

bool hasAdmin = userPermissions.containsValue('admin');
print(hasAdmin);  // true

Method ini sangat penting untuk menulis kode yang aman dan menangani data yang hilang dengan baik, sehingga mencegah error saat program berjalan ketika kamu bekerja dengan isi map yang dinamis.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem autentikasi pengguna dengan memverifikasi kredensial pengguna dan memeriksa tingkat izin. Programmu harus:

  1. Membaca input string yang mewakili nama sistem
  2. Membaca beberapa pasang input yang mewakili nama pengguna dan tingkat izinnya (input akan berakhir saat kamu menerima "users_done")
  3. Membaca input string yang mewakili nama pengguna yang akan diperiksa
  4. Membaca input string yang mewakili tingkat izin yang akan diverifikasi
  5. Membuat Map untuk menyimpan nama pengguna sebagai kunci dan tingkat izinnya sebagai nilai
  6. Menggunakan containsKey() untuk memeriksa apakah nama pengguna ada di sistem
  7. Menggunakan containsValue() untuk memeriksa apakah tingkat izin yang ditentukan ada di mana pun dalam sistem
  8. Mencetak analisis autentikasi dengan format persis seperti yang ditunjukkan di bawah

Misalnya, jika nama sistemnya "Corporate Network", pengguna yang ada mencakup "alice" dengan "admin", "bob" dengan "editor", "charlie" dengan "viewer", "diana" dengan "admin", nama pengguna yang akan diperiksa adalah "alice", dan tingkat izin yang akan diverifikasi adalah "admin", programmu harus menghasilkan:

System: Corporate Network
User Database: {alice: admin, bob: editor, charlie: viewer, diana: admin}
Authentication Check:
Username 'alice' exists: true
Permission 'admin' exists in system: true
User 'alice' has permission 'admin': true
Access Status: GRANTED - User authenticated with valid permissions
Security Level: High (admin access detected)

Jika nama sistemnya "School Portal", pengguna yang ada mencakup "teacher1" dengan "instructor", "student1" dengan "student", "admin1" dengan "administrator", nama pengguna yang akan diperiksa adalah "guest", dan tingkat izin yang akan diverifikasi adalah "student", programmu harus menghasilkan:

System: School Portal
User Database: {teacher1: instructor, student1: student, admin1: administrator}
Authentication Check:
Username 'guest' exists: false
Permission 'student' exists in system: true
User 'guest' has permission 'student': false
Access Status: DENIED - Username not found in system
Security Level: Low (user not registered)

Jika nama sistemnya "Library System", pengguna yang ada mencakup "librarian" dengan "staff", "member1" dengan "member", "member2" dengan "member", nama pengguna yang akan diperiksa adalah "librarian", dan tingkat izin yang akan diverifikasi adalah "premium", programmu harus menghasilkan:

System: Library System
User Database: {librarian: staff, member1: member, member2: member}
Authentication Check:
Username 'librarian' exists: true
Permission 'premium' exists in system: false
User 'librarian' has permission 'premium': false
Access Status: DENIED - Permission level not available
Security Level: Medium (valid user, invalid permission)

Programmu harus menggunakan containsKey() untuk memverifikasi apakah nama pengguna ada dan containsValue() untuk memeriksa apakah tingkat izin tersebut ada di mana pun dalam sistem. Untuk memeriksa apakah pengguna tertentu memiliki izin tertentu, bandingkan tingkat izin aktual pengguna dengan tingkat izin yang diminta. Tentukan tingkat keamanan berdasarkan hasilnya: "High" jika akses diberikan dengan izin jenis admin (admin, administrator, staff), "Medium" jika pengguna ada tetapi izinnya salah, dan "Low" jika pengguna tidak ada. Format inputnya adalah: nama sistem, lalu nama pengguna dan tingkat izin secara bergantian, diakhiri dengan "users_done", kemudian nama pengguna yang akan diperiksa dan tingkat izin yang akan diverifikasi.

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama sistem
  String? systemName = stdin.readLineSync();
  
  // Buat Map untuk menyimpan nama pengguna dan tingkat izin mereka
  Map<String, String> userDatabase = {};
  
  // Baca data pengguna hingga "users_done"
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "users_done") {
      break;
    }
    String username = input!;
    String? permission = stdin.readLineSync();
    userDatabase[username] = permission!;
  }
  
  // Baca nama pengguna yang akan diperiksa dan tingkat izin yang akan diverifikasi
  String? usernameToCheck = stdin.readLineSync();
  String? permissionToVerify = stdin.readLineSync();
  
  // TODO: Tulis kodemu di bawah ini
  // Gunakan containsKey() untuk memeriksa apakah nama pengguna ada
  // Gunakan containsValue() untuk memeriksa apakah tingkat izin ada dalam sistem
  // Periksa apakah pengguna tersebut memiliki izin yang dimaksud
  // Tentukan status akses dan tingkat keamanan:
  //   - "High (admin access detected)" jika akses diberikan DAN izinnya adalah admin, administrator, atau staff
  //   - "Medium (standard access)" jika akses diberikan tetapi izinnya bukan tipe admin
  //   - "Medium (valid user, invalid permission)" jika pengguna ada tetapi izinnya tidak sesuai
  //   - "Low (user not registered)" jika pengguna tidak ada
  
  // Cetak hasil analisis autentikasi
  print("System: $systemName");
  print("User Database: $userDatabase");
  print("Authentication Check:");
  // Tambahkan pernyataan output-mu di sini
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online