Penjelasan alurnya
Aturan tahun kabisat ada tiga lapis: habis dibagi 400 pasti kabisat, kelipatan 100 lainnya bukan kabisat, dan sisanya kabisat bila habis dibagi 4. Flowchart ini memeriksa ketiganya berurutan.
Urutannya tidak boleh ditukar. Tahun 2000 habis dibagi 100 sekaligus 400. Kalau kelipatan 100 diperiksa lebih dulu, tahun 2000 salah dianggap bukan kabisat, padahal tahun itu kabisat.
Uji flowchart dengan empat tahun yang mewakili setiap cabang: 2000 (kabisat), 1900 (bukan), 2024 (kabisat), dan 2023 (bukan).
Pseudocode
1ALGORITMA Tahun kabisat23DEKLARASI4 tahun : integer56MULAI7 BACA tahun8 JIKA tahun mod 400 = 0 MAKA9 TAMPILKAN "Tahun kabisat"10 SELAIN ITU11 JIKA tahun mod 100 = 0 MAKA12 TAMPILKAN "Bukan tahun kabisat"13 SELAIN ITU14 JIKA tahun mod 4 = 0 MAKA15 TAMPILKAN "Tahun kabisat"16 SELAIN ITU17 TAMPILKAN "Bukan tahun kabisat"18 AKHIR JIKA19 AKHIR JIKA20 AKHIR JIKA21SELESAIKode programnya
Kode di bawah dibuat langsung dari flowchart di atas, jadi alurnya sama persis. Coba jalankan dengan masukan 2024.
1# Tahun kabisat23tahun = int(input("Masukkan tahun: "))4if tahun % 400 == 0:5 print("Tahun kabisat")6elif tahun % 100 == 0:7 print("Bukan tahun kabisat")8elif tahun % 4 == 0:9 print("Tahun kabisat")10else:11 print("Bukan tahun kabisat")1// Tahun kabisat23let tahun;45tahun = Number(prompt("Masukkan tahun:"));6if (tahun % 400 === 0) {7 console.log("Tahun kabisat");8} else if (tahun % 100 === 0) {9 console.log("Bukan tahun kabisat");10} else if (tahun % 4 === 0) {11 console.log("Tahun kabisat");12} else {13 console.log("Bukan tahun kabisat");14}1<?php23// Tahun kabisat45$tahun = (int) readline("Masukkan tahun: ");6if ($tahun % 400 == 0) {7 echo "Tahun kabisat" . PHP_EOL;8} else if ($tahun % 100 == 0) {9 echo "Bukan tahun kabisat" . PHP_EOL;10} else if ($tahun % 4 == 0) {11 echo "Tahun kabisat" . PHP_EOL;12} else {13 echo "Bukan tahun kabisat" . PHP_EOL;14}1// Tahun kabisat2#include <stdio.h>34int main(void) {5 int tahun = 0;67 printf("Masukkan tahun: ");8 scanf("%d", &tahun);9 if (tahun % 400 == 0) {10 printf("Tahun kabisat\n");11 } else if (tahun % 100 == 0) {12 printf("Bukan tahun kabisat\n");13 } else if (tahun % 4 == 0) {14 printf("Tahun kabisat\n");15 } else {16 printf("Bukan tahun kabisat\n");17 }1819 return 0;20}1// Tahun kabisat2import java.util.Scanner;34public class Program {5 public static void main(String[] args) {6 Scanner input = new Scanner(System.in);7 int tahun = 0;89 System.out.print("Masukkan tahun: ");10 tahun = Integer.parseInt(input.nextLine().trim());11 if (tahun % 400 == 0) {12 System.out.println("Tahun kabisat");13 } else if (tahun % 100 == 0) {14 System.out.println("Bukan tahun kabisat");15 } else if (tahun % 4 == 0) {16 System.out.println("Tahun kabisat");17 } else {18 System.out.println("Bukan tahun kabisat");19 }20 }21}Jalankan kodenya tanpa instalasi di compiler Python online atau compiler bahasa lain di Playground.
Coba ubah sendiri
- Tampilkan banyak hari di bulan Februari pada tahun itu.
- Gabungkan ketiga kondisi menjadi satu kondisi dengan dan serta atau.
- Hitung banyak tahun kabisat antara dua tahun dengan perulangan.