Menu
CoddyTech

Menerima Input Pengguna

Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 34 dari 78.

challenge icon

Tantangan

Mudah

Pada pelajaran sebelumnya, kamu membuat pesan sambutan untuk Bill Split Calculator. Sekarang, tambahkan fungsi untuk menerima input pengguna guna menghitung tagihan.

Setelah pesan sambutan yang sudah ada, baca tiga input dari pengguna:

  1. Total tagihan
  2. Persentase tip (sebagai bilangan bulat, misalnya 15 untuk 15%)
  3. Jumlah orang yang membagi tagihan

Dalam skrip R yang dijalankan secara noninteraktif (seperti di platform ini), input dibaca dari aliran input standar. Untuk melakukannya, pertama-tama buka koneksi ke stdin menggunakan file(), lalu baca setiap baris dengan readLines(), dan tutup koneksi setelah selesai:

con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)

Berikut fungsi setiap bagian:

  • file("stdin", "r"): membuka aliran input standar untuk dibaca dan menyimpannya di con
  • readLines(con, n = 1): membaca tepat satu baris dari koneksi tersebut. Catatan: readLines() berbeda dari readline(): readLines() bekerja dengan koneksi file (termasuk stdin) dan dapat membaca beberapa baris sekaligus menggunakan n =, sedangkan readline() hanya bekerja secara interaktif di konsol R
  • suppressWarnings(...): menyembunyikan peringatan yang tidak berbahaya dan muncul saat membaca dari stdin dengan cara ini. Saat R membaca dari stdin dalam skrip, terkadang muncul peringatan seperti "incomplete final line" meskipun semuanya berfungsi dengan benar. Membungkus pemanggilan dengan suppressWarnings() menyembunyikan pesan ini agar tidak memenuhi output. Ini tidak memengaruhi nilai yang dibaca
  • as.numeric(...): mengubah input teks menjadi angka
  • close(con): menutup koneksi setelah semua input dibaca

Simpan ketiga nilai dalam variabel bernama bill, tip_percent, dan people.

Setelah membaca input, tampilkan pesan konfirmasi yang menunjukkan nilai yang dimasukkan dengan format berikut:

Bill: $[bill]
Tip: [tip_percent]%
People: [people]

Gunakan cat() untuk semua output dan sertakan karakter baris baru \n jika diperlukan. Gunakan sep = "" dalam setiap pemanggilan cat() agar tidak ada spasi yang tidak diinginkan.

Secara default, cat() menyisipkan spasi di antara setiap item yang dicetaknya. Contohnya:

cat("Bill: $", 120, "\n")   # prints: Bill: $ 120 

Perhatikan spasi yang tidak diinginkan antara $ dan 120, serta sebelum karakter baris baru. Menambahkan sep = "" memberi tahu cat() untuk menggunakan string kosong sebagai pemisah, sehingga tidak ada yang disisipkan di antara item:

cat("Bill: $", 120, "\n", sep = "")   # prints: Bill: $120

Terapkan pola ini pada ketiga baris konfirmasi:

cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")

Contohnya, jika inputnya adalah 120, 18, dan 4, output lengkapnya seharusnya:

Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4

Coba sendiri

# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\n")

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler R online