Menu
CoddyTech

Struct sebagai Parameter Fungsi

Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 24 dari 66.

Sekarang setelah kamu tahu cara membuat dan mengubah struct, mari kita pelajari cara menggunakannya dengan fungsi. Sama seperti tipe data lainnya di Rust, kamu bisa meneruskan instance struct ke fungsi dan mengembalikannya dari fungsi.

Untuk meneruskan struct ke fungsi, kamu cukup menyertakannya sebagai parameter dalam definisi fungsi:

fn calculate_area(rect: Rectangle) -> i32 {
    rect.width * rect.height
}

Fungsi ini menerima struct Rectangle sebagai parameter dan mengembalikan i32. Di dalam fungsi, kamu dapat mengakses field struct menggunakan notasi titik, sama seperti di tempat lain.

Kamu juga bisa mengembalikan struct dari fungsi dengan menetapkan tipe struct sebagai tipe kembalian:

fn create_square(size: i32) -> Rectangle {
    Rectangle {
        width: size,
        height: size,
    }
}

Menggunakan struct dengan fungsi membuat kodemu lebih teratur dan bermakna. Daripada meneruskan beberapa parameter secara terpisah, kamu dapat mengelompokkan data yang saling terkait dan meneruskannya sebagai satu kesatuan yang terdefinisi dengan baik.

challenge icon

Tantangan

Mudah

Kamu akan menerima empat input: lebar persegi panjang (sebagai bilangan bulat), tinggi persegi panjang (sebagai bilangan bulat), panjang sisi persegi (sebagai bilangan bulat), dan angka pilihan (1 atau 2). Definisikan struct Rectangle dengan dua field: width: i32 dan height: i32. Buat dua fungsi: satu fungsi menerima Rectangle dan menghitung luasnya, dan fungsi lainnya menerima panjang sisi dan mengembalikan Rectangle yang mewakili persegi. Berdasarkan input pilihan, hitung dan cetak luas yang sesuai.

Persyaratan:

  • Definisikan struct Rectangle dengan field: width: i32 dan height: i32
  • Buat fungsi calculate_area yang menerima Rectangle sebagai parameter dan mengembalikan i32 (luasnya)
  • Buat fungsi create_square yang menerima i32 (panjang sisi) sebagai parameter dan mengembalikan Rectangle dengan lebar dan tinggi yang sama
  • Baca input pertama dan ubah menjadi i32 untuk lebar persegi panjang
  • Baca input kedua dan ubah menjadi i32 untuk tinggi persegi panjang
  • Buat sebuah instance Rectangle dengan dimensi tersebut
  • Baca input ketiga dan ubah menjadi i32 untuk panjang sisi persegi
  • Baca input keempat dan ubah menjadi i32 untuk pilihan (1 atau 2)
  • Jika pilihan adalah 1: hitung dan cetak luas persegi panjang
  • Jika pilihan adalah 2: buat persegi menggunakan create_square, lalu hitung dan cetak luasnya

Input:

  • Baris pertama: Lebar persegi panjang sebagai bilangan bulat (misalnya, 8)
  • Baris kedua: Tinggi persegi panjang sebagai bilangan bulat (misalnya, 5)
  • Baris ketiga: Panjang sisi persegi sebagai bilangan bulat (misalnya, 6)
  • Baris keempat: Pilihan sebagai bilangan bulat, yaitu 1 atau 2 (misalnya, 1)

Output:

  • Jika pilihan adalah 1: Rectangle area: [area]
  • Jika pilihan adalah 2: Square area: [area]

Coba sendiri

use std::io;

// TODO: Definisikan struct Rectangle di sini


// TODO: Definisikan fungsi calculate_area di sini


// TODO: Definisikan fungsi create_square di sini


fn main() {
    // Baca lebar persegi panjang
    let mut width_input = String::new();
    io::stdin().read_line(&mut width_input).expect("Failed to read line");
    let width: i32 = width_input.trim().parse().expect("Invalid input");
    
    // Baca tinggi persegi panjang
    let mut height_input = String::new();
    io::stdin().read_line(&mut height_input).expect("Failed to read line");
    let height: i32 = height_input.trim().parse().expect("Invalid input");
    
    // Baca panjang sisi persegi
    let mut side_input = String::new();
    io::stdin().read_line(&mut side_input).expect("Failed to read line");
    let side: i32 = side_input.trim().parse().expect("Invalid input");
    
    // Baca pilihan
    let mut choice_input = String::new();
    io::stdin().read_line(&mut choice_input).expect("Failed to read line");
    let choice: i32 = choice_input.trim().parse().expect("Invalid input");
    
    // TODO: Tulis kodemu di bawah ini
    // Buat instance Rectangle, periksa pilihan, lalu hitung luas yang sesuai
    
    
    // Tampilkan output hasil berdasarkan pilihan
    // Gunakan: println!("Rectangle area: {}", area); atau println!("Square area: {}", area);
}
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 Rust online