> ## Documentation Index
> Fetch the complete documentation index at: https://v1-learn.neoartd.my.id/llms.txt
> Use this file to discover all available pages before exploring further.

# UTS

# Soal 1

<Tabs>
  <Tab title="Question">
    Buatlah sebuah program untuk menampilkan ascii art dari teks **IF2A-023** sesuai dengan output di bawah.

    ```plaintext theme={null}
    @@@ @@@@@@@@@                @@
    @@@ @@@        @@@@@@       @@@@                  @@@       @@@@@@  @@@@@@
    @@@ @@@       @@   @@@     @@  @@@              @@@  @@@   @@   @@@    @@@
    @@@ @@@@@@@       @@@     @@@   @@@    @@@@@@ @@@     @@@      @@@   @@@
    @@@ @@@          @@@     @@@@@@@@@@@          @@@      @@@    @@@       @@@
    @@@ @@@        @@@      @@@       @@@          @@@    @@@   @@@          @@@
    @@@ @@@       @@@@@@@@ @@@         @@@          @@@@       @@@@@@@@ @@@@@@
    ```

    Simpan program dalam sebuah file dengan nama **IF2A023.java** (nama class = **IF2A023**)
  </Tab>

  <Tab title="Answer">
    ```java IF2A023.java theme={null}
      public class IF2A023 {
          public static void main(String[] args) {
              System.out.println("@@@ @@@@@@@@@                @@");
              System.out.println("@@@ @@@        @@@@@@       @@@@                  @@@       @@@@@@  @@@@@@");
              System.out.println("@@@ @@@       @@   @@@     @@  @@@              @@@  @@@   @@   @@@    @@@");
              System.out.println("@@@ @@@@@@@       @@@     @@@   @@@    @@@@@@ @@@     @@@      @@@   @@@");
              System.out.println("@@@ @@@          @@@     @@@@@@@@@@@          @@@      @@@    @@@       @@@");
              System.out.println("@@@ @@@        @@@      @@@       @@@          @@@    @@@   @@@          @@@");
              System.out.println("@@@ @@@       @@@@@@@@ @@@         @@@          @@@@       @@@@@@@@ @@@@@@");
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 2

<Tabs>
  <Tab title="Question">
    Buatlah sebuah program untuk menampilkan biodata sesuai dengan output berikut:

    ```plaintext theme={null}
    Nama saya Muhammad Muqoffin Nuha.
    Usia saya sekarang 21 tahun.
    Saat ini saya sedang belajar di UISI.
    Indeks prestasi saya semester lalu sebesar 3.75.
    Semester ini, target saya bisa meraih IP 4.00.
    Artinya saya harus meningkatkan IP saya sebesar 0.25.
    Semoga saya bisa lulus dari UISI tepat waktu 1 tahun lagi.
    Saat itu saya akan genap berusia 22 tahun.
    ```

    Gunakan variabel dengan tipe data yang sesuai untuk menyimpan informasi-informasi yang terlibat di dalamnya.

    Jika ada nilai yang bisa dihitung dari sebuah variabel, gunakan juga operasi aritmatika untuk menghitungnya.

    Simpan program dalam sebuah file dengan nama **Biodata023.java** (nama class = **Biodata023**)
  </Tab>

  <Tab title="Answer">
    ```java Biodata023.java theme={null}
      public class Biodata023 {
          public static void main(String[] args) {
              String nama = "Muhammad Muqoffin Nuha", kampus = "UISI";
              int usia = 21, tahunLulus = 1;
              double ipLalu = 3.75, targetIp = 4.00, selisihIp = targetIp - ipLalu;

              System.out.printf("Nama saya %s.\n", nama);
              System.out.printf("Usia saya sekarang %d tahun.\n", usia);
              System.out.printf("Saat ini saya sedang belajar di %s.\n", kampus);
              System.out.printf("Indeks prestasi saya semester lalu sebesar %.2f.\n", ipLalu);
              System.out.printf("Semester ini, target saya bisa meraih IP %.2f.\n", targetIp);
              System.out.printf("Artinya saya harus meningkatkan IP saya sebesar %.2f.\n", selisihIp);
              System.out.printf("Semoga saya bisa lulus dari %s tepat waktu %d tahun lagi.\n", kampus, tahunLulus);
              System.out.printf("Saat itu saya akan genap berusia %d tahun.\n", usia + tahunLulus);
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 3

<Tabs>
  <Tab title="Question">
    Keluarga

    <img src="https://mintcdn.com/mmn/k8klAwOwnQnHgWTN/images/pemrograman-1/uts/soal3.png?fit=max&auto=format&n=k8klAwOwnQnHgWTN&q=85&s=37f6c0c88ae006fd90f17201093c87fa" alt="Family" width="502" height="282" data-path="images/pemrograman-1/uts/soal3.png" />

    *Sebuah keluarga memiliki 3 orang anak yang usia ketiganya membentuk barisan geometri.
    Diketahui usia dari anak termuda dan anak kedua, berapa usia anak tertua?*

    Buatlah sebuah program yang meminta input berupa usia anak termuda dan anak kedua dari keluarga tersebut.

    Program selanjutnya menghitung dan menampilkan usia anak tertua.

    Simpan program dalam sebuah file dengan nama **Keluarga023.java** (nama class = **Keluarga023**)
  </Tab>

  <Tab title="Answer">
    ```java Keluarga023.java theme={null}
      import java.util.Scanner;
      public class Keluarga023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              System.out.print("Masukkan usia anak termuda: ");
              int usiaAnakTermuda = input.nextInt();

              System.out.print("Masukkan usia anak kedua: ");
              int usiaAnakKedua = input.nextInt();

              int rasio = usiaAnakKedua / usiaAnakTermuda;
              int usiaAnakTertua = usiaAnakKedua * rasio;

              System.out.printf("Usia anak tertua adalah %d tahun.\n", usiaAnakTertua);
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 4

<Tabs>
  <Tab title="Question">
    Kuliah

    <img src="https://mintcdn.com/mmn/k8klAwOwnQnHgWTN/images/pemrograman-1/uts/soal4.png?fit=max&auto=format&n=k8klAwOwnQnHgWTN&q=85&s=91d7b566360f790f049931c8465a8d75" alt="Family" width="634" height="586" data-path="images/pemrograman-1/uts/soal4.png" />

    Pada suatu hari, Budi akan berangkat ke kampus untuk kuliah.

    Jarak rumah Budi ke kampus adalah $d$ km.

    Budi berangkat dari rumah pukul $pp : qq$.

    Kuliah Budi akan dimulai pukul $cc : yy$.

    Buatlah program untuk membantu Budi menentukan kecepatan rata-rata minimalnya agar sampai ke kampus tepat waktu untuk kuliah.

    Program menerima 5 input, yaitu jarak rumah Budi ke kampus, jam dan menit Budi berangkat, serta jam dan menit kuliah Budi dimulai.

    Output program adalah kecepatan rata-rata minimal perjalanan Budi agar Budi tidak terlambat kuliah.

    Simpan program dalam sebuah file dengan nama **Kuliah023.java** (nama class = **Kuliah023**)
  </Tab>

  <Tab title="Answer">
    ```java Kuliah023.java theme={null}
      import java.util.Scanner;
      public class Kuliah023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              System.out.print("Masukkan jarak rumah ke kampus (km): ");
              double jarak = input.nextDouble();

              System.out.print("\nMasukkan jam berangkat (0-23): ");
              int jamBerangkat = input.nextInt();
              System.out.print("Masukkan menit berangkat (0-59): ");
              int menitBerangkat = input.nextInt();

              System.out.print("\nMasukkan jam kuliah dimulai (0-23): ");
              int jamKuliah = input.nextInt();
              System.out.print("Masukkan menit kuliah dimulai (0-59): ");
              int menitKuliah = input.nextInt();

              int waktuBerangkat = jamBerangkat * 60 + menitBerangkat;
              int waktuKuliah = jamKuliah * 60 + menitKuliah;
              int waktuTempuh = waktuKuliah - waktuBerangkat;

              double kecepatan = jarak / (waktuTempuh / 60.0);
              System.out.printf("Kecepatan rata-rata minimal yang harus dicapai adalah %.2f km/jam.", kecepatan);
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 5

<Tabs>
  <Tab title="Question">
    Zona Waktu

    <img src="https://mintcdn.com/mmn/k8klAwOwnQnHgWTN/images/pemrograman-1/uts/soal5.png?fit=max&auto=format&n=k8klAwOwnQnHgWTN&q=85&s=689dff8fb5d5f19fc58c09658a607b2d" alt="Family" width="2395" height="924" data-path="images/pemrograman-1/uts/soal5.png" />

    Zona Waktu Indonesia Tengah (WITA) satu jam lebih cepat daripada Waktu Indonesia Barat (WIB) dan 1 jam lebih lambat dari Waktu Indonesia Timur (WIT).

    Jadi jika di Bali yang berada pada zona WITA saat ini menunjukkan pukul 20:15, maka di Gresik yang termasuk zona WIB akan menunjukkan pukul 19:15 dan di Jayapura sudah pukul 21:15 WIT.

    Buatlah program yang menerima input berupa waktu di zona WITA (jam dan menit) kemudian menampilkan waktu di zona WIB dan WIT.

    Simpan program dalam sebuah file dengan nama **ZonaWaktu023.java** (nama class = **ZonaWaktu023**)

    **Contoh Input dan Output Sebagai Berikut**

    | Jarak Rumah-Kampus | Waktu Berangkat | Waktu Kuliah | Kecepatan Minimal (km/jam) |
    | ------------------ | --------------- | ------------ | -------------------------- |
    | 1                  | 7:30            | 8:00         | 2                          |
    | 1                  | 7:45            | 8:00         | 4                          |
    | 1                  | 7:50            | 8:00         | 6                          |
    | 5                  | 7:30            | 8:00         | 10                         |
    | 5                  | 7:45            | 8:00         | 20                         |
    | 5                  | 7:50            | 8:00         | 30                         |
    | 12                 | 7:30            | 8:00         | 24                         |
    | 12                 | 7:45            | 8:00         | 48                         |
    | 12                 | 7:50            | 8:00         | 72                         |
  </Tab>

  <Tab title="Answer">
    ```java ZonaWaktu023.java theme={null}
      import java.util.Scanner;
      public class ZonaWaktu023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              System.out.print("Masukkan jam di zona WITA (1-23): ");
              int jamWITA = input.nextInt();
              System.out.print("Masukkan menit di zona WITA (0-59): ");
              int menitWITA = input.nextInt();

              int jamWIB = 0;
              if (jamWITA == 1) {
                  jamWIB = 23;
              } else {
                  jamWIB = jamWITA - 1;
              }

              int jamWIT = 0;
              if (jamWITA == 23) {
                  jamWIT = 1;
              } else {
                  jamWIT = jamWITA + 1;
              }

              System.out.printf("Waktu di zona WIB adalah %02d:%02d\n", jamWIB, menitWITA);
              System.out.printf("Waktu di zona WIT adalah %02d:%02d\n", jamWIT, menitWITA);
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 6

<Tabs>
  <Tab title="Question">
    2 Juli

    2 Juli adalah hari yang spesial.

    Buatlah program yang menerima input berupa digit bulan dan tanggal, kemudian menampilkan output apakah input tersebut sebelum 2 Juli, setelah 2 Juli, atau hari yang spesial ( 2 Juli).

    Simpan program dalam sebuah file dengan nama **TanggalSpesia1023.java** (nama class = **TanggalSpesia1023**)
  </Tab>

  <Tab title="Answer">
    ```java TanggalSpesia1023.java theme={null}
      import java.util.Scanner;
      public class TanggalSpesia1023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              System.out.print("Masukkan digit bulan (1-12): ");
              int bulan = input.nextInt();

              System.out.print("Masukkan digit tanggal (1-31): ");
              int tanggal = input.nextInt();

              if (bulan < 7 || (bulan == 7 && tanggal < 2)) {
                  System.out.println("Sebelum 2 Juli");
              } else if (bulan > 7 || (bulan == 7 && tanggal > 2)) {
                  System.out.println("Setelah 2 Juli");
              } else {
                  System.out.println("Hari yang spesial");
              }
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 7

<Tabs>
  <Tab title="Question">
    Sepak Bola

    <img src="https://mintcdn.com/mmn/k8klAwOwnQnHgWTN/images/pemrograman-1/uts/soal7.png?fit=max&auto=format&n=k8klAwOwnQnHgWTN&q=85&s=d24c28e5c26eb1dc069c1276223c42fc" alt="Soal 7" width="717" height="509" data-path="images/pemrograman-1/uts/soal7.png" />

    Pada sebuah liga sepak bola, sebuah tim mendapat 3 poin Saat menang, 1 poin Saat pertandingan berakhir imbang (Seri), dan O poin Saat kalah.

    Pada tahun 2099, Liga Sepak Bola UIS' diikuti oleh 4 tim, yaitu **Arsenal, Barcelona, Chelsea**, dan **Dortmund**.

    Buatlah sebuah program yang meminta pengguna untuk memasukkan berapa kali masing-masing tim tersebut menang, Seri, dan kalah, menghitung dan menampilkan total poin masing-masing tim, dan menampilkan pemenang dari Liga UISI 2099.

    Simpan program dalam sebuah file dengan nama **Klasemen023.java** (nama class = **Klasemen023**)
  </Tab>

  <Tab title="Answer">
    ```java Klasemen023.java theme={null}
      import java.util.Scanner;
      public class Klasemen023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              System.out.println("Masukkan jumlah kemenangan, seri, dan kekalahan untuk setiap tim.");
              
              System.out.print("Arsenal\nKemenangan: ");
              int arsenalWin = input.nextInt();
              System.out.print("Seri: ");
              int arsenalDraw = input.nextInt();
              System.out.print("Kekalahan: ");
              int arsenalLose = input.nextInt();

              System.out.print("\nBarcelona\nKemenangan: ");
              int barcelonaWin = input.nextInt();
              System.out.print("Seri: ");
              int barcelonaDraw = input.nextInt();
              System.out.print("Kekalahan: ");
              int barcelonaLose = input.nextInt();

              System.out.print("\nChelsea\nKemenangan: ");
              int chelseaWin = input.nextInt();
              System.out.print("Seri: ");
              int chelseaDraw = input.nextInt();
              System.out.print("Kekalahan: ");
              int chelseaLose = input.nextInt();

              System.out.print("\nDortmund\nKemenangan: ");
              int dortmundWin = input.nextInt();
              System.out.print("Seri: ");
              int dortmundDraw = input.nextInt();
              System.out.print("Kekalahan: ");
              int dortmundLose = input.nextInt();

              int arsenalPoint = arsenalWin * 3 + arsenalDraw;
              int barcelonaPoint = barcelonaWin * 3 + barcelonaDraw;
              int chelseaPoint = chelseaWin * 3 + chelseaDraw;
              int dortmundPoint = dortmundWin * 3 + dortmundDraw;

              System.out.printf("\nArsenal: %d poin\n", arsenalPoint);
              System.out.printf("Barcelona: %d poin\n", barcelonaPoint);
              System.out.printf("Chelsea: %d poin\n", chelseaPoint);
              System.out.printf("Dortmund: %d poin\n", dortmundPoint);

              if (arsenalPoint > barcelonaPoint && arsenalPoint > chelseaPoint && arsenalPoint > dortmundPoint) {
                  System.out.println("\nJuara: Arsenal");
              } else if (barcelonaPoint > chelseaPoint && barcelonaPoint > dortmundPoint) {
                  System.out.println("\nJuara: Barcelona");
              } else if (chelseaPoint > dortmundPoint) {
                  System.out.println("\nJuara: Chelsea");
              } else {
                  System.out.println("\nJuara: Dortmund");
              }
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 8

<Tabs>
  <Tab title="Question">
    nuhanuhanuha...

    Buatlah sebuah program menggunakan `loop` (perulangan) yang meminta pengguna untuk menampilkan $n$ karakter pertama dari String `nuhanuhanuha...` (kata `nuha` yang berulang terus menerus).

    **Contoh Input-Output**

    | Input (Banyak karakter) | Output                               |
    | ----------------------- | ------------------------------------ |
    | 1                       | n                                    |
    | 3                       | nuh                                  |
    | 10                      | nuhanuhanu                           |
    | 20                      | nuhanuhanuhanuhanuha                 |
    | 37                      | nuhanuhanuhanuhanuhanuhanuhanuhanuha |

    Simpan program dalam sebuah file dengan nama **Nuha023.java** (nama class = **Nuha023**)
  </Tab>

  <Tab title="Answer">
    ```java Nuha023.java theme={null}
      import java.util.Scanner;
      public class Nuha023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              System.out.print("Masukkan banyak karakter: ");
              int n = input.nextInt();

              String nuha = "nuha";
              for (int i = 0; i < n; i++) {
                  System.out.print(nuha.charAt(i % 4));
              }
              System.out.println();
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 9

<Tabs>
  <Tab title="Question">
    Voting

    <img src="https://mintcdn.com/mmn/k8klAwOwnQnHgWTN/images/pemrograman-1/uts/soal9.jpg?fit=max&auto=format&n=k8klAwOwnQnHgWTN&q=85&s=f94850f18478c51fa2dc2f3725b58bae" alt="Soal 9" width="710" height="320" data-path="images/pemrograman-1/uts/soal9.jpg" />

    Sebuah kelas terdiri atas $n$ orang siswa akan mengadakan voting untuk memilih ketua kelas.

    Ada 2 orang calon ketua kelas: Ani dan Budi.

    Masing-masing siswa (termasuk Ani dan Budi) menuliskan calon yang dipilihnya untuk menjadi ketua kelas.

    Untuk membantu proses pemilihan ketua kelas tersebut, buatlah sebuah program yang meminta pengguna untuk memasukkan banyak siswa di kelas tersebut ($n$).

    Program kemudian meminta masing-masing siswa (total sebanyak $n$ kali) untuk memasukkan calon pilihannya (Ani/Budi).

    Selanjutnya, program menghitung perolehan suara Ani dan Budi dan menampilkan pemenangnya.

    Simpan program dalam sebuah file dengan nama **Voting023.java** (nama class = **Voting023**)
  </Tab>

  <Tab title="Answer">
    ```java Voting023.java theme={null}
      import java.util.Scanner;
      public class Voting023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              String pemenang = "";
              System.out.print("Masukkan banyak siswa: ");
              int n = input.nextInt();

              int ani = 0, budi = 0;
              for (int i = 0; i < n; i++) {
                  System.out.print("Siswa ke-" + (i + 1) + " memilih: ");
                  String pilihan = input.next();

                  if (pilihan.equalsIgnoreCase("ani")) {
                      ani++;
                  } else if (pilihan.equalsIgnoreCase("budi")) {
                      budi++;
                  }
              }

              if (ani > budi) {
                  pemenang = "Ani";
              } else if (budi > ani) {
                  pemenang = "Budi";
              } else {
                  pemenang = "Tidak Ada (Seri)";
              }

              System.out.printf("\nAni = %d", ani);
              System.out.printf("\nBudi = %d", budi);
              System.out.printf("\nPemenang = %s", pemenang);
          }
      }
    ```
  </Tab>
</Tabs>

# Soal 10

<Tabs>
  <Tab title="Question">
    Descending

    <img src="https://mintcdn.com/mmn/k8klAwOwnQnHgWTN/images/pemrograman-1/uts/soal10.jpg?fit=max&auto=format&n=k8klAwOwnQnHgWTN&q=85&s=109ed170131c597a9989f992ec0b7443" alt="Soal 10" width="481" height="513" data-path="images/pemrograman-1/uts/soal10.jpg" />

    Buatlah sebuah program yang meminta pengguna memasukkan 3 bilangan bułat berbeda.

    Program harus memastikan 3 bilangan yang dimasukkan pengguna berbeda satu sama lain.
    Jika ada input yang sama, program meminta pengguna untuk kembali memasukkan bilangan bułat tersebut hingga tidak ada input yang sama.

    Selanjutnya, program mengurutkan ketiga bilangan tersebut dari yang terbesar hingga terkecil dan menampilkan hasilnya

    Simpan program dalam sebuah file dengan nama **Urut023.java** (nama class = **Urut023**)
  </Tab>

  <Tab title="Answer">
    ```java Urut023.java theme={null}
      import java.util.Scanner;
      public class Urut023 {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              
              int a, b, c;
              System.out.print("Masukkan bilangan pertama: ");
              a = input.nextInt();

              System.out.print("Masukkan bilangan kedua: ");
              b = input.nextInt();

              while (b == a) {
                  System.out.println("Bilangan kedua harus berbeda dengan bilangan pertama.");
                  System.out.print("Masukkan bilangan kedua: ");
                  b = input.nextInt();
              }

              System.out.print("Masukkan bilangan ketiga: ");
              c = input.nextInt();

              while (c == a || c == b) {
                  System.out.println("Bilangan ketiga harus berbeda dengan bilangan pertama dan kedua.");
                  System.out.print("Masukkan bilangan ketiga: ");
                  c = input.nextInt();
              }

              int max = Math.max(a, Math.max(b, c));
              int min = Math.min(a, Math.min(b, c));
              int mid = a + b + c - max - min;

              System.out.printf("\nUrutan bilangan dari yang terbesar hingga terkecil: %d %d %d", max, mid, min);
          }
      }
    ```
  </Tab>
</Tabs>
