# 📊 Flowchart + Koding Program

Algoritma & Pemrograman · KKA Kelas 10 Kurikulum Merdeka · Fase E Bahasa Python
1. Program Kalkulator Cerdas Full Version

Program lengkap dengan fungsi modular, validasi input, loop menu, dan dokumentasi.

# ============================================================ # PROGRAM KALKULATOR CERDAS # ============================================================ def tampilkan_menu(): print("\n" + "=" * 40) print(" KALKULATOR CERDAS v1.0") print("=" * 40) print("1. Luas Persegi Panjang") print("2. Konversi Suhu (°C → °F)") print("3. Jumlah Deret 1+2+...+N") print("4. Cek Bilangan Prima") print("5. Faktorial (N!)") print("6. Keluar") print("=" * 40) def luas_persegi_panjang(): print("\n--- Luas Persegi Panjang ---") try: p = float(input("Panjang: ")) l = float(input("Lebar: ")) print(f"Luas = {p} × {l} = {p*l:.2f}") except ValueError: print("❌ Input harus angka!") def konversi_suhu(): print("\n--- Konversi Suhu ---") try: c = float(input("Celsius: ")) print(f"{c}°C = {(c*9/5)+32:.2f}°F") except ValueError: print("❌ Input harus angka!") def jumlah_deret(): print("\n--- Jumlah Deret ---") try: n = int(input("N: ")) if n < 0: print("❌ N positif!"); return total = sum(range(1, n+1)) print(f"Jumlah 1+...+{n} = {total}") except ValueError: print("❌ Input harus bilangan bulat!") def cek_prima(): print("\n--- Cek Prima ---") try: n = int(input("Angka: ")) if n <= 1: print(f"{n} BUKAN prima"); return prima = all(n % i for i in range(2, int(n**0.5)+1)) print(f"✅ {n} PRIMA" if prima else f"❌ {n} BUKAN prima") except ValueError: print("❌ Input harus bilangan bulat!") def faktorial(): print("\n--- Faktorial ---") try: n = int(input("N: ")) if n < 0: print("❌ N >= 0!"); return hasil = 1 for i in range(1, n+1): hasil *= i print(f"{n}! = {hasil}") except ValueError: print("❌ Input harus bilangan bulat!") def main(): print("="*40); print(" KALKULATOR CERDAS 🧮"); print("="*40) while True: tampilkan_menu() pilihan = input("\nPilih (1-6): ") if pilihan == '1': luas_persegi_panjang() elif pilihan == '2': konversi_suhu() elif pilihan == '3': jumlah_deret() elif pilihan == '4': cek_prima() elif pilihan == '5': faktorial() elif pilihan == '6': print("\n👋 Sampai jumpa!"); break else: print("❌ Pilihan tidak valid!") if __name__ == "__main__": main()
2. 10 Program + Flowchart + Koding Lengkap

#### 1 Luas Persegi Panjang

MULAI │ ▼ INPUT p, l │ ▼ Luas = p × l │ ▼ OUTPUT Luas │ ▼ SELESAI
def luas_persegi(p, l): return p * l p = float(input("Panjang: ")) l = float(input("Lebar: ")) print(f"Luas = {luas_persegi(p, l):.2f}")
📤 Output: Panjang: 5, Lebar: 3 → Luas = 15.00

#### 2 Genap / Ganjil

MULAI │ ▼ INPUT n │ ▼ ┌─────────────┐ │ n % 2 == 0? │──Ya──▶ GENAP └──────┬──────┘ │Tidak ▼ GANJIL │ ▼ SELESAI
def cek_genap(n): return "GENAP" if n % 2 == 0 else "GANJIL" n = int(input("Angka: ")) print(f"{n} = {cek_genap(n)}")
📤 Output: Angka: 7 → 7 = GANJIL

#### 3 Maksimum 3 Angka

MULAI │ ▼ INPUT a, b, c │ ▼ ┌─────────────┐ │ a > b ? │──Ya──▶ ┌─────────────┐ └──────┬──────┘ │ a > c ? │ │Tidak └──────┬──────┘ ▼ │Ya ┌─────────────┐ ▼ │ b > c ? │──Ya──▶ max = b └──────┬──────┘ │Tidak ▼ max = c │ ▼ OUTPUT max │ ▼ SELESAI
def maks_3(a, b, c): return max(a, b, c) a, b, c = map(float, input("3 angka: ").split()) print(f"Maks = {maks_3(a,b,c)}")
📤 Output: 12 8 15 → Maks = 15.0

#### 4 Jumlah Deret (While)

MULAI │ ▼ INPUT N │ ▼ total = 0, i = 1 │ ▼ ┌─────────────┐ │ i <= N ? │──Tidak──▶ OUTPUT total └──────┬──────┘ │ │Ya ▼ ▼ SELESAI total = total + i │ ▼ i = i + 1 │ └──────┐ ▼ (kembali loop)
def jumlah_deret(n): total, i = 0, 1 while i <= n: total += i i += 1 return total n = int(input("N: ")) print(f"Jumlah = {jumlah_deret(n)}")
📤 Output: N: 10 → Jumlah = 55

#### 5 Faktorial (Rekursi)

MULAI │ ▼ INPUT N │ ▼ ┌─────────────┐ │ N <= 1 ? │──Ya──▶ return 1 └──────┬──────┘ │ │Tidak │ ▼ │ return N × faktorial(N-1) │ │ │ └──────────────────────┘ │ ▼ SELESAI
def faktorial(n): if n <= 1: return 1 return n * faktorial(n-1) n = int(input("N: ")) print(f"{n}! = {faktorial(n)}")
📤 Output: N: 5 → 5! = 120

#### 6 Cek Bilangan Prima

MULAI │ ▼ INPUT n │ ▼ ┌─────────────┐ │ n <= 1 ? │──Ya──▶ BUKAN PRIMA └──────┬──────┘ │ │Tidak │ ▼ │ prima = True, i = 2 │ │ │ ▼ │ ┌─────────────┐ │ │ i*i <= n ? │──Tidak─────┐│ └──────┬──────┘ ││ │Ya ││ ▼ ││ ┌─────────────┐ ││ │ n % i == 0 ?│──Ya──▶ prima=False └──────┬──────┘ ││ │Tidak ││ ▼ ││ i = i + 1 ││ │ ││ └────────────────────┘│ ▼ OUTPUT prima │ ▼ SELESAI
def is_prima(n): if n <= 1: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True n = int(input("Angka: ")) print(f"PRIMA" if is_prima(n) else "BUKAN PRIMA")
📤 Output: Angka: 17 → PRIMA

#### 7 Konversi Suhu

MULAI │ ▼ INPUT Celsius │ ▼ F = (C × 9/5) + 32 │ ▼ OUTPUT Fahrenheit │ ▼ SELESAI
def c_to_f(c): return (c * 9/5) + 32 c = float(input("Celsius: ")) print(f"{c}°C = {c_to_f(c):.1f}°F")
📤 Output: Celsius: 25 → 25°C = 77.0°F

#### 8 Membalik String

MULAI │ ▼ INPUT teks │ ▼ hasil = "", i = len-1 │ ▼ ┌─────────────┐ │ i >= 0 ? │──Tidak──▶ OUTPUT hasil └──────┬──────┘ │ │Ya ▼ ▼ SELESAI hasil = hasil + teks[i] │ ▼ i = i - 1 │ └──────┐ ▼ (kembali loop)
def balik(s): hasil = "" for i in range(len(s)-1, -1, -1): hasil += s[i] return hasil s = input("Teks: ") print(f"Terbalik: {balik(s)}") # Cara simple: s[::-1]
📤 Output: Teks: INFORMATIKA → Terbalik: AKITAMROFNI

#### 9 Rata-rata Nilai

MULAI │ ▼ INPUT n │ ▼ total = 0, i = 1 │ ▼ ┌─────────────┐ │ i <= n ? │──Tidak──▶ rata = total/n └──────┬──────┘ │ │Ya ▼ ▼ OUTPUT rata INPUT angka │ │ ▼ ▼ SELESAI total = total + angka │ ▼ i = i + 1 │ └──────┐ ▼ (kembali loop)
def rata_rata(data): return sum(data)/len(data) if data else 0 n = int(input("Jumlah data: ")) data = [float(input(f"Data ke-{i+1}: ")) for i in range(n)] print(f"Rata-rata = {rata_rata(data):.2f}")
📤 Output: 80, 90, 75, 85 → Rata-rata = 82.50

#### 10 Deret Fibonacci

MULAI │ ▼ INPUT n │ ▼ a=0, b=1, i=0 │ ▼ ┌─────────────┐ │ i < n ? │──Tidak──▶ OUTPUT deret └──────┬──────┘ │ │Ya ▼ ▼ SELESAI deret.append(a) │ ▼ a, b = b, a+b │ ▼ i = i + 1 │ └──────┐ ▼ (kembali loop)
def fibonacci(n): deret, a, b = [], 0, 1 for _ in range(n): deret.append(a) a, b = b, a+b return deret n = int(input("Jumlah: ")) print(f"Fibonacci: {fibonacci(n)}")
📤 Output: Jumlah: 10 → [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Ringkasan Poin Penting

#### 1. Flowchart

Representasi visual algoritma. Simbol: Terminal, Proses, Decision, I/O.

#### 2. Struktur Kontrol

Percabangan (If-Else) dan Perulangan (For/While) untuk alur program.

#### 3. Fungsi

Modularitas kode dengan `def`. Mudah dipelihara dan digunakan ulang.

Kode disalin!